运行非线性模型拟合时如何保存不同类别的预测公式我有一个适合非线性模型自定义公式的脚本(在 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 方面获得更多帮助。
问候,
菲尔