2008-06-12

自己回帰モデル

レポートの解答例

Sub renshu2()
i = 2
Do While Cells(i, 1) <> ""
 i = i + 1
Loop
last = i - 1

For i = 2 To last - 1
 Cells(i, 7) = Log(Cells(i, 5)) - Log(Cells(i + 1, 5))
Next i

wa = 0
For i = 2 To last - 1
 wa = wa + Cells(i, 7)
Next i
heikin = wa / (last - 2)
Cells(3, 9) = heikin '平均

wa = 0
For i = 2 To last - 1
 wa = wa + (Cells(i, 7) - heikin) ^ 2
Next i
hensa = Sqr(wa / (last - 2))
Cells(4, 9) = hensa '標準偏差

End Sub

回帰の復習

2変量(X,Y)の観測データ(x1,y1),(x2,y2),...,(xn,yn)に対して、回帰式
Y=aX+b+ε
を考えた時、二乗和
Σi=1n {yi-(axi+b)}2
を最小にするaとbを求めたいと思います。まずxとyそれぞれの平均
μX=1/n Σi=1n xi
μY=1/n Σi=1n yi
を求めておくと
a=(XとYの共分散)/(Xの分散)
  1/n Σi=1n (xi-μX)(yi-μY)
=--------------------------------
  1/n Σi=1n (xi-μX)2
および
b=μY-aμX
で求められます。
またXがどれくらいYの予測に役立っているかを測るために、まずXを用いずにYを予測することを考えて
Σi=1n (yi-c)2
を最小にするcを求めます。するとc=μYになります。これらのa,b,cを用いて
Σi=1n (yi-c)2 と比べて Σi=1n {yi-(axi+b)}2 が凄く小さくなっていたらXはYの予測に役立っていて、逆にあまり小さくなっていなかったらXはYの予測に役立っていない、ということになります。数値的に評価するためにどれくらい小さくなったかという比
   Σi=1n (yi-c)2-Σi=1n {yi-(axi+b)}2
R2=------------------------------------------
        Σi=1n (yi-c)2
を計算して、これを決定係数と呼びます。

自己回帰

2変量の回帰ではx1を用いてy1を予測し、x2を用いてy2を予測し,…,xnを用いてynを予測するのですが、時系列の場合はx1を用いてx2を予測し、x2を用いてx3を予測し,…,xn-1を用いてxnを予測します。
つまりY=aX+b+εの代わりにXi=aXi-1+b+εを考え、 2変量回帰の時のn組のデータ(x1,y1),(x2,y2),...,(xn,yn)の代わりにn-1組のデータ(x1,x2),(x2,x3),...,(xn-1,xn)を用います。
計算方法は大体2変量回帰の場合と同じです。但し2変量の時の全く同じように計算するならμXは1番目からn-1番目までのn-1個の平均で
μX=1/(n-1) Σi=1n-1 xi,
μYは2番目からn番目までのn-1個の平均で
μY=1/(n-1) Σi=2n xi
と計算する筈ですが、自己回帰の場合はμXに相当する部分もμYに相当する部分も共通の
μ=1/n Σi=1n xi
を使います。分散もXに相当する部分はxn-1までっぽいですが
1/n Σi=1n (xi-μ)2 で計算します。
また共分散はn-1組に対して計算しているのでn-1個足してn-1で割る、つまり
1/(n-1) Σi=2n (xi-μ)(xi-1-μ)
と計算するべきに思えますが、nで割って
1/n Σi=2n (xi-μ)(xi-1-μ)
で計算します。
決定係数も同様に、一つ前のデータを予測に使わない時の誤差Σi=2n (xi-c)2と比べて、一つ前のデータを予測に使った時の誤差 Σi=2n {xi-(axi-1+b)}2 がどれくらい小さくなったかを比較します。

練習

TOPIXのデータに関して、この方法で予測してください。さらに決定係数を求めて、この予測がどれくらい役立つか調べてください。

0 件のコメント: