From 15c3bc16c87ba70cb43afbcee472fa4eb3210ca3 Mon Sep 17 00:00:00 2001 From: Tetsu Haruyama Date: Fri, 3 Jan 2025 10:08:20 +0900 Subject: [PATCH] =?UTF-8?q?BG=20&=20JB=E6=A4=9C=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 18_ADAS-1.ipynb | 154 ++++++++++++------------------------------------ 1 file changed, 38 insertions(+), 116 deletions(-) diff --git a/18_ADAS-1.ipynb b/18_ADAS-1.ipynb index e5def85e..768981cf 100644 --- a/18_ADAS-1.ipynb +++ b/18_ADAS-1.ipynb @@ -852,6 +852,7 @@ "cell_type": "markdown", "metadata": { "editable": true, + "jp-MarkdownHeadingCollapsed": true, "slideshow": { "slide_type": "" }, @@ -1061,7 +1062,7 @@ "\n", "* $e_{pt}\\equiv h\\left(a u_{t}+v_{t}\\right)$\n", "\n", - "説明変数である$p_{t-1}$は誤差項$e_{pt}$とは期間がズレているため$\\text{E}(e_{pt}|p_{t-1})=0$が満たされ,推定値は一致性を満たすことになる(不偏性は満たさない)。\n", + "説明変数である$p_{t-1}$は誤差項$e_{pt}$とは期間がズレているため,仮定に基づくと$\\text{E}(e_{pt}|p_{t-1})=0$が満たされ,推定値は一致性を満たすことになる(不偏性は満たさない)。\n", "\n", "まず,`df`のメソッド`.shift()`を使って`deflator_cycle`を1期ずらした列を`deflator_cycle_lag`として`df`に追加しよう。" ] @@ -1159,10 +1160,11 @@ "metadata": {}, "source": [ "* 残差の自己相関\n", - " * 式[](eq:18-regression-h)は自己回帰モデルとなるため,ダービン・ワトソン検定統計量($d$検定){glue:}`durbin_watson_h`は無効となる。その代わりに,[付録A](sec:18-1-appendix_A)ではダービンの$H$検定をおこなっているが,残差の自己相関を棄却できない。従って,`t`検定は有効ではない。\n", + " * 式[](eq:18-regression-h)は自己回帰モデルとなるため,ダービン・ワトソン検定統計量($d$検定){glue:}`durbin_watson_h`は無効となる。その代わりに,[付録A](sec:18-1-appendix_A)ではBreusch-Godfrey検定とLjung-Box検定をおこなっているが,残差の自己相関を棄却できない。従って,`t`検定は有効ではない。\n", "* 残差の均一分散([付録A](sec:18-1-appendix_A)を参照)\n", " * ブルーシュペーガン検定の$p$値は{glue:}`breuschpagan_h`であり、とホワイト検定の値は{glue:}`white_h`となり,帰無仮説(均一分散)は「通常」の優位性水準では棄却される。\n", - "* 不均一分散自己相関頑健推定(`HAC`)を使うと推定値`h`の`t`検定は有効になるが,その場合の`deflator_cycle_lag`の$p$値は{glue:}`pval_h`であり、推定値の統計的優位性は高いことが確認できる。\n", + "* 不均一分散自己相関頑健推定(`HAC`)\n", + " * この手法を使うと推定値`h`の`t`検定は有効になる。その場合の`deflator_cycle_lag`の$p$値は{glue:}`pval_h`であり([付録A](sec:18-1-appendix_A)を参照)、推定値の統計的優位性は高いことが確認できる。\n", "* 定数項なしで推定しても結果は殆ど変わらない。(試してみよう!)" ] }, @@ -1209,7 +1211,7 @@ "* $d\\equiv -ch$\n", "* $e_{yt}\\equiv hu_t-chv_t$\n", "\n", - "説明変数である$p_{t-1}$は誤差項$e_{yt}$とは期間がズレているため$\\text{E}(e_{yt}|p_{t-1})=0$となり,推定値は一致性を満たすことになる(不偏性は満たさない)。" + "説明変数である$p_{t-1}$は誤差項$e_{yt}$とは期間がズレているため,仮定に基づくと$\\text{E}(e_{yt}|p_{t-1})=0$となり,推定値は一致性を満たすことになる(不偏性は満たさない)。" ] }, { @@ -1285,10 +1287,10 @@ "metadata": {}, "source": [ "* `Durbin-Watson`検定量は{glue:}`durbin_watson_d`であり残差の正の系列相関が疑われる。\n", - " * $t$検定は無効の可能性がある。\n", + " * $t$検定は無効の可能性を拭えない。\n", "* 残差の均一分散([付録B](sec:18-1-appendix_B)を参照)\n", - " * ブルーシュペーガン検定の$p$値は{glue:}`breuschpagan_d`であり、帰無仮説(均一分散)は有意水準`5`%で棄却される。一方、ホワイト検定の$p$値は{glue:}`white_d`となり、帰無仮説(均一分散)は有意水準`5`%で棄却できないが、`10`%では棄却される。従って、不均一分散の可能性も残っている。\n", - "* 不均一分散自己相関頑健推定(`HAC`)を使うと推定値`h`の`t`検定は有効になるが,その場合の`deflator_cycle_lag`の$p$値は{glue:}`pval_d_hac`であり、推定値の統計的優位性は高いことが確認できる([付録B](sec:18-1-appendix_B)を参照)。この結果に基づき`d`の推定値を採用する。\n", + " * ブルーシュペーガン検定の$p$値は{glue:}`breuschpagan_d`であり、帰無仮説(均一分散)は有意水準`5`%で棄却される。一方、ホワイト検定の$p$値は{glue:}`white_d`となり、帰無仮説(均一分散)は有意水準`5`%で棄却できないが、`10`%では棄却される。従って、不均一分散の可能性も残っている。従って,この理由からも$t$検定は無効になるかも知れない。\n", + "* 不均一分散自己相関頑健推定(`HAC`)を使うと推定値`h`の`t`検定は有効になる。その場合の`deflator_cycle_lag`の$p$値は{glue:}`pval_d_hac`であり、推定値の統計的優位性は高いことが確認できる([付録B](sec:18-1-appendix_B)を参照)。この結果に基づき`d`の推定値を採用する。\n", "* 定数項なしで推定しても結果は殆ど変わらない。" ] }, @@ -1562,7 +1564,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "(sec:18-1-appendix_A)=\n", "### 付録A" @@ -1581,74 +1585,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "式[](eq:18-regression-h)は自己回帰モデルとなるため,(通常の)ダービン・ワトソン検定($d$検定)は無効となる。その代わりに,次の統計量で与えられるダービンの$H$検定を使う。\n", - "\n", - "$$\n", - "H = \n", - "\\left(\n", - "1-\\frac{d}{2}\n", - "\\right)\n", - "\\sqrt{\n", - " \\frac{T}\n", - " {\n", - " 1-T\\times\\widehat{\\text{Var}}\n", - " \\left(\n", - " \\hat{\\beta}\n", - " \\right)\n", - " }\n", - "}\n", - "\\sim{\\cal N}(0,1)\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "ここで\n", - "\n", - "* $H$:ダービン$H$検定統計量\n", - "* $d$:ダービン・ワトソン($d$)検定統計量\n", - "* $T$:標本の大きさ\n", - "* $\\widehat{\\text{Var}}\\left(\\hat{\\beta}\\right)$:$p_{t-1}$の係数`h`の分散の推定値\n", - "* 仮定:$1>T\\times\\widehat{\\text{Var}}\\left(\\hat{\\beta}\\right)$\n", - "\n", - "であり,$H$は標準正規分布に従う。\n", + "式[](eq:18-regression-h)は自己回帰モデルとなるため,(通常の)ダービン・ワトソン検定($d$検定)は無効となる。その代わりに,Breusch-Godfrey検定を使う。\n", "\n", "<帰無仮説>\n", "\n", - "$H_0$:自己相関はない" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<両側検定>" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import scipy\n", - "cv_10 = scipy.stats.norm.ppf(0.05)\n", - "cv_025 = scipy.stats.norm.ppf(0.025)\n", - "cv_01 = scipy.stats.norm.ppf(0.005)\n", - "print(f'有意水準10%:Hの絶対値が {abs(cv_10):.3f} よりも大きい場合,帰無仮説を棄却する。')\n", - "print(f'有意水準5%:Hの絶対値が {abs(cv_025):.3f} よりも大きい場合,帰無仮説を棄却する。')\n", - "print(f'有意水準1%:Hの絶対値が {abs(cv_01):.3f} よりも大きい場合,帰無仮説を棄却する。')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<$H$検定統計量の計算>\n", + "$$\n", + "e_{pt}=\\rho_{p}e_{pt-1}+e_{pt}\n", + "$$\n", "\n", - "$d$の計算" + "* $H_0$:$\\rho_{p}=0$\n", + "* $H_A$:$\\rho_{p}\\ne0$" ] }, { @@ -1657,50 +1603,34 @@ "metadata": {}, "outputs": [], "source": [ - "from statsmodels.stats.stattools import durbin_watson\n", - "d = durbin_watson(res_h.resid)\n", - "d" + "from statsmodels.stats.diagnostic import acorr_breusch_godfrey\n", + "\n", + "acorr_breusch_godfrey(res_h, nlags=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "標本の大きさ" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "T = res_h.nobs\n", - "T" + "上から次の値となる。\n", + "* $LM$検定統計量\n", + "* $LM$検定統計量に関する$p$値\n", + "* $F$検定統計量\n", + "* $F$検定統計量に関する$p$値" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "$\\widehat{\\text{Var}}\\left(\\hat{\\beta}\\right)$の計算" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "var_h = res_h.cov_params().loc['deflator_cycle_lag','deflator_cycle_lag']\n", - "var_h" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$H$検定統計量の計算" + "5%の有意水準で帰無仮説を棄却できる。即ち,残差の自己相関があるようだ。\n", + "\n", + "次に,Ljung-Box検定もおこなってみよう。\n", + "\n", + "<帰無仮説>\n", + "\n", + "* $H_0$:残差は独立分布(無相関)\n", + "* $H_A$:$\\rho_{p}\\ne0$" ] }, { @@ -1709,24 +1639,16 @@ "metadata": {}, "outputs": [], "source": [ - "H = ( 1-d/2 ) * ( T /(1-T*var_h) )**(1/2)\n", - "H" + "from statsmodels.stats.diagnostic import acorr_ljungbox\n", + "\n", + "acorr_ljungbox(res_h.resid, lags=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "$p$値の計算" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "1-scipy.stats.norm.cdf(H)" + "左の値が検定統計量であり,右の値が$p$値となる。5%の有意水準で帰無仮説を棄却される。自己相関が疑われる結果である。" ] }, {