我正在嘗試找到報告適合我的實驗數據的非線性模型的最佳方法。
我設法編寫了一個適合非線性模型的腳本,並使用損失函數找到參數估計值。 然後報告每個參數估計值和非線性誤差。
但是,我也想獲得結果擬合的 RMSE 或 R 平方。 這不適用於非線性模型嗎?或者我需要增加額外的分析步驟嗎?
互動式運行非線性分析平台時,產生的圖顯示實驗數據和模型曲線。 但是,自動運行腳本時僅顯示實驗數據。 有人知道為什麼會發生這種情況? 我在下面的腳本中遺漏了什麼嗎?
有人可以提供一些文獻/書籍/鏈接,以便能夠獲取數據與結果模型擬合的圖表並報告擬合的 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" );
謝謝馬克。
我已經按照您的建議更改了損失函數。 我已經運行了擬合,但仍然看不到繪圖上的模型曲線。
在我的解決方案中,我得到:平均損失和平方平均損失。 這是否意味著我的 RSME 就是平均損失?
解決方案大綱中報告了 RMSE:

R 方不可用,因為您需要兩個模型:擬合模型和簡化模型。 在非線性模型的情況下沒有簡化模型。 (OLS 迴歸中的簡化模型是僅具有常數截距項的模型。)
您錯誤地重新定義了非線性中的預設損失函數。 預設損失是最小二乘誤差。 從您的腳本看來您想要使用最小平方法誤差。 您的列公式應該會導致每個觀察值的損失,而不是整個樣本的損失。 所以你的損失公式應該只是平方差。 (也就是說,不計算平方差之和。)使用這種方法而不是預設損失,我得到:

因此,使用自訂損失會將解決方案大綱中的資訊變更為總損失(本例為 SSE)、平均損失(本例為 MSE)和平方平均損失(本例為 RMSE)。
我從非線性保存了腳本並運行它。 數據圖仍然顯示代表非線性函數圖的曲線。