Skip to content

Commit

Permalink
access rho_hat
Browse files Browse the repository at this point in the history
  • Loading branch information
spring-haru committed Jan 12, 2025
1 parent 5bcca8b commit 497b53a
Showing 1 changed file with 52 additions and 8 deletions.
60 changes: 52 additions & 8 deletions 18_ADAS-1.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1103,12 +1103,28 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"残差の自己相関を考えてみよう。ダービン・ワトソン検定統計量は{glue:}`durbin_watson_h`であり,「不明」の領域にある。しかし,[付録B](sec:18-1-appendix_B)ではBreusch-Godfrey検定とLjung-Box検定をおこなっているが,帰無仮説である「残差の自己相関なし」は棄却されてしまう。この結果により,説明変数`deflator_cycle_lag`と誤差項の相関の疑いがあり,`h`の推定値は不偏性も一致性も満たさないことになってしまう。この問題を解決するために,一般化最小二乗法の一つであるコクラン=オーカット推定法(Cochrane-Orcutt推定方)を使い推定をおこなうことにする。\n",
"残差の自己相関を考えてみよう。ダービン・ワトソン検定統計量は{glue:}`durbin_watson_h`であり,「不明」の領域にある。しかし,[付録B](sec:18-1-appendix_B)ではBreusch-Godfrey検定とLjung-Box検定をおこなっているが,帰無仮説である「残差の自己相関なし」は棄却されてしまう。この結果により,説明変数`deflator_cycle_lag`と誤差項の相関の疑いがあり,`h`の推定値は不偏性も一致性も満たさないことになってしまう。この問題を解決するために,一般化最小二乗法の一つであるコクラン=オーカット推定法(Cochrane-Orcutt推定方)を使い推定をおこなうことにする。残差はAR(1)と置いて推定を進める。\n",
"\n",
"コードは簡単で,`statsmodels`の`.ols()`関数の代わりに`.glsar()`関数を使う(`glsar`は**G**eneralized **L**inear **S**quares with **A**utoreg**r**essive Errorsの略)。また,未知の自己相関係数を計算する反復推定をおこなうために,`.fit()`の代わりに次の引数を使い`iterative_fit()`を使用する。\n",
"* `itermax=10`:反復計算を最大で`10`回おこなう。\n",
"* `cov_type='HC1'`:不均一分散の可能性があるため不均一分散頑健推定を使う。\n",
" * 不均一分散頑健推定については[Pythonで学ぶ入門計量経済学ー不均一分散](https://py4etrics.github.io/14_Hetero.html)を参照しよう。"
"$$\n",
"e_{pt}=\\rho_pe_{pt-1}+\\eta_t\n",
"$$ (eq:18-ar1-p)\n",
"\n",
"* $1<\\rho_p<1$\n",
"* $\\eta_t$はホワイト・ノイズ"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"コードは簡単で,`statsmodels`の`.ols()`関数の代わりに`.glsar()`関数を使う(`glsar`は**G**eneralized **L**inear **S**quares with **A**utoreg**r**essive Errorsの略)。ただ,次の点が異なる。\n",
"* 引数は`.ols()`関数と似ている。\n",
" * 第一引数:文字列の推定式(`.ols()`と同じ)\n",
" * 第二引数(`data`):データの指定(`.ols()`と同じ)\n",
" * 第三引数(`rho=1`):`n`次自己回帰過程の`n`を指定(デフォルトは`1`)\n",
"* 未知の自己相関係数を計算する反復推定をおこなうために,`.fit()`の代わりに次の引数を使い`iterative_fit()`を使用する。\n",
" * `itermax=3`:反復計算を最大回数(デフォルトは`3`)。\n",
" * `cov_type='HC1'`(オプショナル):不均一分散頑健推定を指定(不均一分散頑健推定については[Pythonで学ぶ入門計量経済学ー不均一分散](https://py4etrics.github.io/14_Hetero.html)を参照しよう)"
]
},
{
Expand All @@ -1117,9 +1133,12 @@
"metadata": {},
"outputs": [],
"source": [
"res_h_glsar = smf.glsar('deflator_cycle ~ deflator_cycle_lag',\n",
" data=df).iterative_fit(itermax=10,\n",
" cov_type='HC1')\n",
"res_h_glsar = smf.glsar('deflator_cycle ~ deflator_cycle_lag', # 推定式\n",
" data=df, # データの指定\n",
" rho=1 # AR(1)を指定\n",
" ).iterative_fit(itermax=10, # 最大反復計算回数\n",
" cov_type='HC1' # 不均一分散頑健推定\n",
" )\n",
"print(res_h_glsar.summary())"
]
},
Expand Down Expand Up @@ -1159,6 +1178,31 @@
"ep = res_h_glsar.resid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"````{note}\n",
"反復計算をする度に係数の推定値と$\\hat{\\rho}_p$の値は変化するが\n",
"```\n",
"res_h_glsar.history\n",
"```\n",
"を使うと確認することができる。式[](eq:18-ar1-p)の自己相関係数$\\hat{\\rho}_p$の推定値にアクセスするには次のコードを使うと良いだろう。\n",
"```\n",
"res_h_glsar.model.rho\n",
"```\n",
"また,残差$e_{pt}$は\n",
"```\n",
"res_h_glsar.resid\n",
"```\n",
"で,また$\\eta_t$は\n",
"```\n",
"res_h_glsar.wresid\n",
"```\n",
"で抽出できる。\n",
"````"
]
},
{
"cell_type": "markdown",
"metadata": {
Expand Down

0 comments on commit 497b53a

Please sign in to comment.