將 AIC 匯出到新資料表的腳本<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在“擬合參數生存”平台中比較多個模型的 AIC 結果。 此時,我有一個腳本來運行所有模型並產生多個窗口,然後我將 AIC 和其他輸出一一複製/貼上到 Excel 檔案中。 不用說,這是一個耗時且浪費的過程。 我是 JSL 的新手,有人能夠幫助我創建一個自動化流程,從多個報告視窗中提取 AIC 和其他資訊並將它們保存到單一資料視窗中嗎? 我正在評估的附加資訊是參數收斂、使用的觀察結果以及審查和未經審查的值的數量。
謝謝你的幫忙!
使用 VBA 巨集將資料匯入 JMP 並將 JMP 結果傳回 Weibull Analysis 上的 Excel 工作表嗨,大家好,
首先,我要感謝您分享您的腳本發現,它幫助我能夠自動化我的資料查詢流程。我正在使用 VBA-Macro excel 將表格複製到 JMP 中以執行威布爾分析並獲取比例和形狀值,然後複製到我的 VBA-Macro excel 文件中。以下是我使用的程式碼。 希望它對其他人也有幫助。
VBA-Excel 巨集。
子 JMP()
將應用程式調暗為 JMP.Application
暗淡文檔作為 JMP.Document
設定 app = CreateObject("JMP.Application")
應用程式可見 = True
設定 doc = app.OpenDocument("C:\Users\ABC\Desktop\WS.jsl")
結束子
JSL 腳本(另存為 WS.jsl 格式)
//! <<<如果您想自動執行下面的 JSL 腳本,且它必須位於 JSL 檔案的第一行>>>。
dt = Open( "C:\Users\ABC\Desktop\Book1.xlsm" ); <<< JSL 會將 Excel 檔案開啟到 JMP 資料表中以執行下面的 weibull 分析>>>
fm = 壽命分佈(
Y( :姓名( "TTF,Hr" ) ),
檢查器(:檢查器),
審查代碼( 1 ),
頻率(:頻率),
<<適合威布爾,
信賴區間法(似然法),
<<設定尺度(非參數),
<<抑制圖(非參數),
間隔類型(同時),
<<設定腳本(
{機率論文( 刻畫器( 1, 信賴區間( 1 ), 名詞值( 名稱( "TTF,Hr" )(4846.6174375, 鎖定( 0 ), 顯示( 1 )) ) ) ),
威布爾分佈( 探查器( 1, 信賴區間( 1 ), 項值( 名稱( "TTF,Hr" )(4846.6, 鎖定( 0 ), 顯示( 1 )) ) ) ),
威布爾分位數( 刻畫器( 1, 信賴區間( 1 ), 項值( 機率( 0.5, 鎖定( 0 ), 顯示( 1 ) ) ) ) ),
威布爾危險( 探查器( 1, 信賴區間( 1 ), 術語值( 名稱( "TTF,Hr" )(4846.6, 鎖定( 0 ), 顯示( 1 )) ) ) ),
Weibull 密度( Profiler( 1, Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ), 自訂估計( Weibull, 0 )}
),
發送至報告(
Dispatch( {"比較分佈"}, "壽命分佈", FrameBox, {網格線順序( 2 ), 參考線順序( 3 )} ),
Dispatch( {"統計", "模型比較"}, "", TableBox, {依列排序( 2, 1 )} )
)
);
// 自動將參數估計資料複製到新資料表中(例如:untitled.jmp 格式)
fmrep = fm << 報告;
fmrep[Outline Box("參數估計?" )][Table Box( 1 )] << 製作組合資料表;
dt1 = 當前資料表();
dt1 << 另存為( "c:\Users\ABC\Desktop\AAA.xlsx" ); // 將 untitled.jmp 檔案儲存為 excel 檔案(在本例中,我將其儲存為 AAA.xlsx)在桌面位置。
關閉(dt,不保存);
關閉( dt1, 不儲存);
上面的腳本非常適合我。
只是想用我最近的發現和學習來回饋這個社區。
謝謝!
吉姆
回覆:將 AIC 匯出到新資料表的腳本尤里卡!!! 謝謝傑夫、馬克和伊恩! 你們在短時間內教會了我很多東西,並給了我解決方案,這將節省我數小時不必要的點擊、複製、貼上!
現在,如果你們中的任何人知道如何在模型不收斂時為警告文字添加一列,那將是錦上添花。 但我對我們所取得的成就感到滿意!
回覆:將 AIC 匯出到新資料表的腳本當您在平台啟動中使用 By() 時,JMP 將會傳回結果平台的清單。 如果沒有它,JMP 將返回單一平台,而不是清單中的平台。
由於此處的範例使用 By(),因此它們需要對平台清單進行索引,以逐組引用特定平台。 這是 [1] 中的:
fmrep1[1][Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;您在任何平台啟動中都沒有使用 By(),因此您不需要 [1]。
要將所有表放入單一資料表中,最簡單的方法是從單一視窗中的所有報表開始。
您可以使用 New Window() 建立您自己的報表視窗。
dt = Open( "$SAMPLE_DATA\Reliability\Tobit2.jmp" );
myWin = New Window( "My Window",
fm1 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm2 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm3 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
);
combined = myWin[Outline Box( "Parametric ?" )][Table Box( 1 )] << make combined data table;
請注意,我們不需要取得報表對象,因為我們有報表視窗的引用,我的贏, 已經。
要獲得與原始帖子中顯示的類似的表格,您需要 Split() 從製作組合資料表中獲得的表格。
combined <<Split(
Split By( :Column 1 ),
Split( :Column 2 ),
Remaining Columns( Drop All )
);
我知道您還需要一列來指示行代表哪個模型。 根據您決定要執行哪些模型的方式,您自己保留該清單並自行在資料表中新增包含該資訊的資料列可能會更容易。
如果您不知道指定的模型,可以從參數生存報告中提取該模型,但這並不容易。
-傑夫
回覆:將 AIC 匯出到新資料表的腳本好吧,所以我們越來越近了。 儘管我貼了錯誤的腳本,傑夫還是給了我正確的答案。 以下腳本提供了範例資料所需的表格:
dt =打開( “$SAMPLE_DATA/可靠性/Tobit2.jmp” ) ;
// 新增隨機「by」列
按列= dt <<新專欄( “經過” ,數位,標稱,公式(隨機整數( 1 , 2 ))) ;
// 製作不可見的報表
調頻= dt <<適合模型(
是( :低Y值, : Y高) ,
效果( :年齡, :流動性) ,
經過( :經過) ,
性格(參數生存) ,
分配(對數常態分佈) ,
跑步(似然比檢驗( 1 ) ) ,
) ;
// 取得報表層的引用
FM代表=調頻<<報告;
FM代表[ 1 ][大綱框( “參數化?” )][表格框( 1 )] <<製作組合數據表;
關閉( dt ,不保存) ;
// 這個腳本按照它應該的方式運作!
但為什麼當我刪除時按列= dt <<新專欄( ...) 和經過( :經過) ,該腳本不再產生表格?
由於我的目標是從多個報表建立單一組合資料表,因此如何讓以下範例腳本發揮作用:
dt =打開( “$SAMPLE_DATA/可靠性/Tobit2.jmp” ) ;
// 製作不可見的報表
調頻1 = dt <<適合模型(
是( :低Y值, : Y高) ,
效果( :年齡, ) ,
性格(參數生存) ,
分配(對數常態分佈) ,
跑步(似然比檢驗( 1 ) ) ,
) ;
調頻2 = dt <<適合模型(
是( :低Y值, : Y高) ,
效果( :流動性) ,
性格(參數生存) ,
分配(對數常態分佈) ,
跑步(似然比檢驗( 1 ) ) ,
) ;
調頻3 = dt <<適合模型(
是( :低Y值, : Y高) ,
效果( :年齡, :流動性) ,
性格(參數生存) ,
分配(對數常態分佈) ,
跑步(似然比檢驗( 1 ) ) ,
) ;
// 取得報表層的引用
FMREP1 =調頻1 <<報告;
FMREP1 [ 1 ][大綱框( “參數化?” )][表格框( 1 )] <<製作組合數據表;
謝謝大家!!!
J.P
回覆:將 AIC 匯出到新資料表的腳本您在這一行中遇到了一些下標錯誤:
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
相反,它應該是:
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;您可以使用 Outlinebox(1) 或將完整標題放在那裡,但通配符“?”使它更通用一些。
-傑夫
回覆:將 AIC 匯出到新資料表的腳本馬克和伊恩,謝謝您的寶貴時間! 但我仍然沒有得到正確的結果,因為我的下面的腳本版本仍然不會產生表格。 我試著結合你的兩個例子:
dt =打開( “$SAMPLE_DATA/大類.JMP” ) ;
BIV = dt <<雙變數(
是( :高度) ,
X ( :重量) ,
擬合線,
經過( :性別)
) ;
FM代表=調頻<<報告;
FM代表[ 1 ][ “參數估計” ][表格框( 1 )] <<製作組合數據表;
有任何想法嗎?
謝謝你,
J.P
回覆:將 AIC 匯出到新資料表的腳本我在下標中使用“參數估計”來定位特定的輪廓框,您可以使用“參數生存擬合 - 模型 633”。
回覆:將 AIC 匯出到新資料表的腳本哎呀! 我知道你想要一張桌子,而不是一本日記。 在這種情況下,「製作組合資料表」可能會更直接。
回覆:將 AIC 匯出到新資料表的腳本根據馬克的解釋,這是一種方法:
dt =打開( “$SAMPLE_DATA/可靠性/Tobit2.jmp” ) ;
// 新增隨機「by」列
按列= dt <<新專欄( “經過” ,數位,標稱,公式(隨機整數( 1 , 2 ))) ;
// 製作不可見的報表
調頻= dt <<適合模型(
是( :低Y值, : Y高) ,
效果( :年齡, :流動性) ,
經過( :經過) ,
性格(參數生存) ,
分配(對數常態分佈) ,
跑步(似然比檢驗( 1 ) ) ,
無形的
) ;
// 取得報表層的引用
FM代表=調頻<<報告;
// 這將是一個列表,每個「by」群組一個項目
大綱標題= FM代表<<取得標題;
// 製作一個空的顯示框
盧布=排隊框( NCOL ( 1 )) ;
//加入我們需要的內容
為了(哦= 1 ,哦<= N項(大綱標題) ,哦++,
盧布<<附加(
大綱框(大綱標題[哦] ,
( FM代表[哦])[表格框( 1 )] ;
) ;
) ;
) ;
關閉( dt ,不保存) ;
// 寫日記
新窗戶( “報告” , <<雜誌,盧布) ;
唯一的困難是知道要包含哪些錶框。 要弄清楚這一點,請右鍵單擊輪廓節點的三角形,然後選擇“編輯”>“顯示樹結構”。
回覆:將 AIC 匯出到新資料表的腳本感謝您的快速回复,馬克! 這非常有幫助且具有教育意義,儘管起初它沒有產生數據表,直到我將最後一位重寫為
報告( BIV [ 1 ] )[ “參數估計” ][表格框( 1 )] <<製作組合數據表;
按照這個例子: 46983 - 使用「按」變數時如何從分佈報告建立總計統計資料的組合資料表。
但是,我仍然無法將其轉換為我的工作流程,可能是因為我想要的表格沒有標題(例如“參數估計”)。 以下是一份報告的範例。 圓圈部分是我想要製作成資料表的部分。 我在底部提供了我正在使用的腳本範例。 挑戰在於如何將一次產生的約 100 個報告中的圈出資料新增至一個資料表。 我添加了我正在尋找的最終表格的螢幕截圖,我目前正在手動將其輸入到 Excel 中(噁心)。 我還需要一種將型號#(例如 633)添加到每一行的方法。
再次感謝你的幫忙!
J.P


這是我正在使用的腳本的範例:
適合模型(
審查( :分散) ,
審查程式碼( “0” ) ,
是( :距離驅散天數) ,
效果( :重量,:年,:來源,:易位,:治療,:地質學,:地點, ) ,
性格(參數生存) ,
分配(弗雷謝特) ,
跑步(似然比檢驗( 1 ) ) ,
發送至報告(
派遣(
{} ,
參數存活擬合,
大綱框,
{設定標題( “參數生存擬合 - 型號 632” )}
)
)
) ;
適合模型(
審查( :分散) ,
審查程式碼( “0” ) ,
是( :距離驅散天數) ,
效果( :重量,:年,:來源,:易位,:治療,:地質學, ) ,
性格(參數生存) ,
分配(弗雷謝特) ,
跑步(似然比檢驗( 1 ) ) ,
發送至報告(
派遣(
{} ,
參數存活擬合,
大綱框,
{設定標題( “參數生存擬合 - 型號 633” )}
)
)
) ;
回覆:將 AIC 匯出到新資料表的腳本您可以透過右鍵單擊報告中包含 AIC 值的表並選擇“建立組合資料表”以互動方式產生此結果。
等效的腳本要求將與選單命令同名的訊息傳送到負責在報表中顯示 AIC 值的顯示框物件。 使用以下範例來實現此想法:
- 開設大班
- 啟動雙變量平台,以身高、體重和性別作為分組變量
- 在兩組中擬合一條線
- 取得報表層的引用
- 重複將報表中的顯示樹下標到第一個表格的層級(例如,參數估計)
- 發送訊息
dt =打開( “$SAMPLE_DATA/大類.JMP” ) ;
BIV = dt <<雙變數(
Y( :高度) ,
X( :重量) ,
擬合線,
經過( :性別)
);
比4 = BIV <<報告;
比弗[ 1 ][ “參數估計” ][表格框( 1 )] <<製作組合數據表;