非線性模型擬合中的參數約束我正在擬合以下形式的雙指數增長模型:

我想限制參數估計,使 dmax1< dmax2 且rate1
有沒有辦法在非線性平台中做到這一點?
回复:非線性模型擬合中的參數約束感謝您的參考@Byron_JMP 。在這種情況下,它不是分段模型。實際的物理過程是兩個反應以兩種不同的速率同時發生,產生相同的輸出結果。測量的輸出是兩個反應輸出的總和,但每個反應都發生在同一個反應系統中,因此不能獨立測量它們。
回复:非線性模型擬合中的參數約束我寫了一些與此幾乎相同的 JSL,它確實解決了問題。感謝分享。
回复:非線性模型擬合中的參數約束我想知道在沒有約束的情況下非線性擬合後處理估計是否會更容易。 我假設 dmax1 和 Rate1 參數估計將一起進行,並且 dmax2 和 Rate2 參數估計將一起進行,即使 dmax1 和 Rate1 參數估計並不總是首先。 然後,要實現您想要的順序,您只需在保存估計表後交換數據表中的順序即可。 這個例子展示了我的想法:
Names Default to Here( 1 );
dt = New Table( "Double Exponential Models",
Add Rows( 20 ),
New Column( "dmax1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "dmax2",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate2",
Values( J( 20, 1, Random Uniform() ) )
)
);
Wait( 5 );
For Each Row(
If( :rate1 > :rate2,
temp = :dmax1;
:dmax1 = :dmax2;
:dmax2 = temp;
temp = :rate1;
:rate1 = :rate2;
:rate2 = temp;
);
);
回复:非線性模型擬合中的參數約束Sue Walsh 在一次演講中談到了這種類型的模型紙不久前在 JMP Discovery 工作。
幻燈片中有關分段模型的註釋有點稀疏,但我認為您將能夠了解如何設置它的要點。
回复:非線性模型擬合中的參數約束這更多的是為了方便而不是數學。實際問題是我正在將非線性模型擬合到作為 DOE 的一部分生成的多個動力學曲線。我展示的非線性模型是我們認為描述該過程的理論模型,該模型由兩個獨立的反應組成,一個是“慢”反應,另一個是“快”反應。慢反應速率約為快反應速率的1/100。
問題是,當我將非線性模型擬合到每個配置文件時,有時估計的“rate1”參數是最小的,而其他時候“rate1”參數是最大的。JMP 不知道我希望rate1 為慢速。當我保存參數估計值時,我必須進行一些數據處理以確定哪個速率是慢速率,哪個速率是快速率。最終我想使用 DOE 中的因素來預測慢反應速率和快反應速率。
不過,我的一部分想法是,強制這個約束也可能使模型擬合更穩定?但也許不是。我不知道。
回复:非線性模型擬合中的參數約束如果您相信該假設是正確的,那麼我認為最好的模型應該在沒有約束的情況下找到這樣的估計。 否則,這些數據就是反對這一假設的證據。
定制模型將保持不變。 我認為你必須引入約束作為對損失函數的懲罰。 當違反約束時,懲罰會很高。
回覆:非線性模型擬合中的參數約束非線性擬合的約束條件是否有更新?
報告底部有最小值/最大值設定 - 但是當我點擊“執行”時,擬合結果超出了最小值和最大值範圍。

回覆:非線性模型擬合中的參數約束嗨@hogi ,
你使用的是哪個資料集?
謝謝,
本
回覆:非線性模型擬合中的參數約束嗨@Ben_BarrIngh ,
實際上,我試圖擬合兩個峰,並試圖限制中心點的擬合範圍。
當峰值尾部與擬合曲線不匹配時,很難擬合峰值;)
在嘗試調整擬合效果時,我想知道是否可以透過限制 x1/x2 掃描的範圍來優化擬合效果。
……並想知道平台是否有辦法進行限制。
) dt = New Table( "spectra",
Add Rows( 200 ),
New Column( "X",
Formula( Row() )
),
New Column( "input",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1},
(h1 * W ^ 2) / ((:X - 70) ^ 2 + W ^ 2) + (h2 * W ^ 2) / ((:X - 130)
^ 2 + W ^ 2)
)
)
),
New Column( "fit",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1, x1 = 0, x2 = 200},
h1 * Exp( -(:X - x1) ^ 2 / (2 * W ^ 2) ) + h2 *
Exp( -(:X - x2) ^ 2 / (2 * W ^ 2) )
)
)
)
);
dt << Nonlinear( Y( :input ), X( :fit )
回覆:非線性模型擬合中的參數約束嗨@hogi ,
您需要先透過參數邊界(紅色三角形)進行設置,然後再點擊“開始”,以防止超出限制。雖然下方圖表中的低值/高值應該會更新,但或許還是應該向support@jmp.com 回報此問題。
這樣能解決你想要達成的目標嗎?
謝謝,
本
回覆:非線性模型擬合中的參數約束啊,太好了,謝謝 
有人能把@Ben_BarrIngh的回覆標記為「解決方案」嗎?

回覆:非線性模型擬合中的參數約束@Ben_BarrIngh ,補充問題:
當我使用“By”擬合多個光譜時,有沒有什麼技巧可以設定全域約束和鎖定?

例如:
new column ("by",Nominal, set each value(mod(row(),3)));
Nonlinear( Y( :input ), X( :fit ), by(:by),
SendToByGroup( Bygroup Default,
Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100),
h1( 0, 2 ),
x2( 100, 200)
) )
)
回覆:非線性模型擬合中的參數約束針對全域約束的變通方法:
new column ("by",Nominal, set each value(mod(row(),3)));
nl = Nonlinear( Y( :input ), X( :fit ), by(:by) );
nl << Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100 ),
h2( 0, 2 ),
x2( 100, 200 )
)
鎖似乎沒有被記錄下來。
可以透過設定最小值=最大值來設定約束條件。