运行非线性模型拟合时如何保存不同类别的预测公式我有一个适合非线性模型的自定义公式的脚本(在 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 )
);
回复:运行非线性模型拟合时如何保存不同类别的预测公式惊人的! 我相信我在社区中错过了这个解决方案。 我搜索了各种例子。 只需要“保存”,这就是我所需要的。
非常感谢菲尔!
回复:运行非线性模型拟合时如何保存不同类别的预测公式解决方案是否来自@tx尼尔森在这个帖子帮助? (“将预测公式保存回表”)
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 样本数据集的示例总是好的。 就您的情况而言,我认为为大班中的每个性别组拟合一个简单的模型可能足以证明您的挑战。 或者也许事情比这更复杂。 我不确定,因为您提供的信息有点不清楚。
最后,如果您能解释一下您最终想要实现的目标,可能会有所帮助。 为什么要为每个组创建公式列? 可能还有其他更好的方法来实现您的目标。
我认为如果您按照这些步骤操作,您应该会发现您将在发布查询时获得更多帮助。
问候,
菲尔