什麼時候可能需要分段非線性解決方案來應對您的挑戰?@傑瑞魚與我分享了一些例子:
- 也許您正在監視一個輸出成長率突然變化的過程。您想知道變化何時發生,以及變化點之前和之後坡度變化了多少。
- 也許您正在監控公司的財務狀況。該公司一直處於低成長狀態,但新產品的推出導致成長率發生巨大變化。
- 從新冠病毒感染率來看,有許多高峰和低谷。也許您想要將函數擬合到這些基於時間的曲線的各個部分。我們可能不想將曲線分開,而是想一次對曲線的所有部分進行分段擬合。
這很棒@傑瑞魚! 我很想聽聽您對這與 FDE 平台有何關係(或無關)的看法。 也許會有第 6 部分。
這是有關如何將分段連續函數擬合到資料集的系列文章中的第四篇。我喜歡在每篇文章的開頭都提供該系列之前所有其他文章的連結:
繼續第 4 部分...
介紹
在本系列之前的文章中,我們一直在研究下圖所示的資料集:
Figure 1: Sample Data Set.圖 1:範例資料集。
到目前為止,我們已經討論了分割資料區域並定義與每個區域相關的曲線,包括:
- 利用端點處的連續性消除分段方程式的一些係數。
- 使用JMP的公式編輯器將未知參數和多個方程式全部合併到一個公式中,為求解未知數做好準備。
現在我們準備好使用 JMP 的非線性平台來尋找未知參數並給出最佳擬合模型。現在我們討論:
- 如何使用 JMP 的非線性平台求解分段方程
- 透過以下方式使模型收斂:
讓我們仔細看看。
JMP 的非線性平台
非線性平台使用多個使用者可選擇的迭代估計過程之一來求解公式編輯器中描述的未知參數。為了求解先前部落格文章所描述的分段方程,我們先進入分析-->專業建模-->非線性。將開啟以下使用者介面:
Figure 2: The Nonlinear Input Interface圖 2:非線性輸入接口
在圖 2 中,我們已經填寫了輸入。
- 「Y,響應」是原始(測量)數據。
- 「X,預測公式」是上一篇部落格文章中定義的公式列。
- 請注意,測量 y 值時的 x 值不會直接輸入到 GUI 中,而是透過公式列中的參考包含在內。
- 請注意,公式列中的參數(及其起始值)顯示在「選項/預測器」部分。 JMP 會自動為我們填充此內容。
點選確定後,出現如下視窗:
Figure 3: Nonlinear platform, ready to fit圖 3:準備安裝的非線性平台
在這裡,我們看到了迄今為止模型的摘要,其中顯示了每個未知參數的起始值。我們也看到收斂標準(稍後討論)。我們看到原始資料(黑點)和目前擬合(細黑線,由於使用參數起始值而產生)。
我們還有四個按鈕:
- Go:啟動迭代求解器過程。
- 停止:停止此過程(如果求解器未收斂)。
- 步驟:一次手動執行一個迭代步驟,觀察收斂標準和擬合圖如何改變。
- 重置:將參數重置為其初始值。
點擊“Step”按鈕幾次,我們可以看到收斂演算法正在工作:
Figure 4: Convergence In Action圖 4:行動中的融合
在圖 4 的子圖中,請注意,當我們增加步長時,細黑線肯定會向測量資料收斂。此外,參數在變化,收斂標準也在縮小。
點擊“Go”按鈕會自動將我們帶到最終的收斂值,如下所示:
Figure 5: Final Converged Model圖 5:最終的融合模型
在圖 5 中,輸出頂部有一條警告訊息,內容為「失敗:超出最大迭代次數」。我們將在本文後面討論這個問題。但從圖中可以明顯看出,我們已經實現了模型與觀測資料的良好收斂。
關於參數的一些觀察:
- 回想圖 1,X1、X2、X3 和 X4 是分段函數的割點。這些值已從估計的起始值適當偏移,為每個分段函數提供良好的端點。
- 其餘參數對於各曲線段都很重要。例如,a0表示在X1=24.8時測試資料開始累積之前的平均Y水準。
如果我們沒有收斂會發生什麼事?
解決方案不收斂時的選項
如上所述,這個特定的解決方案(技術上)沒有收斂。這意味著預設收斂演算法不符合非線性擬合控制面板中定義的收斂標準。事實上,如果沒有收斂,JMP 不允許我們對結果做太多事情(例如保存新參數)。
所以,我們能做些什麼?有幾種選擇:
更改收斂標準
在圖 5 的標準部分中,我們可以看到目前的收斂標準是什麼,以及我們距離滿足這些標準還有多遠。例如,JMP 在前面的範例中經歷了 60 次迭代步驟,但沒有實現收斂。因此,我們可能想要增加「停止限制」以嘗試更多步驟(以花費更長的時間來收斂為代價)。
或者我們可能希望更改“物件更改”、“相對梯度”或“梯度”。如果三個標準中的任何一個低於“止損限額”,則實現收斂。
改變迭代估計算法
「非線性擬合」旁邊的紅色三角形(參見圖 3)提供了多個選項,包括「迭代選項」。這裡我們有三種不同的迭代演算法可供選擇:
其中一些選項還允許計算“僅數字導數”。 根據 JMP 幫助,對於哪種演算法最適合使用尚未達成共識,因為這取決於擬合的特定數據和方程式。
您可以組合這些演算法。例如,在我們的測試案例中,牛頓法沒有收斂。但您可以保留牛頓法得出的值,只需更改迭代演算法,然後按一下「Go」按鈕即可從牛頓演算法達到的終點繼續收斂。為什麼這有效?因為我們從更好地估計參數開始。
這讓我想到了改善收斂的下一個選擇...
設定參數限制
有時,當迭代演算法調整參數時,它可能會朝錯誤的方向「起飛」或陷入局部最小值等。當發生這種情況時,限制參數可以採用的範圍可能是有益的。
在我們的範例問題中,也許我們知道 X1 截止點的值應約為 20。我們可能想告訴 JMP X1 不得超出範圍 15-25。這將有助於防止迭代演算法在工作時「迷失方向」。
參數界限可以在同一非線性擬合紅色小三角下找到。啟動後,報告底部會出現一個表格,讓您輸入每個變數的估計值和範圍。另外值得注意的是,您可以使用此表中的滑桿作為刻畫器,以檢查更改每個參數對圖中顯示的整體擬合的影響。
圖 6 顯示了參數邊界表的範例:
Figure 6: Parameter Bounds Table圖 6:參數範圍表
一旦我們實現了收斂
如果您在公式編輯器中形成了正確的方程,並且透過上述選項實現了收斂,那麼 JMP 的非線性平台應該會提供所有未知參數的最佳估計值。您將在報告頂部看到“梯度收斂”效果的註釋,在報告底部您將看到“解決方案”部分,顯示所有未知參數的最終估計:
Figure 7: Converged Parameter Estimates圖 7:收斂參數估計
此外,在測量資料和最佳擬合函數圖的上方,現在應該有一個「儲存估計值」按鈕。按一下此按鈕會將公式中的目前參數值替換為新的最佳擬合值。