親愛なるコミュニティの皆様、
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 です。
これらのプログラム間で分位数がどのように計算されるかについての説明が必要です。
最高、
TS
もう一つ:
R では、分位数を計算する方法が 9 つあります。
方法6はJMPやExcelと同じQ80を返します

方法 7 は、Oracle で見つかった Q80 を返します。

最高、
TS
こんにちは@ゲオルグ : 興味深いのですが、一致するかどうかがなぜ重要なのか尋ねても構いませんか?
親愛なるみんな、
ご意見ありがとうございます。必要な理由は「顧客の期待」、つまり、受信者が特定の計算方法を期待していることです。
その間に、私は Python の回避策を見つけました。以下のスクリプトを参照してください。
皆様に感謝申し上げます。
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では2つの方法があります。
PERCENTILE.INC および PERCENTILE.EXC.
私の問題は、PERCENTILE.INC を使用しても JMP で顧客と同じ値を取得できなかったため、Python による回避策が必要だったことです。