該程式碼對於其他範例運行良好,但對於少數範例,它顯示該圖不收斂。
“考慮更寬鬆的收斂標準或在“迭代選項”下選擇“接受當前估計”。 失敗:無法降低目標函數
程式碼如下,我附上了它不能正常工作的範例。
Names Default To Here( 1 );
dt= currentdatatable();
New Column( "Model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Parameter(
{p = 0.29, x0 = 15, m0 = 1.2, x1 = 30, m1 = 5},
p * (1 - Exp( -(X_mm / x0) ^ m0 )) + (1 - p) * (1
-Exp( -(X_mm / x1) ^ m1 ))
)
),
);
nlin = dt << Nonlinear(
SendToByGroup( Bygroup Default ),
Y( Ln_C ),
X( :Model ),
Iteration Limit( 1000 ),
Unthreaded( 1 ),
QuasiNewton BFGS,
//Newton,
Finish,
By( Sample_ID ),
);
感謝您提供範例。 這在診斷問題時很有用。
我以交互方式啟動了非線性並擬合每個樣本的模型。 我看到同樣的通知。 它是基於您用來確定收斂的標準。 沒有一個標準得到滿足。 另一方面,你也很適合! 上交所規模相對較小。
我不認為這是數據問題或模型不合適。 事實上,我單擊了“重置”,然後單擊“開始”。 每個樣本均以梯度準則第二次收斂。
謝謝先生,透過點擊“重置”和“執行”,數據將按梯度準則收斂。 但是,如果我想在腳本中自動化它而不是重置圖表,因為我想使用此輸出進行進一步分析,該怎麼辦? 並且只有這些樣本在第一次嘗試中沒有被收斂,那麼如何使用腳本自動執行此操作。
如果收斂失敗似乎需要一次 Reset 和 Go,那麼您的腳本可以將訊息連續發送到每個樣本。 請參閱 Reset 和 Go 訊息的腳本索引。
