<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在編寫一個腳本,它將向現有平台添加一些額外信息(例如,添加RSquare Predicted to Fit模型)。我能夠將pred.R2添加到作為我腳本的一部分創建的平台。但是,我如何獲得用戶適合的模型的引用?我想創建一個用戶對話框,允許用戶選擇應該添加pred.R2的平台窗口。
當然我更願意將自己的菜單條目添加到Fit-Model-plaftorm的主要熱點,但我不知道這是否可能?
謝謝你的建議,
塞巴斯蒂安
塞巴斯蒂安
只是為了建立MS的優秀回复...... 我們編寫了一個非常相似的腳本,將R2 Predicted值添加到Fit Model輸出中。您可以從菜單或當前報告窗口的工具欄運行腳本(腳本必須添加到菜單或工具欄中),而不是顯示用於選擇相應報告的對話框。然後,Current Window()命令提供對報告窗口的引用,您可以在報告窗口中搜索大綱框。這是我們腳本的一部分。
curwin = Current Window();For( i = 1, i < 10000, i++, Try( outlinebox = curwin[Outline Box( i )]; Try( outlineboxobj = outlinebox << Get Scriptable Object; // DETAILS NOT SHOWN: // Check that the outline box is the top of a Fit Model analysis, with Standard Least Squares personality. // Pull the PRESS statistic and SS(treatment) to calculate R2-Predicted and append it to the Summary of Fit. ); , Break(); // If no more outline boxes are found, the first "Try()" goes here and forces an escape from the For() loop. ););
我們的腳本實際上將R2 Predicted值插入到該窗口中的每個Fit Model分析中(適用於多個Y和副變量)。它通過查看報告窗口中的每個大綱框來完成此操作。
評論:
1。JSL文檔不符合“<< Get Scriptable Object”消息。我找了很長時間來訪問現有報告窗口的方法(標準分析已經由用戶創建,而不是由腳本創建)。這種能力開闢了許多腳本編寫機會。
2。為了讓我們所有人不再重新發明輪子,如果JMP在標準的最小二乘法輸出中包含R2-Predicted值,那就太好了。
霍華德
非常感謝MS!這就是訣竅。我之前不知道<<獲取腳本對象!
通常情況下, <<獲取腳本對象可以訪問該平台。然而適合模型輸出有點奇怪,需要一些挖掘報告才能找到平台的頂部輪廓框。
如果沒有分配按角色,則以下內容應該有效 (假設上述功能和定義)。
//對話框
新窗戶 ( “選擇回歸報告” ,
<< 語氣 ,
面板盒 ( “選擇回歸報告以將Predicted R2添加到” ,
RB = 收音機盒 ( 視窗 ) ,
按鈕框 ( “好” ,
窗口 ( RB << 被選中 ) << 把窗戶帶到前面 ;
insertToReport (
當前報導 ()[ 1 , 1 , 1 ] << 獲取腳本化對象 ()
) ;
)
)
) ;
非常感謝塞巴斯蒂安。我差不多了(我想),所以讓我回顧一下。。。
您的用戶將使JMP會話處於您的代碼不知道的狀態。換句話說,他們可以打開多個表,每個表都有多個窗口。其中一些窗戶可能包含'Fit Least Squares';報告。您的代碼應掃描所有打開的窗口,識別後者,如果有多個,請讓用戶選擇將哪一個附加到其他報告內容(如果只有一個,則無需詢問)。關鍵是你的代碼實際上並沒有生成任何報告。
這是對的嗎?
嗨伊恩,
謝謝回复。我想按照這個工作流程:
1。用戶使用“擬合模型(標準最小二乘法)”開始他的分析。
2。然後,用戶運行我的腳本,將Predicted R2添加到他的報告中。
3。然後將預測的R2附加到“擬合模型”報告中。
問題是我如何訪問用戶在腳本中創建的報表。
目前我的代碼看起來像這樣。我基本上想用一個用戶對話框替換最後一節“Test it”,用戶選擇Pred所在的報告。應添加R2(特別是在有多個報告的情況下)。我只是錯過瞭如何引用現有報告的部分。
//從“擬合模型”-plattform中提取PRESS統計量
getPRESS = 功能 ({ plattform } ,
plattform << 按 ( 節目 = 1 ) ;
報告 = plattform << 報告 ;
按 = ( 報告 [ OutlineBox ( “按” )] [ 1 ] [ 1 ] << 得到矩陣 ) 1 ] ;
按 ;
) ;
//從“擬合模型”平台中提取平方和
getTSS = 功能 ({ plattform } ,
報告 = plattform << 報告 ;
SS = ( 報告 [ OutlineBox ( “方差分析” )] [ 1 ] [ 3 ] << 得到矩陣 ) ;
TSS = SS [ Nrow ( SS )] ;
TSS ;
) ;
//計算使用Fit-Model-plattform計算的線性模型的預測R2
predR2 = 功能 ({ plattform } ,
按 = getPRESS ( plattform ) ;
TSS = getTSS ( plattform ) ;
PR2 = 1 - 按 / TSS ;
PR2 ;
) ;
//將pred R2插入報告
insertToReport = 功能 ({ plattform } ,
lm.rep = plattform << 報告 ;
名 = lm.rep [ OutlineBox ( “適合總結” )] [ StringColBox ( 1 )] << 得到 ;
值 = lm.rep [ OutlineBox ( “適合總結” )] [ 數字Col Box ( 1 )] << 得到 ;
插入 ( 名 , “RSquare預測” , 3 ) ;
插入 ( 值 , predR2 ( plattform ) , 3 ) ;
lm.rep [ OutlineBox ( “適合總結” )] [ StringColBox ( 1 )] << 設定值 ( 名 ) ;
lm.rep [ OutlineBox ( “適合總結” )] [ NumberColBox ( 1 )] << 設定值 ( 矩陣 ( 值 )) ;
) ;
//測試一下
DT = 打開 ( “$ sample_data / Design Experiment / Coffee Data.jmp” ) ;
分析 = 適合模型 (
ÿ ( : 強度 ) ,
效果 ( : 研磨 , : 溫度 , : 時間 , : 收費 , : 站 ) ,
個性 ( “標準最小二乘法” ) ,
重點 ( “最小報告” ) ,
跑 (
: 強度 << { 缺乏健康 ( 0 ) ,根據預測繪製實際情況 ( 0 ) ,
情節回歸 ( 0 ) ,通過預測繪製殘差 ( 0 ) ,
情節效果槓桿 ( 0 )}
)
) ;
InsertToReport ( 分析 ) ;
加成: 這是我嘗試但無法工作:
// ----------------------- +
//用戶對話框|
// ----------------------- +
//獲取所有打開的窗口
windows = {};
ref_windows = Window();
對於(i = 1,i <= Length(ref_windows),i ++,
插入(窗口,ref_windows <<獲取窗口標題);
);
//對話框
新窗口(“選擇回歸報告”,<<模態,
面板框(“選擇回歸報告將Predicted R2添加到”,pf = Radio Box(windows));
);
lm_plattform = Plattform(pf << Get);
lm_plattform <<帶到前線;
insertToReport(lm_plattform);
我認為有關您設想的工作流程的更多細節,Sebastian。我是否認為您想要使用允許同一報告中的多個模型的建模平台(如Neural)?在哪種情況下,是否有一個特別感興趣的平台?