JSL 腳本 - 抓取預測公式結果你好,
我試圖在預測公式中設定 X 後獲取預測值。
例如,如果 Y = X1 + X2,我想建立一個新行,設定 X1 = 2 和 X2 = 4 並取得 Y = 6 的預測值。
我認為最簡單的方法是將預測公式保存到一組新的列中。
然後我會新增一個新行並設定所有 X。
然後,只需存取預測公式的行值即可。
然而,這是行不通的。 日誌顯示該值傳回“.”。 如果我運行腳本兩次,從而創建多行,則該值會正確返回。 如果我添加兩行並僅運行腳本一次,我仍然會得到“null”或“.”在日誌檔案中。 JMP 似乎需要運行腳本兩次才能獲取具有設定的 X 值的新添加行的預測公式結果。
有沒有更好的方法使用腳本從預測公式中取得預測值?
謝謝你,
內特
回覆:JSL 腳本 - 抓取預測公式結果偉大的。 它現在運行並按預期運行。 非常感謝。回覆:JSL 腳本 - 抓取預測公式結果我忘記了 JMP Pro 中還有普通版本中沒有的附加 PLS 功能。 對於 JMP,它會類似,但更簡單一些:
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
為了理解程式碼的工作原理,我將從「幫助 > 書籍 > 腳本指南」開始學習 JSL 的基礎知識。
回覆:JSL 腳本 - 抓取預測公式結果謝謝伊恩
抱歉,我的腳本知識太有限,您的幫助並沒有加速我的速度,您能給我更多的支持嗎?
首先,我使用 JMP,而不是 PRO。 我認為這就是我的 JMP 自動 PLS 腳本看起來與您的不同的原因。 我附上了我的腳本。
閱讀您的腳本時會出現很多問題。
為什麼要區分 PLSLAUNCH 和 PLSFITS。 這是必要的還是只是為了您閱讀/記錄時的舒適?
如果我只有一個“適合”,例如,是否有必要分配 PLSFITS 適合。只需 7 個因素(請適合<< (合身[ 1 ] <<保存預測公式);
請適合<< (合身[ 1 ] <<保存殘差);我假設這意味著:將Fit[1]的殘差保存到物件PLSFITS(這個名稱可以由我選擇,只是為了更好地識別PLSFITS)
如果我執行您的腳本,我會在日誌視窗中收到此錯誤: plsFits << (Fit[/*###*/1] << savePredictionFormula);這是因為 PRO 術語嗎?
非常感謝
彼得
回覆:JSL 腳本 - 抓取預測公式結果嗨,彼得,這應該有助於您入門。 “Wait()”指令用於裝飾效果,可以刪除。
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
回覆:JSL 腳本 - 抓取預測公式結果你好伊恩,
我正在社區中搜尋如何將 PLS 中的「儲存 Y 預測值」保存在 JSL 中。 是否有可用的文件說明我在哪個工具中處理哪個列保存(例如預測公式、置信區間、預測值)。
謝謝彼得
回覆:JSL 腳本 - 抓取預測公式結果抱歉,不 - 我可能混淆了這個問題。 「Wait()」只是為了裝飾效果。 一般來說,您在 JSL 中永遠不需要這個(但有一些非常罕見的情況下您可能需要)。 可能最好向資料表發送“運行公式”訊息。
回覆:JSL 腳本 - 抓取預測公式結果啊完美! 我只需要放入 Wait() 即可。 謝謝你!
回覆:JSL 腳本 - 抓取預測公式結果詳細資訊取決於您使用的平台,但這顯示了基本思想:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;