- 締切済み
最小二乗法
n組のデータ (xi, yi) を,特定点(X0, Y0) を通る直線 y = ax+b でフィッティングしたい。最小二乗法で係数a,bを求めるため の式を導きなさい。 という問題で 各データの残差を二乗した和が最小になるときのa,bを求めるのですが 特定点(X0,Y0)を通るにはどうすればよいでしょうか? ただ単に、特定点を通らずフィッティングするやりかたはわかるのですが・・・。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- boobee0125
- ベストアンサー率72% (35/48)
回答No.3
特定点を通る場合のフィッティングは求めるパラメータが一つなので下記のようにできます。 (xi - Xo)・a = yi - Yo (i = 1,2,...,n) を最小自乗法の正規方程式の形に変形して Σ(xi - Xo)^2・a = Σ{(xi - Xo)・(yi - Yo)} これから a = Σ{(xi - Xo)・(yi - Yo)}/Σ(xi - Xo)^2 この結果から直線の方程式は下記のように求まります。 y - Yo = a・(x - Xo) ⇔ y = a・x - a・Xo + Yo ⇔ y = a・x + b ここに b = Yo - a・Xo
noname#210617
回答No.2
x,yを(X0, Y0)を原点とするX,Yに変換し、原点を通る直線にフィッティングする。
- oyaoya65
- ベストアンサー率48% (846/1728)
回答No.1
>特定点(X0, Y0) を通る直線 y = ax+b どうしても2つの定数a,bでフィッティングしたければ a(x-X0)+b(y-Y0)=0 とおくしかないですね。 ひとつの定数aでよければ y=a(x-X0)+Y0 ただし、この式ではx=X0の直線は表せませんのでx=X0はフィッティング対象から除かれます。
お礼
返信ありがとうございます。 Σ(i=1..n)xi=sx Σ(i=1..n)yi=sy Σ(i=1..n)xi*yi=sxy Σ(i=1..n)xi^2=sxx とおくとします。 特定点を通らずにフィッティングした結果 a=(n*sxy-sxsy)/(n*sxx-sx^2) b=(sy*sxx-sx*sxy)/(n*sxx-sx^2) となりました。 ここで Y0 = aX0 + bから a=Y0-b/X0 , b=Y0-aX0を求め これからを上式のa,bに代入し、a,bを求めるやりかたではできないでしょうか?? ためにそれでやって、プログラムをたてたところ答えと違ったので違うと思うのですが・・・。