ダイエットとStataの使い方 6
今回は、時系列分析の入門のようなものを行う。
まず、以前の記事で回帰分析を行ったと思うが
その結果は当然ながらあまり良くなさそうである。
念のために復習しておくとOLS推定を行うと
reg bmi date if date>= date("1/1/2022","MDY",.)
Source | SS df MS Number of obs = 67
-------------+---------------------------------- F(1, 65) = 1109.31
Model | 44.9312816 1 44.9312816 Prob > F = 0.0000
Residual | 2.63274943 65 .040503837 R-squared = 0.9446
-------------+---------------------------------- Adj R-squared = 0.9438
Total | 47.564031 66 .720667136 Root MSE = .20126
------------------------------------------------------------------------------
bmi | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
date | -.0423449 .0012714 -33.31 0.000 -.044884 -.0398058
_cons | 988.86 28.8425 34.28 0.000 931.2575 1046.462
------------------------------------------------------------------------------
となる。左辺がBMIで右辺が定数項と日付である。(データが最新のものなので以前と少し係数が変わっている可能性がある)
そして、このOLSの残差をプロットするために残差の変数を作成する。
predict e, residual
分析を行った後にpredict 作成したい変数名を実行すると予測値を出してくれる。オプションをつけないとxb(y-hat)を作成してくれて、, residualオプションで残差を作成してくれる。
上のものは、残差をeという変数で作成している。
プロットしてみると下のようになり、明らかにランダムな誤差ではないことがわかる。
scatter e date if date>= date("1/1/2022","MDY",.), yline(0)
そして、残差と前日の残差の散布図を作成すると明らかに正の相関がある。
scatter e L.e if date>= date("1/1/2022","MDY",.), xline(0) yline(0)
これは、系列相関と呼ばれるものでありOLSの仮定であった誤差項間では無相関というものが満たされていない。
ここでは、t期の誤差項は前日(t-1期)の誤差項と相関関係にある、すなわち1次の自己回帰(AR)過程にあるような気がする。そこで、ダービン・ワトソン検定を行うことで系列相関を検定していく。方法はいたってシンプルでOLSの後に
estat dwatson
と入力するだけである。
結果は、下のようになった。
. estat dwatson
Durbin–Watson d-statistic( 2, 67) = .5660003
この意味について諸説あるが数字が大体2を下回っていれば系列相関にありそれ以上だと系列相関がないと解釈できる。今回は明らかに下回っているので、系列相関が存在していることがわかる。
ちなみに、系列相関は1次とは限らない、すなわち今期の誤差項が前期以前の誤差項と相関しているという可能性も考えられる。これはDurbin's alternative 検定を実施することで検定することができる。オプションでラグを指定できる。
estat durbinalt, lags(1/10) // lag(1 2 3 ...)みたいなものでも代替可能
さて、系列相関があるときによく使われるのが1階の差分を取る方法である。
y_t =a +b x_t +e_t
y_t-1=a +b x_t-1 +e_t-1
の差を取り、dy_t=b d_t +de_tとする方法である。(noteで数式を入力する方法がわからないので雑であるが許してほしい。dxの定義はdx_t-dx_t-1である。)
差分は変数の前にD.をつけると作成でき、さらに定数項がキャンセルアウトされたことに注意して分析をすると、
. reg D.bmi D.date if date>= date("1/1/2022","MDY",.), noconstant
Source | SS df MS Number of obs = 66
-------------+---------------------------------- F(1, 65) = 6.04
Model | .13836051 1 .13836051 Prob > F = 0.0167
Residual | 1.48935539 65 .02291316 R-squared = 0.0850
-------------+---------------------------------- Adj R-squared = 0.0709
Total | 1.6277159 66 .024662362 Root MSE = .15137
------------------------------------------------------------------------------
D.bmi | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
date |
D1. | -.0457861 .0186325 -2.46 0.017 -.0829978 -.0085745
------------------------------------------------------------------------------
という結果になる。
次回はもう少し進みます。
この記事が気に入ったらサポートをしてみませんか?