Obtenir des valeurs pour la demi-plage la plus courteExiste-t-il un moyen d'obtenir les valeurs réelles de la moitié la plus courte du diagramme en boîte aberrant ?
Re : Obtenir les valeurs de la demi-plage la plus courteSalut @vince_faller
une version plus large de cette question a été posée plus tard https://community.jmp.com/t5/Discussions/Finding-the-X-range-that-will-include-a-certain-portion-of-the-Y/td-p/225474/jump-to/ premier message non lu
ma solution est la suivante. quelqu'un pourrait-il vérifier s'il est robuste ? merci.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// this is just in case wewant to bring the data back to original row order later.
rowcol = New Column("Row", Numeric, "Continuous", Format("Best", 12), Formula(Row()));
dt << run formulas();
rowcol << suppress eval( true );
// now we start working
dt << Sort( By( :weight ), Order( Ascending ), replace table );
// here is where we define the share of included range (0.5)
difcol = New Column("dif", Numeric, "Continuous", Format("Best", 12), Formula(Abs(:weight - Lag(:weight, -(N Rows() * 0.5)))));
dt << run formulas();
difcol << suppress eval( true );
start = (dt<<GET rows="" where="">= start, row()<=end),1 ,0 ));</GET>Re : Obtenir les valeurs de la demi-plage la plus courteSalut Tonya,
N'importe quelle raison à laquelle vous pourriez penser, j'obtiendrais une valeur de
adjacents (0,0,0,0)
?
Ce n'est certainement pas 0-0 comme portée la plus courte. Désolé mais je ne peux pas publier les données réelles. Je vais voir si je suis autorisé à l'anonymiser.
*Modifier* Peu importe. Pour une raison quelconque, mes adjacents sont allés à Framebox(1) et tous les framebox(2) étaient des 0.
Re : Obtenir les valeurs de la demi-plage la plus courteSalut Tonya,
N'importe quelle raison à laquelle vous pourriez penser, j'obtiendrais une valeur de
adjacents (0,0,0,0)
?
Ce n'est certainement pas 0-0 comme portée la plus courte. Désolé mais je ne peux pas publier les données réelles. Je vais voir si je suis autorisé à l'anonymiser.
Re : Obtenir les valeurs de la demi-plage la plus courteMerci d'avoir partagé le < idée. Vraiment intelligent et nouveau pour moi.
Voici une tentative d'obtenir les limites par calcul brut. Lors de mes tests limités, il se compare bien aux chiffres du Journal. Il semble gérer les valeurs manquantes et les liens comme prévu (mais j'ai peut-être raté quelque chose).
// Function for calculating the lower and upper limits of
// Shortest Half Range of a numeric column.
shorth = Function({col}, {M, n, d, i = 0},
M = col << get values;
M = Sort Ascending(M[Loc Nonmissing(M)]);
n = N Row(M) / 2 + Mod(N Row(M), 2);
d = Loc Min(J(1, n, M[(i++) + n] - M[i]));
lo = M[d];
hi = M[d + n - 1];
);
// Test
dt = Open("$SAMPLE_DATA/Big Class.jmp");
shorth(Column(dt, "weight"));
Show(lo, hi);
Re : Obtenir les valeurs de la demi-plage la plus courteCe n'est pas vraiment une réponse, mais cela peut être utile dans certains cas. Si vous souhaitez simplement voir les demi-valeurs les plus courtes, vous pouvez enregistrer au format HTML interactif et survoler le support rouge.
Interactive HTML Box Plot Shortest Half ValuesInteractive HTML Box Plot Shortest Half ValuesDiagramme de boîte HTML interactif avec les demi-valeurs les plus courtes
Lors de la visualisation dans un navigateur mobile, appuyez simplement sur le support rouge.
Re : Obtenir les valeurs de la demi-plage la plus courteMerci d'avoir terminé mon script, Mark !Je n'ai jamais été le plus efficace avec les fonctions des personnages.
Re : Obtenir les valeurs de la demi-plage la plus courteLa solution de Tonya est intelligente et va droit au but. Le reste du scénario n'est finalement pas si mauvais. La variable jrn contient une représentation sous forme de chaîne de la plateforme Distriution (pas seulement le Box Plot aberrant). Utilisons donc les fonctions de chaîne pour déterminer les extrémités souhaitées du support rouge. On trouve l'argument avec Contains() et on extrait les bits avec une succession d'appels à Word() :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( Y( :weight ) );
rpt = dist << Report;
jrn = rpt[FrameBox(2)] << Get Journal;
pos = Contains( Upper Case( jrn ), "ADJACENTS" );
adj = Word( 2, Sub Str( jrn, pos ), "()" );
lo = Num( Word( 3, adj, "," ) );
hi = Num( Word( 4, adj, "," ) );
Re : Obtenir les valeurs de la demi-plage la plus courteOui, mais ce n'est pas particulièrement facile.Ces valeurs se présentent comme les deux derniers nombres dans la partie adjacente du journal.Vous devez d’abord obtenir le journal pour une boîte à moustaches.
dt=Open("$SAMPLE_DATA/Big Class.jmp");
obj=dt<<DISTRIBUTION></DISTRIBUTION>
Ensuite, vous devrez analyser jrn pour les adjacents.Peut-être que quelqu'un avec plus d'expérience JSL peut vous aider si vous ne savez pas déjà comment procéder.Je ne connais pas les tenants et les aboutissants de l'analyse.
Re : Obtenir les valeurs de la demi-plage la plus courteJe ne vois pas de toute façon comment récupérer de telles informations. J'ai essayé une méthode vraiment simple consistant à examiner les plages de 50 % des données, du plus bas au plus élevé, pour voir si cela correspondrait, mais cela a échoué. Ce serait une belle amélioration de pouvoir "<< obtenir des demi-valeurs plus courtes".
Je le transmettrais à support@jmp.com