我试图找到报告适合我的实验数据的非线性模型的最佳方法。
我设法编写了一个适合非线性模型的脚本,并使用损失函数找到参数估计值。然后报告每个参数估计值和非线性误差。
但是,我想获得最终拟合的RMSE或R-square。这不适用于非线性模型吗?或者我是否需要添加额外的分析步骤?
当以交互方式运行非线性分析平台时,得到的图显示实验数据和模型曲线。但是,在自动运行脚本时,仅显示实验数据。有谁知道为什么会这样?我在下面的脚本上遗漏了什么吗?
有人可以提供一些文献/书籍/链接,以便能够得到数据的图形与所得到的模型拟合并报告拟合的R平方吗?
我用于非线性模型拟合的脚本现在是下面的脚本:
col1 = New Column( "Model" );
col1 << set formula(
Parameter(
{Y1_Y1_0 = 0.2, K1_K1_0 = 0.01, P1_P1_0 = 0.004, Y2_Y2_0 = 0.15, K2_K2_0 = 0.06, P2_P2_0 = 0.3},
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
)
)
);
col2 = New Column( "Err" );
col2 << set Formula( Sum( (:Average - :Model) ^ 2 ) );
col2 << Evalformula;
col2 << Get formula;
obj = Nonlinear( Y( :Methane Yield ), X( :Model ), Loss( :Err ), Iteration Limit( 600 ), By( :Sample ) );
obj << go;
//returns a list of vectors where each vector, contains the parameters estimates
obj << get estimates;
//also see Get SSE, Get Parameter Names, Get CI
//Alternately, make a table
_xx = obj << Xpath( "//OutlineBox[@helpKey='Nonlinear Solution']" );
//only 2 groups so only 2 are found; each contains two sub tables
fit_dt = (_xx[1] << Find( Table Box( 1 ) )) << Make Combined Data Table;
est_dt = (_xx[1] << Find( Table Box( 2 ) )) << Make Combined Data Table;
fit_dt << set Name( "NonLin Fit Errors" );
est_dt << set Name( "NonLin Fit Estimates" );
谢谢马克。
我按照你的建议更改了Loss功能。我已经运行了拟合,但仍无法在Plot上看到模型曲线。
在我的解决方案中,我得到:平均损失和平均损失。这是否意味着我的RSME是那么平均损失?
RMSE在解决方案大纲中报告:

R square不可用,因为您需要两种型号:拟合型号和缩小型号。在非线性模型的情况下没有简化模型。(OLS回归中的简化模型是仅具有常数截距项的模型。)
您错误地重新定义了非线性中的默认损失函数。默认损失是最小平方误差。从脚本中可以看出,您希望使用最小平方误差。您的色谱柱公式应导致每次观察的损失,而不是整个样品。所以你的损失公式应该只是平方差。(也就是说,不要计算平方差的总和。)使用这种方法而不是默认损失,我得到:

因此,使用自定义损失会将解决方案大纲中的信息更改为总损失(本例中为SSE),平均损失(本例中为MSE)和Sqrt平均损失(本例中为RMSE)。
我从非线性保存脚本并运行它。数据图仍然显示表示非线性函数图的曲线。