- 締切済み
2次の最小二乗法
1次(ax+b)の最小二乗法は、 http://szksrv.isc.chubu.ac.jp/lms/lms1.html に載っている通りに求めるのですが、 2次(ax^2+bx+c)のa,b,cを求める式はどうなるのですか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- stomachman
- ベストアンサー率57% (1014/1775)
ん? No.3は便乗質問でしょうか。それともonigajoさんの別ハン?(質問者が質問やコメントを追加したいときには、補足[回答した人全員にメールが行く]もしくはお礼[お礼を付けた回答者にメールが行く]の機能を使って書き込みます。) もちろん、先に数値を入れちゃっても構いません。 計算を例えばExcelでやるんだったら、 まず、No.2のご回答にある行列PとベクトルAを作る。ただし n = N SX1 = Σx[i] SX2 = SX1^2 = Σ(x[i]^2) SX1X2 = Σ(x[i]^3) SX2^2 = Σ(x[i]^4) Sy = Σy[i] SX1 = Σx[i]y[i] SX2y = Σ(x[i]^2)y[i] です。Σ… の計算はSUMPRODUCT関数を利用すれば簡単です。 次にPの逆行列をMINV関数で計算させます。 そして、これをMMULT関数でベクトルと掛け算すれば出来上がりです。 出て来るベクトルはc,b,aの順になっています。(No.2の最後の式は勘違いでは?) なお、ExcelでMINVやMMULTなど、複数のcellに渡って答が出て来る関数を使うときには、操作にちょっと嫌らしいコツが要りますので、マニュアルでご確認を。
- sisiiwa
- ベストアンサー率0% (0/0)
回答ありがぞうございます。 stomachmanさん、最後の3元連立一次方程式は、 先にデータを入れて計算してから、a,b,cを解いたほうがよいのですか?
- age_momo
- ベストアンサー率52% (327/622)
基本的には#1さんが書いていることと同じなのですが、今、x^2は 回帰分析においては定数となりますのでxとは別の説明変数ととらえると y=aX1+bX2+c という複数の説明変数の重回帰分析を行うことになります。 つまり、 (x,y)=(1,5)(2,9)(3,16)(4,24)(5,33)(6,44) というデータが得られたとして (X1,X2,y)=(1,1,5)(4,2,9)(9,3,16)(16,4,24)(25,5,33)(36,6,44) というデータの重回帰分析を行えばいいことになります。 重回帰分析においては考え方は#1さんの偏微分ですが、結局、 行列P= |n SX1 SX2 | |SX1 SX1^2 SX1X2 | |SX2 SX1X2 SX2^2 | の逆行列P^-1と行列A= |Sy | |SX1y| |SX2y| から P^-1Aを計算すると(c,a,b)が求まります。 上の例でいくと |3.20 0.250 -1.950 || 131| |0.25 0.027 -0.188 ||2978| |-1.95 -0.188 1.37 || 596| =|1.5 | |0.768| |2.482| でy=0.768x^2+2.482x+1.5 となります。
- stomachman
- ベストアンサー率57% (1014/1775)
モデル y = ax^2 + bx + c をデータ(x[i], y[i]) (i=1,2,…,N)にあてはめる話ですね。この式はa,b,cを変数、x,yを定数と見ると一次式です。だから、線形最小二乗法が素直に使えます。 残差ε[i]を ε[i] = ax[i]^2 + bx[i] + c - y[i] として、その二乗の総和E E = Σ(ε[i]^2) (Σはi=1,2,…,Nについての総和) を最小化するために、 ∂E/∂a = 0 ∂E/∂b = 0 ∂E/∂c = 0 という連立方程式を解きます。それぞれ左辺の偏微分を計算すると、 ∂E/∂a = 2Σ(ax[i]^2 + bx[i] + c-y[i])(x[i]^2) ∂E/∂b = 2Σ(ax[i]^2 + bx[i] + c-y[i])x[i] ∂E/∂c = 2Σ(ax[i]^2 + bx[i] + c-y[i]) 右辺を展開して ∂E/∂a = 2aΣ(x[i]^4) + 2bΣ(x[i]^3) + 2cΣ(x[i]^2)-2Σ(y[i](x[i]^2)) ∂E/∂b = 2aΣ(x[i]^3) + 2bΣ(x[i]^2)+ 2cΣx[i]-2Σ(y[i]x[i]) ∂E/∂c = 2aΣ(x[i]^2 )+ 2bΣx[i] + 2cΣ1-2Σy[i] 従って、 aΣ(x[i]^4) + bΣ(x[i]^3) + cΣ(x[i]^2) = Σ(y[i](x[i]^2)) aΣ(x[i]^3) + bΣ(x[i]^2)+ cΣx[i] = Σ(y[i]x[i]) aΣ(x[i]^2 )+ bΣx[i] + cΣ1 = Σy[i] ここで、Σの部分は全部データから計算できる定数です。(なお、Σ1=Nです。)だからこれは、a,b,cを未知数とする3元連立一次方程式になっています。後はがんばって解くだけ。(もちろん3元連立一次方程式を解くための公式もありますが。)