Desidera trovare il percentile di un numero all'interno di un set di dati. Quale percentuale di valori è al di sopra/al di sotto di un certo numero? Oltre a guardare un grafico CDF o Prob Dist, esiste un percorso esistente per ottenere questo numero o si tratta di un'attività JSL?
È possibile utilizzare la statistica Quantiles all'interno della piattaforma Tabulate (Analizza>Tabulate).
Puoi farlo con una formula o uno snippet JSL come preferisci, vedi screenshot e script di seguito.
La prima parte della formula genera la tabella per valori e percentili, la seconda ricerca il percentile per la riga corrente.

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 )];
)
);
Davide:
Grazie per la risposta. Conoscevo la statistica Quantile. Con questo sto specificando il quantile e JMP sta generando il valore che corrisponde a quel quantile. Voglio specificare il valore e generare il Quantile. La mia spiegazione iniziale era insufficiente.
Greg
Giorgio:
Grazie per il tuo contributo. Ho regolato il JSL in modo che corrisponda al nome della mia tabella e della colonna, ma suppongo che questo sia un calcolo molto intensivo per il processore. Sono passati più di 20 minuti e le ruote stanno ancora girando. Ho circa 240.000 righe di dati da gestire. Sembra che continuerò con il metodo Excel che ho impostato fino a quando non trovo il tempo per indagare su questo problema in modo più approfondito. Grazie ancora.
Greg
Ecco una funzione JMP che utilizza l'esatta metodologia utilizzata nella funzione Excel, PERCENTILERANK come descritto nella pagina della guida di MicroSoft Excel
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
Di seguito ho fornito la tabella di esempio dalla pagina della guida, insieme alla funzione JMP che ho creato
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);