機率分佈的峰值你好
我有一個最適合 Johnson Su 分佈的資料集,我想知道是否有一種方法可以估計該分佈的峰值值。 它只有一個峰值,與中位數或平均值有很大不同。 將此稱為“模式”可能是最好的解決方案,但我如何估計這一點?
回覆:機率分佈的峰值是否可以擴展配置文件選項以進行分組的資料分發? 對於N組,需要取得組中每個項目的分佈對應的眾數。 或者我應該每次都按組子集,然後使用探查器選項。 我使用了 col groupby 然後進行了擬合,但看起來它為整個數據集提供了單個值,而不是為每個組成員提供了單個值。
回覆:機率分佈的峰值您有一個使用可行的探查器的解決方案。 至於不適合您的腳本,本文重點介紹了對最大化和最小化函數所做的一些更改。 感謝 JMP 技術支援團隊向我指出這一點!
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
回覆:機率分佈的峰值勞拉的方法更簡潔! 而且更不易出錯。 如果您能找到方法,最好讓 JMP 為您完成工作。
回覆:機率分佈的峰值我喜歡 JMP 的原因之一是它經常為您提供多種解決問題的方法。之前關於查找資料的擬合 Johnson SU 密度眾數的所有建議都很棒,但這裡還有一個使用刻畫器的選項。
使用分佈將 Johnson Su 分佈擬合到資料後,您可以選擇保存密度公式來自適合約翰遜蘇菜單。這會將 Johnson Su 密度公式儲存到資料表中的欄位中。

接下來,您可以透過選擇開啟 Profiler圖片>>分析器。將你的密度公式轉換為Y,預測公式並按一下“確定”。接下來打開意願函數從預測刻畫器菜單。之後你選擇最大化意願來自預測刻畫器菜單。這將找到該數據的 Johnson Su 密度的眾數(最大值)。

回覆:機率分佈的峰值太感謝了! 
回覆:機率分佈的峰值我對本專欄的數據沒有任何問題。 這是一個新版本,借鑒了 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(安裝)。
回覆:機率分佈的峰值該優化在範例資料表中也不起作用。 另外,我使用了 Ian 的腳本,它完全獨立於我的資料。 所以,正如您所指出的那樣,安裝肯定有問題。 我現在應該重新安裝 JMP 嗎?
無論如何我都會附上資料列。
回覆:機率分佈的峰值我沒有發現 Ian 的腳本或我的腳本有任何問題,因此保留了資料表或 JMP 安裝。 我們先從資料表開始。 能分享一下嗎? 如果是這樣,請標識您使用的資料列。 實際上,我們只需要導致問題的資料列。 如果對您來說更好,您可以刪除其餘的內容。
謝謝!
回覆:機率分佈的峰值它不適用於您的腳本和我的資料集。 與伊恩的劇本相同,它說
「最佳化失敗:失敗:無法降低目標函數」。
所以我只是繼續使用比爾的解決方案,但我認為它只是解決我的問題的臨時方法。
回覆:機率分佈的峰值您是說我的解決方案腳本不適用於您發布的原始範例(就像它對我一樣),還是不適用於新的資料集? 如果是後一種情況,可以分享一下數據嗎?
你試過伊恩的劇本嗎?
回覆:機率分佈的峰值馬克的方法很巧妙。 這是直接使用該函數的替代方案:
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);
(“通過眼睛”似乎有效,但當然沒有測試)。
回覆:機率分佈的峰值感謝您的答覆。 但不知怎的,它對我不起作用。 它說
“優化失敗:失敗:超出最大迭代次數”
我正在使用 JMP 12,也許優化器的功能有限。
回覆:機率分佈的峰值只是補充一下。
Mark 的方法確實是獲得峰值的最佳方法,但要快速獲得估計值,您可以擬合曲線,然後使用「工具」功能表或功能表列上的 JMP 十字線工具。 按一下該工具,然後將十字準線符號放在您認為最能代表峰值的位置,然後會彈出一個值。 如果您使用 JMP 13,您將獲得帶有十字準線工具的放大鏡,可幫助您靠近。
華泰
回覆:機率分佈的峰值不幸的是,分發平台不提供分析功能的模式。 我進行了搜索,但也找不到約翰遜分佈眾數的公式。
另一種方法是使用 JMP 數值優化器來搜尋解。 我的方法是使用最大化()函數找到擬合分佈的最大密度(對應於峰值),然後使用最小化()函數來找出分位數,產生最接近最大值的機率。 以下是與您想要執行的操作相符的解決方案步驟。
- 我從範例資料目錄中開啟了注塑範例。
- 我在「收縮」資料欄上開啟了「分佈」平台。
- 我擬合 Johnson SU 分佈以獲得 Johnson SU 參數估計值。
- 我編寫了一個包含上述兩個步驟的腳本來尋找峰值位置。
這是擬合分佈:

.腳本是:
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 ) );
請注意,估計值被複製到函數呼叫中,該函數呼叫使用了兩次。
這是日誌中的結果:

不要對所有消息感到驚慌 - 它工作得很好! 您可以在底部看到結果。