プロが教える店舗&オフィスのセキュリティ対策術

1次(ax+b)の最小二乗法は、
http://szksrv.isc.chubu.ac.jp/lms/lms1.html
に載っている通りに求めるのですが、
2次(ax^2+bx+c)のa,b,cを求める式はどうなるのですか?

A 回答 (4件)

 ん? 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に渡って答が出て来る関数を使うときには、操作にちょっと嫌らしいコツが要りますので、マニュアルでご確認を。
    • good
    • 0

回答ありがぞうございます。


stomachmanさん、最後の3元連立一次方程式は、
先にデータを入れて計算してから、a,b,cを解いたほうがよいのですか?
    • good
    • 0

基本的には#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.200.250-1.950 || 131|
|0.250.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
となります。
    • good
    • 0

モデル


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元連立一次方程式を解くための公式もありますが。)
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!