친애하는 커뮤니티 여러분,
JMP가 다른 프로그램과 다르게 백분위수를 계산한다는 걸 알았는데, JMP에서 어떻게 동일한 값을 얻을 수 있을까요?
다른 프로그램으로는 Oracle SQL 및 Excel(PERCENTILE.INC) 등이 있습니다.
아래 스크립트에서 몇 가지 참고 자료와 예를 확인하세요.
감사합니다. 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?안녕,
방금 Excel에서 귀하의 데이터 세트를 테스트한 결과, Excel에서 Q80 값은 12.466으로 JMP와 정확히 일치했습니다.
Oracle에서 테스트할 수 없지만 R에서 Q80 값 = 12.178을 얻는다는 것을 알았습니다. 게다가 R의 Q90은 12.466입니다.
이들 프로그램 간에 분위수가 어떻게 계산되는지에 대한 설명이 있어야 합니다.
최상의,
티에스
한 가지 더 말씀드리자면:
R에서는 분위수를 계산하는 9가지 방법이 있습니다.
방법 6은 JMP 및 Excel과 동일한 Q80을 반환합니다.

방법 7은 Oracle에서 찾은 Q80을 반환합니다.

최상의,
티에스
안녕하세요 @게오르그 : 궁금합니다. 일치 여부가 왜 중요한지 물어봐도 괜찮을까요?
여러분 모두에게,
의견을 주셔서 감사합니다. 우리에게 필요한 이유는 "고객 기대"입니다. 즉, 수신자는 특정 계산 방식을 기대합니다.
그 사이에 저는 파이썬으로 해결책을 찾았습니다. 아래 스크립트를 참조하세요.
모두에게 감사드리고 최선을 다하겠습니다.
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 )
)
)JMP 18에 numpy를 어떻게 설치하나요? 저는 python 3.13.2를 별도로 설치했습니다. 그 버전에 numpy를 설치했지만 위의 코드를 실행하려고 하면 여전히 이 오류가 발생합니다.
ModuleNotFoundError: Please install the Python package NumPy.
at row 7
스크립팅 인덱스의 Python 설치 패키지 예제가 작동해야 합니다.
Names Default To Here(1);
// install numpy and pandas packages
Python Install Packages("numpy pandas");
또는 JMP의 Python 측면을 사용하고 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#
시도해 보셨나요?
Python Install Packages( "numpy" );
고맙습니다. 잘 작동했습니다. 그 명령은 몰랐습니다.
Excel에는 두 가지 방법이 있습니다.
PERCENTILE.INC와 PERCENTILE.EXC.
제 문제는 JMP에서 PERCENTILE.INC를 사용해 고객과 동일한 값을 얻을 수 없다는 것이었습니다. 그래서 파이썬으로 해결책을 찾아야 했습니다.