確率分布のピークやあ
Johnson Su 分布に最もよく適合するデータセットがあり、この分布のピークの値を推定する方法があるかどうか疑問に思っていました。 ピークは 1 つだけで、中央値や平均値とはかなり異なります。 ここでは、この「モード」と呼ぶのが最善の解決策かもしれませんが、この点をどのように見積もればよいでしょうか?
Re: 確率分布のピークグループ化されたデータ配布用にプロファイル オプションを拡張できますか? N グループの場合、グループ内の各アイテムの分布に対応するモードを取得する必要があります。 または、毎回グループごとにサブセット化してから、プロファイラー オプションを使用する必要があります。 col groupby を使用してから適合させましたが、グループメンバーごとではなく、データセット全体に単一の値を与えているようです。
Re: 確率分布のピーク機能するプロファイラーを使用したソリューションがあります。 スクリプトが機能しない場合、この記事では、最大化機能と最小化機能に加えられた変更の一部を取り上げます。 私に指摘してくれたJMPテクニカルサポートチームに感謝します!
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
Re: 確率分布のピークローラの方法はよりきちんとしています! また、エラーが発生しにくくなります。 方法を見つけられる場合は、JMP に作業を任せることをお勧めします。
Re: 確率分布のピーク私が JMP で気に入っている点の 1 つは、多くの場合、問題を解決するためのさまざまな方法が提供されることです。データに当てはめられた Johnson SU 密度のモードを見つけるためのこれまでの提案はすべて優れていますが、Profiler を使用するもう 1 つのオプションがあります。
分布を使用して Johnson Su 分布をデータに当てはめたら、以下を選択できます。密度式を保存からフィットジョンソンスーメニュー。これにより、Johnson Su Density 式がデータ テーブルの列に保存されます。

次に、選択してプロファイラーを開くことができますグラフ>>プロファイラ.密度式を次のようにキャストしますY、予測式し、[OK] をクリックします。次に電源を入れる望ましさ関数から予測プロファイラーメニュー。後はあなたが選ぶ望ましさを最大化するから予測プロファイラーメニュー。これは、このデータの Johnson Su 密度のモード (最大) を見つけます。

Re: 確率分布のピークどうもありがとうございます! 
Re: 確率分布のピークこの列のデータに問題はありません。 これは、Ian のソリューションから借用して、パラメーター推定値を手動で入力する必要を回避する新しいバージョンです。
Names Default to Here( 1 );
dist = Current Data Table() << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :T10_100 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Fit Distribution( Johnson Su )
)
);
estimates = Report( dist )["Fitted Johnson Su"][NumberColBox(1)] << Get As Matrix;
dist expr = Substitute(
Expr(
Johnson Su Density(
q, // quantile
ggg, // gamma or first shape parameter
ddd, // delta or second shape parameter
ttt, // theta or location parameter
sss // sigma or scale parameter
)
),
Expr( ggg ), estimates[1],
Expr( ddd ), estimates[2],
Expr( ttt ), estimates[3],
Expr( sss ), estimates[4]
);
peak height = Maximize( dist expr, { q( 0.01, 70 ) } );
difference = Minimize( peak height - dist expr, { q( 0.01, 70 ) } );
Print( "The peak location is " || Char( q ) );
あなたのデータで次の結果が得られます。


つまり、データやスクリプトではなく、JMP (インストール) である必要があります。
Re: 確率分布のピーク最適化は、サンプル データ テーブルでも機能しません。 また、データから完全に独立した Ian のスクリプトを使用しました。 あなたが指摘したように、インストールに何か問題があるに違いありません。 今すぐJMPを再インストールする必要がありますか?
とにかくデータ列を添付しています。
Re: 確率分布のピークIan のスクリプトまたは私のスクリプトに問題があるとは思わないので、データ テーブルまたは JMP のインストールはそのままです。 まずはデータテーブルから。 共有できますか? その場合、使用したデータ列を特定してください。 実際には、問題の原因となっているデータ列だけが必要です。 必要に応じて、残りを削除できます。
ありがとう!
Re: 確率分布のピークあなたのスクリプトと私のデータセットではうまくいきませんでした。 イアンのスクリプトと同じです、それは言います
「最適化に失敗しました: 失敗しました: 目的関数を減らすことはできません」.
それで、ビルの解決策を進めましたが、それは私の問題の一時的な修正に過ぎないと考えています。
Re: 確率分布のピークあなたが投稿した元の例では私のソリューション スクリプトが機能しなかったということですか (私の場合のように)、それとも新しいデータ セットでは機能しなかったということですか? 後者の場合、データを共有していただけますか?
イアンのスクリプトを試しましたか?
Re: 確率分布のピークマークの方法はきちんとしています。 関数を直接使用する代替方法を次に示します。
NamesDefaultToHere(1);
ClearLog();
// Make some representative data
dt = NewTable("Johnson Su", NewColumn("Data", Numeric, Continuous, Formula(Random Johnson Su( 5, 2, 1, 1 ))));
dt << addRows(50);
// Fit the data
dist = dt << Distribution(Continuous Distribution( Column( :Data ), Fit Distribution( Johnson Su ) ));
// Get the fitted parameters
params = Report(dist)[NumberColBox(3)] << get;
gamma = params[1]; // Shape
delta = params[2]; // Shape
theta = params[3]; // Location
sigma = params[4]; // Scale
// http://www.mathwave.com/articles/johnson_su_distribution.html
// f(x) = delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 );
// where:
// z = (x - eta)/lambda;
// and:
// delta > 0 lambda > 0
jsu = Expr(delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 ) );
SubstituteInto(jsu, Expr(z), Expr((x - eta)/lambda));
// Use the fitted parameter values
// Note the change in parameter names! 'lambda' -> 'sigma' and 'eta' -> 'theta'
SubstituteInto(jsu,
Expr(gamma), Eval(gamma),
Expr(delta), Eval(delta),
Expr(eta), Eval(theta),
Expr(lambda), Eval(sigma)
);
// Get upper and lower bounds for the optimisation (either side of the (assumed) single peak)
vals = Column(dt, "Data") << getValues;
low = Quantile(0.25, vals);
high = Quantile(0.75, vals);
// Do the maximization
Maximize(jsu, {x(low, high)}, << Tolerance(10^-10), << showDetails(true));
Print(x);
(「目で見て」うまくいくようですが、もちろんテストはありません)。
Re: 確率分布のピーク返信ありがとうございます。 しかし、どういうわけか私にはうまくいきません。 それは言う
「最適化に失敗しました: 失敗しました: 最大反復回数を超えました」
JMP 12 を使用しています。オプティマイザの機能が制限されている可能性があります。
Re: 確率分布のピーク追加するだけです。
マークの方法は実際にはピーク値を取得する最良の方法ですが、見積もり値を取得する簡単な方法として、曲線を当てはめてから、[ツール] メニューまたはメニュー バーにある JMP クロスヘア ツールを使用できます。 ツールをクリックしてから、ピークを最もよく表していると思われる場所に十字記号を配置すると、値がポップアップ表示されます。 JMP 13 を使用している場合は、クロスヘア ツールを備えた拡大鏡が表示され、接近するのに役立ちます。
HTH
Re: 確率分布のピーク残念ながら、Distribution プラットフォームには分析機能のモードがありません。 ジョンソン分布の最頻値の式も検索しましたが見つかりませんでした。
もう 1 つのアプローチは、JMP 数値オプティマイザーを使用して解を検索することです。 私のアプローチは、最大化()関数を使用して、ピークに対応する近似分布の最大密度を見つけ、次に最小化()関数を使用して、最大値に最も近い確率を生成する分位点を見つけます。 これは、あなたがやろうとしていることと一致するステップの解決策です。
- サンプル データ ディレクトリから射出成形の例を開きました。
- 収縮データ列で分布プラットフォームを開きました。
- ジョンソン SU 分布をフィッティングして、ジョンソン SU パラメーター推定値を取得します。
- ピーク位置を見つけるために、上記の 2 つの手順でスクリプトを作成しました。
当てはめた分布は次のとおりです。

スクリプトは次のとおりです。
peak height = Maximize(
Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
difference = Minimize(
peak height - Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
Print( "The peak location is " || Char( q ) );
推定値が関数呼び出しにコピーされ、2 回使用されることに注意してください。
ログの結果は次のとおりです。

すべてのメッセージに驚かないでください。問題なく動作しました。 下部に結果が表示されます。