Excel が 2 次多項式回帰 (カーブ フィッティング) を計算するために使用するアルゴリズムは何ですか? サンプルコードまたは疑似コードはありますか?
4 に答える
Excelが与えるのと同じ式を返すソリューションを見つけました:
最小二乗放物線で使用される値の拡張行列をまとめます。http://www.efunda.com/math/leastsquares/lstsqr2dcurve.cfmの合計方程式を参照してください。
ガウス消去法を使用して行列を解きます。これを行うC#コードは次のとおりですhttp://www.codeproject.com/Tips/388179/Linear-Equation-Solver-Gaussian-Elimination-Csharp
それを実行した後、行列 (M) の残りの値は、Excel で指定された係数と等しくなります。
どうにかして R^2 を見つけることができるかもしれませんが、私の目的には必要ありません。
グラフの多項式近似曲線は、LINEST ワークシート関数 ( http://support.microsoft.com/kb/828533 ) のような QR 分解法に基づく最小二乗法を使用します。与えられた (x,y) データの 2 次または 2 次トレンドは、 を使用して計算できます=LINEST(y,x^{1,2})
。
Worksheet.Evaluate
メソッドを使用して、C# からワークシートの数式を呼び出すことができます。
提供するデータと、曲線がそれらのポイントを通過することがどれほど重要であるかに応じて、そのようなことを行う方法がたくさんあるため、状況によって異なります。
多項式の係数よりも多くのポイントがあると思います(たとえば、2次曲線の場合は3つ以上のポイント)。
それが正しい場合、実行できる最善の方法は最小二乗フィッティングです。これにより、すべてのポイントと結果の曲線の間の平均二乗誤差を最小化する係数が計算されます。
これは 2 次なので、2 次項を作成して線形回帰を行うことをお勧めします。
元。z~second_order(x,y) を実行している場合、z~first_order(x,y,x^2,y^2, xy) を実行するのと同じです。