モデルの調整 - ラインごとの最適化みなさん、
問題を紹介しようとしています。100行6列(PAR1、PAR2、VAR、MOD、MEA、ERR)のテーブルを想像してください。
MOD列には、3つのパラメーターP1、P2、およびVARに依存するモデル(=式)が含まれています。
列P1とP2の値は固定されており、行ごとに異なります。
VAR列には3番目のパラメーターが含まれており、最初のデフォルト値で初期化されています(1としましょう)。具体的な例を挙げると、MODに次の公式が含まれているとしましょう。MOD [i] = 3.P1 [i] ^ 3 + COS(2.P2 [i] ^ 2 + VAR [i])
MEA列には、各行ごとに異なる測定結果が含まれています。
そして最後に、ERRはモデルと測定値の間の2次誤差を含みます。
私の目標は、モデルの値が測定値と等しくなるように、各行についてVAR [i]の値を求めることです。
Excelでは、ソルバーを使用します。また、各行について、アルゴリズム(単純二分法、ニュートン、ブレントなど)が関数F [i] = MOD [i] - MEA [i]の根を求めるJSLスクリプトを想像することもできます。量ERR [i]を最小にする。
しかし、それを実行するためのより簡単な代替策があるかどうか私は疑問に思いますか?JMPプラットフォームでは?
あなたの親切な答えを待っています。
ステファン
シモンズ:コミュニティでの私の最初の貢献/質問に夢中になってください!:-)
モデルチューニング - ラインごとの最適化 ループ内の各行を最適化して、VARの最適値を取得するために、必要なコスト関数にminim()を使用することができます。 このように設定する方法は次のとおりです。
dt = Current Data Table();
cost = expr(abs(3 * :PAR1[i] ^ 3 + Cos( 2 * :PAR1[i] ^ 2 + VAR1 ) - :MEA[i]));
for(i=1, i<=N Row(dt), i++,
:VAR[i] = Minimize(cost,{VAR1(-5, 5)});
);1つの誤差のみを最適化しているため(2乗誤差の合計を最小化する必要はありません)、2乗せずに誤差の単純なコスト関数を使用することができます。
minim()で使用できる引数は他にもたくさんあります。 Constrained Minimize()も調べてください。 これは私が設定した私のテストテーブルでうまくいったようで、MEAに妥当な値を設定する限りエラーは最小限に抑えられました。
再:モデルのチューニング-行ごとの最適化パーフェクト!これら2つの関数-最小化()および制約付き最小化()-が存在することは知りませんでした。ご協力ありがとうございます