Souhaite trouver le centile d'un nombre dans un ensemble de données. Quel pourcentage de valeurs est supérieur/inférieur à un certain nombre ? Autre que de regarder un graphique CDF ou Prob Dist, existe-t-il un chemin existant pour obtenir ce numéro ou s'agit-il d'une tâche JSL ?
Vous pouvez utiliser la statistique Quantiles dans la plateforme Tabuler (Analyze>Tabulate).
Vous pouvez le faire par une formule ou un extrait JSL comme vous le souhaitez, voir la capture d'écran et le script ci-dessous.
La première partie de la formule génère le tableau des valeurs et des centiles, la seconde recherche le centile de la ligne actuelle.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "PercentileRank",
Formula(
cdf_arr = CDF( :weight << get values );
cdf_arr[2][Loc( cdf_arr[1], :weight )];
)
);
David:
Merci pour votre réponse. Je connaissais la statistique Quantile. Avec cela, je spécifie le quantile et JMP génère la valeur qui correspond à ce quantile. Je veux spécifier la valeur et générer le Quantile. Mon explication initiale était insuffisante.
Greg
Georg :
Merci pour votre participation. J'ai ajusté le JSL pour qu'il corresponde au nom de ma table et de ma colonne, mais je suppose qu'il s'agit d'un calcul très gourmand en ressources processeur. Cela fait plus de 20 minutes et les roues tournent toujours. J'ai environ 240 000 lignes de données à traiter. Il semble que je vais m'en tenir à la méthode Excel que j'ai configurée jusqu'à ce que je puisse trouver le temps d'étudier ce problème plus en profondeur. Merci encore.
Greg
Voici une fonction JMP utilisant la méthodologie exacte utilisée dans la fonction Excel, PERCENTILERANK comme décrit dans la page d'aide de MicroSoft Excel
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
Ci-dessous, j'ai fourni l'exemple de tableau de la page d'aide, ainsi que la fonction JMP que j'ai créée
Names Default To Here( 1 );
New Table( "Excel Example",
Add Rows( 10 ),
New Column( "Data",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [13, 12, 11, 8, 4, 3, 2, 1, 1, 1] )
)
);
dt = Current Data Table();
percentRank = Function( {col, value},{default local},
mydt = Current Data Table();
theValue = .;
theRows = mydt << get rows where( As Column( mydt, col ) == value );
If( N Rows( theRows ) > 0,
gt = Col Number( If( As Column( mydt, col )[Row()] > value, Column( mydt, col )[Row()], . ) );
lt = Col Number(
If( As Column( mydt, col )[Row()] < value & Is Missing( As Column( mydt, col )[Row()] ) == 0,
As Column( mydt, col )[Row()],
.
)
);
theValue = lt / (lt + gt);
,
lower = upper = .;
lower = Col Max( If( As Column( mydt, col ) < value & Is Missing( As Column( mydt, col )[Row()] ) == 0, Column( mydt, col )[Row()], . ) );
upper = Col Min( If( As Column( mydt, col ) > value, Column( mydt, col )[Row()], . ) );
// get the percentileRank for upper and lower
upperPR = percentRank(col,upper);
lowerPR = percentRank(col,lower);
intervalPCT=(value-lower)/(upper-lower);
theValue = lowerPR+(intervalPCT*(upperPR-lowerPR));
);
Return( theValue );
);
x = percentRank( "data", 8 ); // a data point found in the data
show("found in table",x);
x = percentRank( "data", 5 ); // a data point not found in the data
show("Not found in table",x);