<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我嘗試使用 JMP 腳本執行以下操作:
- 透過同一表中兩個分類列(STNFAM 和 VIEW_STATE_ID)的所有不同組合,將威布爾分佈擬合到表 (dt1) 中的兩個不同連續資料列(TBI 和 TTR)
- 提取所有結果分佈的 Alpha 和 Beta 參數並將其寫入表中。 甚至以可解析的格式將它們列印到日誌中也可以
以下是腳本的當前原型,旨在僅提取報告中產生的第一個節點的分佈參數:
********************************************** 腳本開始
DT1 = 當前資料表();
距離 = DT1 <<
分配(
通過(:STNFAM,:VIEW_STATE_ID),
連續分佈(
列(:TBI_HRS),
擬合分佈(帶有閾值的威布爾)
),
連續分佈(
列(:TTR_HRS),
擬合分佈(帶有閾值的威布爾)
)
);
//測試dist是否是一個合法的平台,可以稍後在腳本中進行操作
顯示屬性(距離);
報告距離=距離<<報告;
//測試reportDist是否是一個合法的報告,可以稍後在腳本中進行操作
顯示屬性(reportDist);
//測試是否可以從reportDist中的第一個節點提取Alpha和Beta參數
alphaParam = reportDist[大綱框(1)][表格框(3)][編號列框(1)] << Get(1);
betaParam = reportDist[大綱框(1)][表格框(3)][編號列框(1)] << Get(2);
//將提取的參數列印到日誌中,看看它們是否與期望的值匹配
列印(alphaParam);
打印(betaParam);
************************************************** **** ************************** 腳本結束
如果 dt1 僅包含 STNFAM 和 VIEW_STATE_ID 的 1 個組合,則此腳本將如預期般運作。 「dist」和「reportDist」的屬性都顯示在日誌中,並且 Weibull 參數也會根據需要列印到日誌中。 但是,如果 dt1 中存在超過 1 個 STNFM 和 VIEW_STATE_ID 的組合,我會收到以下錯誤,並且日誌中不會顯示任何平台或報告屬性:
************************************************** **** **************************日誌開始
/*:
//:*/
DT1 = 當前資料表();
距離 = DT1 <<
分配(
通過(:STNFAM,:VIEW_STATE_ID),
連續分佈(
列(:TBI_HRS),
擬合分佈(帶有閾值的威布爾)
),
連續分佈(
列(:TTR_HRS),
擬合分佈(帶有閾值的威布爾)
)
);
//測試dist是否是一個合法的平台,可以稍後在腳本中進行操作
顯示屬性(距離);
報告距離=距離<<報告;
//測試reportDist是否是一個合法的報告,可以稍後在腳本中進行操作
顯示屬性(reportDist);
//測試是否可以從reportDist中的第一個節點提取Alpha和Beta參數
alphaParam = reportDist[大綱框(1)][表格框(3)][編號列框(1)] << Get(1);
betaParam = reportDist[大綱框(1)][表格框(3)][編號列框(1)] << Get(2);
//將提取的參數列印到日誌中,看看它們是否與期望的值匹配
列印(alphaParam);
打印(betaParam);
/*:
存取或評估 'Outline Box'、Outline Box( 1 ) 時預期字元 arg 1 存取或評估 'Subscript' 時出現下標問題,reportDist[Outline Box( 1 )]
在以下腳本中,錯誤標記為 /*###*/
DT1 = 當前資料表();
距離 = DT1 << 分佈(
通過(:STNFAM,:VIEW_STATE_ID),
連續分佈(
列(:TBI_HRS),
擬合分佈(帶有閾值的威布爾)
),
連續分佈(
列(:TTR_HRS),
擬合分佈(帶有閾值的威布爾)
)
);
顯示屬性( dist );
reportDist = dist << 報告;
顯示屬性(reportDist);
alphaParam = reportDist[/*###*/大綱框/*###*/(1)][表格框( 3 )][
數字列框( 1 )] << Get( 1 );
betaParam = reportDist[大綱框( 1 )][表格框( 3 )][編號列框( 1 )] <<
獲取(2);
打印( alphaParam );
打印( betaParam );
************************************************** **** **********************************************日誌結束
當程式碼第一部分中的 BY 參數產生多個組合時,JMP 似乎不會將「dist」和「reportDist」識別為合法平台和報告。 誰能指出我正確的方向以獲得所需的結果?
附件:
- Subset_Weibull_Fit_Script.jsl(上面訊息中顯示的腳本)
- XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp 的 1_Combo_Subset(腳本按預期工作的測試表)
- XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp 的 2_Combo_Subset(腳本未如預期運作的測試表)
謝謝你,
當有多個組合時,dist 和 reportDist 為清單包含與組合一樣多的項目。 您可以使用 Is List() 函數來確定是否屬於這種情況。 如果您有列表,則可以使用 N Items() 函數來取得項目數,以確定其中有多少項目。 您可以將進一步的處理放入循環中,或者使用“生成組合資料表”訊息或“生成矩陣”訊息來提取所有參數可能是合適的。