腳本編寫 - 如何選擇最佳擬合分佈並收集能力參數?我想建立一個執行以下操作的腳本:
1)取得一個資料集(一次1列)
2)對所有分佈進行連續擬合
3) 找到最合適的方案,應用規格限制並分析能力參數(特別是 CpK)
4) 將 CpK(可能還有其他內容)輸出到表中
我知道如何手動執行此操作,但即使在執行此操作並保存腳本後,該腳本也不會重新生成我最初所做的相同分析。 如果我在給定的分佈內設定規格限制(Normal 3 旁邊的紅色三角形而不是頂層三角形),那麼它會在腳本中完全丟失。 如果我從頂層設置它們,則會存儲信息,但我有 50-100 個數據集來運行此分析,並且它們是一系列分佈。 我需要腳本來找到最合適的,然後進行分析。
下面的範例 1 是我已經開始工作的程式碼片段(尚未輸出到表格,但至少獲得了正確的分佈和分析),但它要求我知道資料將是正態 3 混合。 如果我使用範例 2,它預設為常態分佈,這是錯誤的。 如果我能弄清楚如何評估最適合的參數,我可以在 switch 函數中使用它,或者與設定每個分佈所需的語法相當。
// Example 1 that gives meaningful results, but requires me to know the distribution
Distribution(
Column("Test Data"),
Fit Distribution (Normal Mixtures( Spec Limits( LSL( -1 ), USL( 1 ) ), Clusters( 3 ) )
)
);
// Example 2 gives garbage because it assumes the distribution is normal, and it's never normal
Distribution(
Column("Test Data"),
Fit Distribution ("All"), Capability Analysis ( LSL( -1 ), USL( 1 ) )
);輸出到表格的其他幫助也很棒。 這是我的第一個 JMP 腳本,我正在努力在腳本指南中找到清晰的範例。
回覆:腳本 - 如何選擇最佳擬合分佈並收集能力參數?我同意史蒂芬的謹慎態度。
我理解減少使用腳本手動執行此類分析的乏味的願望。 腳本是自動化 JMP 活動的完美方式。
但同時擬合和排序所有分佈模型的能力是為了探索性的分析。 當對流程行為知之甚少時,您可能會在流程開發的早期進行此類探索。 另一方面,進行能力研究是確認性的分析是在流程開發後期進行的,當時已知很多且流程沒有任何變化。 例如,適當的能力分析要求至少透過第一階段證明製程控制。
你無法真正實現自動化主觀決定關於使用時的分發模型客觀方法。 或者也許我應該這樣說:“僅僅因為你可以,並不意味著你應該。”
回覆:腳本 - 如何選擇最佳擬合分佈並收集能力參數?我會謹慎使用最佳擬合,因為數字上的最佳擬合並不總是邏輯上的最佳擬合。 根據我的經驗,我發現分佈平台過度擬合 - 例如,建議常態 3 混合是最合適的,但根據資料產生方式的理論,對數常態擬合是最合適的。
它需要一定程度的主觀評估,在上面的示例中,更奇特/複雜的擬合的 AICc 分數僅略低。 如果許多列共享相同的資料產生機制,則透過組合所有不同列的排名來選擇所有這些列中最適合的排名可能是明智的做法。
這將需要更多的 JSL,因為您需要保存每列的最佳擬合表,對它們進行排名,比較它們,然後提取跨列的最佳擬合。回覆:腳本 - 如何選擇最佳擬合分佈並收集能力參數?感謝您的幫助,但能力分析仍然預設為常態分佈。 不過,您確實給了我一些關於如何改進我的腳本的其他編碼想法! “輪廓框”指令非常有用。
我能夠使用“大綱框”從比較分佈表中解析出頂部擬合,並關閉該名稱(Normal 3 Mixture)以創建該分佈所需的能力分析調用所需的字串。 這並不優雅,但到目前為止還有效。
謝謝。
回覆:腳本 - 如何選擇最佳擬合分佈並收集能力參數?這是一個應該可以為您提供良好開端的腳本。 它為單列執行您想要的任務
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
// Set the limits for the target column
dt:height << set property("spec limits",{LSL(57),USL(68),show limits(1)});
// Run the Distribution Platform
dis=Distribution(
Continuous Distribution( Column( :height ), Fit Distribution( "All" ) ),
capability analysis(1)
);
// Point to the first capability analysis and create a data table from it
dtCpk = report(dis)[outline box(9)][1][3][1]<<MAKE data="https://community.jmp.com/" table=""></MAKE>