運行非線性模型擬合時如何保存不同類別的預測公式我有一個適合非線性模型自定義公式的腳本(在 Nonlib 上不可用)獲取模型參數的估計值。 我可以在紅色三角形菜單下保存公式,然後選擇保存預測公式,這將為新結果創建一個新列。 我可以為每個類別做到這一點。
New Column( "Fitted Model By Sample",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "By ID", 207957763 ),
Formula(
If( :Sample == "Barley 2710",
If( :Days > 0,
0.171070850115799 * Exp( -Exp( ((0.00826868962267886 * Exp()) / 0.171070850115799) * (8.5626914275992 - :Days) ) )
+0.189197655815188 * Exp( -Exp( ((0.0822175769423173 * Exp()) / 0.189197655815188) * (1.00952608535815 - :Days) ) ),
0
),
.
)
),
Set Property( "Predicting", {:Average, Creator( "Nonlinear" )} ),
Set Selected
);
Set Label Columns( :Label );
但是,我試圖讓它為數據表中的所有類別運行,以避免手動執行。 關於如何做到這一點的任何建議?
我試圖只發布新公式,但沒有像手動操作那樣創建列,例如:
obj = Nonlinear( Y( :Average ), X( :Model ), Loss( :Err ), Iteration Limit( 5000 ), By( :Sample ) );
obj << go;
obj << Publish prediction formula;
obj << Set name( "Fitted Model by sample" );
我也嘗試過修改 JSL 錄製的腳本如下,不幸的是公式不起作用。 任何幫助深表感謝。
obj = Nonlinear( Y( :Average ), X( :Model ), Loss( :Err ), Iteration Limit( 5000 ), By( :Sample ) );
obj << go;
//returns a list of vectors where each vector, contains the parameters estimates
obj << get estimates;
obj << get prediction formula;
col11 = New Column( "Fitted Model By Sample",
set formula(
If( :Days > 0,
(Y1_Y1_0 * Exp( -Exp( ((K1_K1_0 * Exp()) / Y1_Y1_0) * (P1_P1_0 - :Days) ) ) + Y2_Y2_0 * Exp(
-Exp( ((K2_K2_0 * Exp()) / Y2_Y2_0) * (P2_P2_0 - :Days) )
)),
0
),
By( :Sample ),
Set Property( "Predicting", {:Average, Creator( "Nonlinear" )} ),
Set Selected
),
Set Label Columns( :Label )
);
回复:運行非線性模型擬合時如何保存不同類別的預測公式驚人的! 我可以相信我錯過了社區中的這個解決方案。 我搜索了各種各樣的例子。 只需要“保存”這就是我所需要的。
非常感謝菲爾!
回复:運行非線性模型擬合時如何保存不同類別的預測公式解決方案是否從@txnelson在這個帖子幫助? (“將預測公式保存回表”)
Names Default To Here( 1 );
dt = Open(
"$SAMPLE_DATA/Nonlinear Examples/Bioassay.jmp"
);
obj = Fit Curve(
Y( :Toxicity ),
X( :log Conc ),
Group( :formulation ),
Fit Logistic 4P
);
obj << (Fit[1] << Save Prediction Formula);
這使用保存預測公式命令,而不是發布預測公式。 我認為這是你想要做的,它不需要 Pro。
它為您提供了一個結果預測公式列,其中有效地為每個組提供了一個模型:
Match( :Formulation,
"standard",
0.599015186864584 + (1.10686367677145 - 0.599015186864584) / (1
+Exp( -5.84379312234502 * (:log Conc - 0.32019959502239) )),
"test A",
0.590902329849433 + (1.1012080930316 - 0.590902329849433) / (1
+Exp( -5.98069280093278 * (:log Conc - 0.284551221955609) )),
"test B",
0.592984828033858 + (1.0972015134296 - 0.592984828033858) / (1
+Exp( -5.75586785289505 * (:log Conc - 0.084429442746212) )),
"test C",
0.593403681513877 + (1.10597929999838 - 0.593403681513877) / (1
+Exp( -6.00992746207644 * (:log Conc - 0.298749145989595) )),
.
)
回复:運行非線性模型擬合時如何保存不同類別的預測公式嗨菲爾,
再次感謝你的反饋。
我將嘗試對此回復進行更多解釋。
是的,我的問題是關於我如何自動擬合模型並為每個組生成一個帶有結果預測公式的列。 這只是我想要創建的一列。 模型公式已經在每個組的一列中,我只想用估計的新參數複製它。
這樣做的想法是我可以單獨報告每個組的結果,並且能夠通過圖形構建器以不同的方式表示模型曲線和實驗數據。
我希望這更清楚。
儘管如此,似乎我需要 Jump Pro 才能做到這一點,這對嗎?
謝謝
伊沃
回复:運行非線性模型擬合時如何保存不同類別的預測公式感謝菲爾的反饋。
我已經嘗試過這個腳本,你是對的,它不起作用,因為我只有標準的 JMP ......很遺憾。
回复:運行非線性模型擬合時如何保存不同類別的預測公式發布預測公式與在 JMP Pro 中發佈到公式庫的功能有關。 如果您使用標準 JMP,我不希望這會起作用。 您可以使用腳本索引中的示例腳本進行檢查。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Boston Housing.jmp" );
obj = K Nearest Neighbors(
Y( :mvalue ),
X(
:crim,
:zn,
:indus,
:chas,
:nox,
:rooms,
:age,
:distance,
:radial,
:tax,
:pt,
:b,
:lstat
),
K( 10 )
);
obj << (Response[1] << Publish Prediction Formula);
(順便說一句,這就是我所說的插入 JSL 選項 - 更清楚,不是嗎?)
那樣有用嗎? 它應該調出Formula Depot。 同樣,我只希望它在您使用 JMP Pro 時才能工作。
回复:運行非線性模型擬合時如何保存不同類別的預測公式你好,
只是一些提示可以幫助人們幫助您應對挑戰。
首先,如果您可以在發布腳本問題時使用 JSL 選項,這將有所幫助。 您只需單擊發布窗口上方工具欄上的 並在那裡添加您的 JSL。 讓人們更清楚地了解您的 JSL 並為您提供幫助。
其次,這裡有一個複雜的非線性模型擬合,但您的問題實際上是關於如何自動擬合模型並為每個組生成預測公式列。 如果您提供一個更簡單的示例來演示您要解決的問題的特定部分,那麼人們會更容易提供幫助。 它還將使其他社區成員更容易了解這是否為他們提供了解決問題的方法。 使用經典的 Big Class 樣本數據集的示例總是很好的。 在您的情況下,我認為為 Big Class 中的每組 Sex 設置一個簡單的模型可能足以證明您的挑戰。 或者它可能比這更複雜。 我不確定,因為您提供的信息有點不清楚。
最後,如果你能解釋一下你最終想要達到的目標,這可能會有所幫助。 為什麼要為每個組創建公式列? 可能還有其他更好的方法來實現您的目標。
我認為,如果您按照這些步驟操作,您應該會發現您會在發布的 qeuries 方面獲得更多幫助。
問候,
菲爾