これは、区分的連続関数をデータ セットに当てはめる方法に関する一連の投稿の 4 番目です。 各投稿は、シリーズの他のすべての以前の投稿へのリンクから始めるのが好きです。
パート4へ続きます...
導入
このシリーズの以前の投稿では、次のグラフに示すデータ セットに取り組んできました。
Figure 1: Sample Data Set.図 1: サンプル データ セット。
これまで、データ領域のセグメント化と、各領域に関連付けられた次のような曲線の定義について説明してきました。
- 端点での連続性を利用して、セグメント化された方程式の一部の係数を削除します。
- 使用するJMPの数式エディタでは、未知のパラメータと複数の方程式を 1 つの数式にまとめて、未知数を解く準備を整えています。
これで、JMP の非線形プラットフォームを使用して未知のパラメーターを見つけ、最適なモデルを提供する準備が整いました。 次に、次のことについて説明します。
- JMP の非線形プラットフォームを使用して区分方程式を解く方法
- 以下を通じてモデルを収束させます。
- オプションの収束アルゴリズム
- パラメータ制限の設定
- 収束目標
詳しく見てみましょう。
JMPの非線形プラットフォーム
非線形プラットフォームは、ユーザーが選択可能ないくつかの反復推定プロセスの 1 つを使用して、数式エディターに記述された未知のパラメーターを解決します。 以前のブログ投稿で説明したように区分方程式を解くには、まず [分析] --> [特殊モデリング] --> [非線形] に移動します。 次のユーザー インターフェイスが開きます。
Figure 2: The Nonlinear Input Interface図 2: 非線形入力インターフェイス
図 2 では、すでに入力が完了しています。
- 「Y, Response」は元の(測定された)データです。
- 「X、予測子式」は、前のブログ投稿で定義された式列です。
- y 値が測定された x 値は GUI に直接入力されず、数式列の参照を介して含まれることに注意してください。
- 数式列のパラメーターが (その開始値とともに) [オプション/予測子] セクションに表示されることに注意してください。 JMP はこれを自動的に入力します。
「OK」をクリックすると、次のウィンドウが表示されます。
Figure 3: Nonlinear platform, ready to fit図 3: すぐに取り付けられる非線形プラットフォーム
ここでは、これまでのモデルの概要が表示され、未知のパラメーターごとに開始値が示されています。 収束基準 (後述) も確認します。 元のデータ (黒い点) と現在の近似 (パラメーターの開始値を使用した結果の細い黒い線) が表示されます。
ボタンも 4 つあります。
- Go: 反復ソルバー プロセスを開始します。
- 停止: プロセスを停止します (ソルバーが収束していない場合)。
- ステップ: 一度に 1 つの反復ステップを手動で実行して、収束基準と近似プロットがどのように変化するかを観察します。
- リセット: パラメータを開始値にリセットします。
「ステップ」ボタンを数回クリックすると、収束アルゴリズムが動作していることがわかります。
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 回の反復ステップを実行しましたが、収束に達しませんでした。 したがって、より多くのステップを試行するには、「ストップ制限」を増やした方がよいかもしれません (収束までに時間がかかりますが)。
あるいは、Obj Change、Relative Gradient、または Gradient のいずれかを変更したい場合もあります。 3 つの基準のいずれかが「停止制限」を下回る場合、収束が達成されます。
反復推定アルゴリズムの変更
[非線形フィット] の横にある赤い三角形 (図 3 を参照) には、[反復オプション] などのいくつかのオプションが表示されます。 ここでは、3 つの異なる反復アルゴリズムから選択できます。
- ニュートン (デフォルト)
準ニュートンBFGS
準ニュートン SR1
これらのオプションの一部では、「数値導関数のみ」の計算も可能です。 JMP ヘルプごとこれらのアルゴリズムのどれを使用するのが最適であるかについては、特定のデータと適合する方程式に依存するため、コンセンサスはありません。
アルゴリズムを組み合わせることができます。 たとえば、テスト ケースでは、ニュートン法は収束しませんでした。 ただし、Newton メソッドが到達した値を保持し、反復アルゴリズムを変更するだけで、[Go] ボタンをクリックして、Newton アルゴリズムによって達成されたエンドポイントから収束を続行することができます。 なぜこれが機能するのでしょうか? なぜなら、パラメータをより正確に推定することから始めているからです。
そこで、収束を改善するための次のオプションが考えられます。
パラメータ制限の設定
場合によっては、反復アルゴリズムがパラメーターを調整するときに、間違った方向に「離陸」したり、極小値でスタックしたりすることがあります。 これが発生した場合、パラメータが取り得る範囲を制限すると有益な場合があります。
この例の問題では、X1 カットオフ ポイントの値が約 20 である必要があることがおそらくわかっています。 JMP に、X1 が 15 ~ 25 の範囲外にあってはいけないことを伝えたい場合があります。 これは、反復アルゴリズムが作業中に「道に迷う」のを防ぐのに役立ちます。
パラメータ境界は、同じ非線形フィットの赤い三角形の下にあります。 アクティブ化すると、レポートの下部に表が表示され、各変数の推定値と範囲を入力できるようになります。 また、この表のスライダーを一種のプロファイラーとして使用して、プロットに表示される全体的な適合に対する各パラメーターの変更の影響を調べることができることにも注目してください。
図 6 は、パラメータ境界テーブルの例を示しています。
Figure 6: Parameter Bounds Table図 6: パラメータ境界テーブル
収束を達成したら
数式エディターで適切な方程式を作成し、上記のオプションを使用して収束を達成した場合、JMP の非線形プラットフォームはすべての未知のパラメーターの最良の推定値を提供しているはずです。 レポートの上部には「勾配で収束」という旨の注記が表示され、レポートの下部には「解」のセクションが表示され、すべての未知のパラメーターの最終推定値が表示されます。
Figure 7: Converged Parameter Estimates図 7: 収束したパラメータ推定値
また、測定データと最適関数のプロットのすぐ上に、「推定値を保存」ボタンが表示されるはずです。 このボタンをクリックすると、式内の現在のパラメータ値が新しい最適値に置き換えられます。
次のブログ投稿 (シリーズ最後)
この投稿では、非線形プラットフォームを使用して任意の関数 (特に区分関数) を解く方法をまとめました。ただし、非線形プラットフォームには、独自のブログ投稿に値する特別な「モデル ライブラリ」もあります。
したがって、Piecewise シリーズの最後のブログ投稿では、非線形プラットフォームに組み込まれている他の「既定の」モデルをどのように適合させるかについて説明します。 ぜひチェックしてみてください!
5番目の投稿へのリンクがどこにも見つかりません。
5番目の投稿が公開されたかどうか知っている人はいますか?
課題に対して区分的非線形ソリューションが必要になるのはどのような場合ですか?@JerryFishいくつかの例を私に教えてくれました。
- おそらく、出力の増加率が急激に変化するプロセスを監視しているのでしょう。変化がいつ発生したか、および変化点の前後で傾きがどの程度変化したかを知りたいとします。
- おそらくあなたは会社の財務状況を監視しているでしょう。同社は低成長を続けてきたが、新製品の投入により成長率が大きく変化する。
- 新型コロナウイルスの感染率を見ると、山と谷がたくさんあります。おそらく、これらの時間ベースの曲線のさまざまな部分に関数を当てはめたいと思うでしょう。曲線を切り離すのではなく、曲線のすべての部分を一度に区分的にフィットさせたい場合があります。