Estimada comunidad,
Descubrimos que JMP calcula los percentiles de manera diferente a otros programas, ¿cómo puedo obtener el mismo valor en JMP?
Otros programas son por ejemplo Oracle SQL y Excel (PERCENTILE.INC)
Vea algunas referencias y ejemplos en el script a continuación.
Gracias y BR
names default to here(1);
// JMP calculates other Quantiles than Python/Excel
// how to get same values in JMP?
// see:
// web("https://community.jmp.com/t5/Discussions/Quantiles-result-from-JMP-are-different-from-Python/m-p/762983");
// perhaps JMP equal to PERCENTILE.EXC in Excel, and not to PERCENTILE.INC
// Percentile Calculation
// web("https://community.jmp.com/t5/Discussions/Quantile-Percentile-Calculation/m-p/327198");
data = [10.56 10.85 11.08 11.57 11.81 12.27 12.76];
Q80_oracle = 12.178;
// as excel as well
Q80_jmp = Quantile( 0.8, data );
// 12.466
// how can I get same values as in other programs?Hola,
Acabo de probar su conjunto de datos en Excel y obtuve un valor Q80 en Excel = 12.466, exactamente lo mismo que JMP.
No puedo realizar pruebas en Oracle, pero observé que en R obtengo un valor de Q80 = 12,178. Además, el valor de Q90 en R es 12,466.
Debe haber una explicación sobre cómo se calculan los cuantiles entre estos programas.
Mejor,
TS
Una cosa más:
En R, hay 9 formas diferentes de calcular cuantiles.
El método 6 devuelve el mismo Q80 que JMP y Excel

El método 7 devuelve el Q80 que encontró en Oracle:

Mejor,
TS
Hola @Georg : Tengo curiosidad; ¿te importa si te pregunto por qué importa si coinciden o no?
Estimados,
Gracias por la información. La razón por la que la necesitamos es la expectativa del cliente, es decir, que el destinatario espera una forma específica de calcular.
Mientras tanto encontré una manera con una solución alternativa de Python, vea el script a continuación.
Gracias a todos y un cordial saludo,
New Table( "Percentile_Cont_Example",
Add Rows( 7 ),
Compress File When Saved( 1 ),
New Table Variable( "SQL",
"with val_tab as
(
select 1 AS lot, 11.08 as value FROM dual
union select 1 AS lot, 12.76 as value FROM dual
union select 1 AS lot,10.85 as value FROM dual
union select 1 AS lot, 11.57 as value FROM dual
union SELECT 1 AS lot, 10.56 as value FROM dual
union select 1 AS lot, 12.27 as value FROM dual
union select 1 AS lot,11.81 as value FROM dual
)
SELECT
val_tab.lot
, val_tab.value
, percentile_cont(0.8) WITHIN GROUP (ORDER BY val_tab.value) OVER (PARTITION BY val_tab.lot) quant80_database
from
val_tab"
),
New Column( "LOT",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 1] ),
Set Display Width( 60 )
),
New Column( "VALUE",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [10.56, 10.85, 11.08, 11.57, 11.81, 12.27, 12.76] ),
Set Display Width( 60 )
),
New Column( "QUANT80_DATABASE",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[12.178000000000001, 12.178000000000001, 12.178000000000001,
12.178000000000001, 12.178000000000001, 12.178000000000001,
12.178000000000001]
),
Set Display Width( 334 )
),
New Column( "Quantile80_JMP",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Quantile( :VALUE, 0.80000000000000004 ) ),
Set Display Width( 141 )
),
New Column( "Quantile80_Python",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
data = (As Column( :VALUE ) << get values)[
Loc( As Column( :LOT ) << get values, :LOT )];
Python Execute(
{data},
{result},
"import numpy as np
result = np.quantile(data, 0.8)
"
);
result;
),
Set Selected,
Set Display Width( 292 )
)
)¿Cómo instalo Numpy para JMP 18? Tengo una instalación independiente de Python 3.13.2. Instalé Numpy para esa versión, pero sigo recibiendo este error al intentar ejecutar el código anterior.
ModuleNotFoundError: Please install the Python package NumPy.
at row 7
El ejemplo de instalación de paquetes de Python del índice de scripts debería funcionar
Names Default To Here(1);
// install numpy and pandas packages
Python Install Packages("numpy pandas");
o puedes usar el lado Python de JMP y usar jpip
import jmp
import jmputils
# update to latest version of pip and setuptools then install numpy & pandas
jmputils.jpip('install --upgrade', 'pip setuptools')
jmputils.jpip('install', 'numpy pandas')
https://www.jmp.com/support/help/en/18.0/#page/jmp/install-a-python-package.shtml#
¿Lo intentaste?
Python Install Packages( "numpy" );
Gracias, funcionó. No conocía ese comando.
En Excel hay dos formas,
PERCENTIL.INC y PERCENTIL.EXC.
Mi problema fue que no pude obtener el mismo valor en JMP que el cliente con PERCENTILE.INC, por lo que fue necesaria una solución alternativa con Python.