Me gustaría encontrar el percentil de un número dentro de un conjunto de datos. ¿Qué porcentaje de valores están por encima/por debajo de un cierto número? Además de observar un gráfico CDF o Prob Dist, ¿hay una ruta existente para obtener este número o es una tarea de JSL?
Puede utilizar la estadística Cuantiles dentro de la plataforma Tabular (Analyze>Tabular).
Puede hacer esto mediante una fórmula o un fragmento de JSL como desee, vea la captura de pantalla y el script a continuación.
La primera parte de la fórmula genera la tabla de valores y percentiles, la segunda busca el percentil de la fila actual.

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:
Gracias por la respuesta. Estaba familiarizado con la estadística Quantile. Con esto estoy especificando el Cuantil y JMP está generando el valor que coincide con ese Cuantil. Quiero especificar el valor y generar el Cuantil. Mi explicación inicial fue insuficiente.
greg
Jorge:
Gracias por su aporte. Ajusté el JSL para que coincida con el nombre de mi tabla y columna, pero supongo que este es un cálculo que requiere un uso intensivo del procesador. Han pasado más de 20 minutos y las ruedas siguen girando. Tengo alrededor de 240K filas de datos con las que lidiar. Parece que me quedaré con el método de Excel que configuré hasta que pueda encontrar tiempo para investigar este problema con más profundidad. Gracias de nuevo.
greg
Aquí hay una función JMP que usa la metodología exacta utilizada en la función de Excel, PERCENTIRANK como se describe en la página de ayuda de MicroSoft Excel
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
A continuación, proporcioné la tabla de ejemplo de la página de ayuda, junto con la función JMP que creé.
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);