プロが教えるわが家の防犯対策術!

二次関数の近似式を求めるために最小二乗法を用いると画像のような式を使うようなのですが、どうやって得られた式なのでしょうか?
式を導くまでの過程を詳しく教えて頂けないでしょうか?

「二次関数の近似式を求めるために最小二乗法」の質問画像

A 回答 (2件)

二次関数の近似式を


 y = a0 + a1*x + a2*x^2    ①
とおくのですよね?

これに、実際に観測された (x1, y1), (x2, y2), ・・・, (xn, yn) を当てはめて、「偏差の2乗の合計」(二乗偏差和)が最小となるように a0, a1, a2 を決めるというのが「最小二乗法」です。

「偏差」とは、観測された y1, y2, ・・・, yn と、①式から計算される(その曲線上にあればこうなるという値)
 y1' = a0 + a1*x1 + a2*(x1)^2
 y2' = a0 + a1*x2 + a2*(x2)^2
  ・・・
 yn' = a0 + a1*xn + a2*(xn)^2
との差です。

つまり

 二乗偏差和 S
= (y1 - y1')^2 + (y2 - y2')^2 + ・・・ + (yn - yn')^2
= [ y1 - (a0 + a1*x1 + a2*x1^2) ]^2 + [ y2 - (a0 + a1*x2 + a2*x2^2) ]^2 + ・・・ + [ yn - (a0 + a1*xn + a2*xn^2) ]^2     ②

です。
これを展開すれば、 (x1, y1), (x2, y2), ・・・, (xn, yn) は実際に観測された値なので「定数」であり、「a0, a1, a2 の2次式」になることは分かりますね?

この「a0, a1, a2 の2次式」である S を最小にする a0, a1, a2 を見つけるには
・S を極大または極小にする a0 は、∂S/∂a0 = 0 となる a0 である
・S を極大または極小にする a1 は、∂S/∂a1 = 0 となる a1 である
・S を極大または極小にする a2 は、∂S/∂a2 = 0 となる a2 である
ことを利用します。
この3つの連立式から、S を「極小または極大」にする a0, a1, a2 のセットが求まります。それが「極小」で、全区間で「唯一」なら「最小」ですから、それによって「S を最小にする a0, a1, a2 のセット」が求まることになります。
(偏微分がゼロになるのは「極小」であるための「必要条件」でしかありませんので(「極大」かもしれない)、本当に「極小」かどうかはきちんと確かめないといけません)

画像の式の真ん中の表記は、具体的に偏微分の計算するとこうなりますよ、というものが書いてあります。
実際にやってみれば、例えば②の第1項を展開すれば
  [ y1 - (a0 + a1*x1 + a2*x1^2) ]^2     ←③
= [ y1 - a0 - a1*x1 - a2*x1^2 ]^2
= -a0^2 - 2a0[ y1 - a1*x1 - a2*x1^2 ] + [ y1 - a1*x1 - a2*x1^2 ]^2  ←④ a0 と「それ以外」で展開
= -(a1*x1)^2 - 2(a1*x1)[ y1 - a0 - a2*x1^2 ] + [ y1 - a0 - a2*x1^2 ]^2  ←⑤ a1*x1 と「それ以外」で展開
= -(a2*x1^2)^2 - 2(a2*x1^2)[ y1 - a0 - a1*x1 ] + [ y1 - a0 - a1*x1 ]^2  ←⑥ a2*x1^2 と「それ以外」で展開
となるので、

④を a0 で偏微分すれば
 ∂④/∂a0 = -2a0 - 2[ y1 - a1*x1 - a2*x1^2 ] = -2[y1 - (a0 + a1*x1 + a2*x1^2)] ←③の二乗前(「偏差」そのもの)に「-2」をかけたもの
になるし、同様に
 ∂⑤/∂a1 = -2a1*x1^2 - 2x1[ y1 - a0 - a2*x1^2 ] = -2x1[y1 - (a0 + a1*x1 + a2*x1^2)] ←③の二乗前(「偏差」そのもの)に「-2x1」をかけたもの
 ∂⑥/∂a2 = -2a2*(x1^2)^2 - 2(x1^2)[ y1 - a0 - a1*x1 ] = -2(x1^2)[y1 - (a0 + a1*x1 + a2*x1^2)] ←③の二乗前(「偏差」そのもの)に「-2(x1^2)」をかけたもの
ということで、各々の項が式に書かれたようなものになることが分かると思います。

式は、外側から「ぼっと」見ているだけでは意味が分からないことが多いので、自分で「求めたいものを具体的に書き下してみる」ことをしてみてください。そうすると、途中経過としてそこに書かれている式が出てきて、その意味が「体感」できるはずです。
    • good
    • 1
この回答へのお礼

どうもありがとうございます!

お礼日時:2018/08/27 06:05

Sを実際に書き下してみましょう。


Sは D(x,y;a_0,a_1,a_2)=y-f(x) を全ての計測点(x_i,y_i)で二乗和を取ったものです。
それをa_0,a_1,a_2の関数と見たものがSで、Sが最小のとき誤差Dの二乗和が最小になるわけです。
Sは変数a_0,a_1,a_2の連続関数ですから、最小になるときには各変数での微分係数はゼロになります。Sを書き下して実際に微分してみれば画像の式になることが分かるでしょう。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセルの関数による近似式の求め方

(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)からグラフを書き近似曲線を描かせ、2次の多項式を表示させているんですが、大量にデータがあり、この作業に大変時間を要しています。調べに調べた結果、y=a*x+bの形は関数で表示可能なことは確認取れているんですが、2次の式は未だ発見できません。
非常に困っています。回答の方よろしくお願いします。また何か不明な点があったら何でも言って下さい。

Aベストアンサー

y の範囲 A2:A10
x の範囲 B2:B10
として、
C2=B2^2
C10までコピー。

と、しておけば
係数 a =INDEX(LINEST(A2:A10,B2:C10),1)
係数 b =INDEX(LINEST(A2:A10,B2:C10),2)
定数 c =INDEX(LINEST(A2:A10,B2:C10),3)

Q二次関数の近似式を求めるために最小二乗法を利用したいのですが、二次関数の近似式を求める最小二乗法の式

二次関数の近似式を求めるために最小二乗法を利用したいのですが、二次関数の近似式を求める最小二乗法の式はどうやって導くのでしょうか?
導く過程を教えて頂けると大変有り難いです。

Aベストアンサー

http://www.ics.nara-wu.ac.jp/~u1025145/20130719.pdf

Qエクセルで二次の最小二乗法をやるやり方を教えてください。

エクセルで二次の最小二乗法をやるやり方を教えてください。

Aベストアンサー

多項式近似で各係数を出したいならLINEST関数を使います。

以下のページの作業列を使用しないで2次式の係数a,b,cを求める方法が最も簡単な操作になります。

http://atiboh.sub.jp/t09takoushiki2.html

Qエクセルの関数による近似式の求め方

エクセル初級者です。こちらのHPに以下ような質問がありますが、近似曲線2次の多項式の切片=0とした、y=a*x^2+b*xの関数表示の方法をお教えいただけないでしょうか。元データのXに0、Yに0を追加し、この回答のようにしてみてもうまくいきません。
ご回答どうぞよろしくお願いします。

http://oshiete.goo.ne.jp/qa/2815553.html

『(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)からグラフを書き近似曲線を描かせ、2次の多項式を表示させているんですが、大量にデータがあり、この作業に大変時間を要しています。調べに調べた結果、y=a*x+bの形は関数で表示可能なことは確認取れているんですが、2次の式は未だ発見できません。
非常に困っています。回答の方よろしくお願いします。また何か不明な点があったら何でも言って下さい。』

それに対しての回答は以下の内容です。
『y の範囲 A2:A10
x の範囲 B2:B10
として、
C2=B2^2
C10までコピー。

と、しておけば
係数 a =INDEX(LINEST(A2:A10,B2:C10),1)
係数 b =INDEX(LINEST(A2:A10,B2:C10),2)
定数 c =INDEX(LINEST(A2:A10,B2:C10),3)

エクセル初級者です。こちらのHPに以下ような質問がありますが、近似曲線2次の多項式の切片=0とした、y=a*x^2+b*xの関数表示の方法をお教えいただけないでしょうか。元データのXに0、Yに0を追加し、この回答のようにしてみてもうまくいきません。
ご回答どうぞよろしくお願いします。

http://oshiete.goo.ne.jp/qa/2815553.html

『(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)...続きを読む

Aベストアンサー

=INDEX(LINEST(A2:A10,B2:C10,FALSE),1)
=INDEX(LINEST(A2:A10,B2:C10,FALSE),2)
=INDEX(LINEST(A2:A10,B2:C10,FALSE),3)
とします。定数項はまぁ計算しなくてもゼロです。


#参考
X=0に対して定数cを通る近似をしたいときはY-cに対して同じ式で計算します。


人気Q&Aランキング