From b3cd787615fba80fa0660c27071fe8263127f870 Mon Sep 17 00:00:00 2001 From: Tetsu HARUYAMA Date: Sat, 28 Oct 2023 10:32:45 +0900 Subject: [PATCH] =?UTF-8?q?=E7=B7=9A=E5=BD=A2=E3=83=BB=E9=9D=9E=E7=B7=9A?= =?UTF-8?q?=E5=BD=A2=E7=9B=B8=E9=96=A2=E9=96=A2=E4=BF=82=E3=81=AE=E8=AA=AC?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 12_Asymptotics.ipynb | 57 ++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/12_Asymptotics.ipynb b/12_Asymptotics.ipynb index 63be992e..610e8614 100644 --- a/12_Asymptotics.ipynb +++ b/12_Asymptotics.ipynb @@ -60,6 +60,7 @@ { "cell_type": "markdown", "metadata": { + "heading_collapsed": true, "hidden": true }, "source": [ @@ -124,10 +125,12 @@ "\n", "仮定4a:$\\text{E}(u)=0,\\quad\\text{Cov}(u,x)=0$\n", "\n", - "* 仮定4$\\text{E}\\left(u|x\\right)=0$の意味をもう一度考えてみるために、線形もしくは非線形の任意の関数を$f(.)$とおこう。この関数を使い$u=f(x)$とすると、$u$と$x$には線形もしくは非線形の関係が存在することを意味している。$\\text{E}\\left(u|x\\right)=0$は、$u=f(x)$の関係は存在し**ない**ことを意味する強い仮定になっている。この仮定を少し緩めたものが仮定4aである。任意の線形関数を$h(.)$とすると、$u$と$x$に線形の関係がある場合は$u=h(x)$となる(例えば、$u=1+2x$)。$\\text{Cov}(u,x)=0$は$u=h(x)$の関係が存在しないということを意味しているが、必ずしも$u=f(x)$の関係が存在しないことを意味しない。更に付け加えると、$u$と$x$に非線形の関係がある場合,$\\text{Cov}(u,x)=0$であっても,$\\text{E}\\left(u|x\\right)\\neq0$になりえるのである。即ち,仮定4は仮定4aを意味するが,仮定4aは仮定4を必ずしも意味しないのである。\n", - "* $\\text{Cov}(u,x)=0$は$\\text{E}(ux)=\\text{E}(u)x=0$を意味する。\n", + "* 仮定4$\\text{E}\\left(u|x\\right)=0$の意味をもう一度考えてみるために、線形もしくは非線形のランダムな関係を考えてみよう。[このウィキペディアの画像](https://ja.wikipedia.org/wiki/相関係数#/media/ファイル:Correlation_examples2.svg)にある関係をイメージすると良いだろう。これらの図の横軸と縦軸には2つの変数がり,ここでは$x$と$u$としよう。上段と中断の内,中央の図以外は線形の相関関係を示しており,下段は非線形の相関関係を表示している。$\\text{E}\\left(u|x\\right)=0$は,上段の中央の図を意味する。即ち,$u$と$x$には,線形及び非線形の関係は存在し**ない**ことを意味する強い仮定になっている。\n", + "\n", + "この仮定を少し緩めたものが仮定4aであり,線形の相関関係がないことを意味する。ここで重要な点は,非線形の相関関係は対象外ということである。従って,$\\text{Cov}(u,x)=0$は,上述のウィキペディアの画像の画像の下段の相関関係が存在しないことを意味しない。更に付け加えると、$u$と$x$に非線形の関係がある場合,$\\text{Cov}(u,x)=0$であっても,$\\text{E}\\left(u|x\\right)\\neq0$になりえるのである。即ち,仮定4は仮定4aを意味するが,仮定4aは仮定4を必ずしも意味しない。\n", + "* $\\text{Cov}(u,x)=0$は,$\\text{E}(ux)=\\text{E}(u)x=0$を意味する。\n", "\n", - "仮定4より緩い仮定4aのもとでは,少なくとも一致性を満たす推定量としてより多くの状況に対応できるようになる。" + "仮定4より緩い仮定4aのもとでは,少なくとも一致性を満たす推定量としてより多くの状況に対応でき利点がある。" ] }, { @@ -140,21 +143,32 @@ "### シミュレーション:一致性" ] }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true, + "hidden": true + }, + "source": [ + "#### 仮定" + ] + }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ - "シミュレーションを使い一致性の分布収束を確かめる。仮定1〜4には誤差項の正規性や均一性は含まれていない。この点を捉えるために,誤差項は2つの異なる分布から確率的に発生すると仮定する。具体的には,確率$p$で誤差項は正規分布\n", + "シミュレーションを使い一致性の分布収束を確かめる。仮定1〜4には誤差項の正規性や均一性は含まれていない。この点を捉えるために,誤差項は2つの異なる分布から生成されたランダム変数の加重平均と仮定する。まず,次の正規分布\n", "\n", "$$u_N\\sim\\text{Normal(0,0.25)}$$\n", "\n", - "で発生し,$1-p$で\n", + "のウェイトは$p$とし,次のランダム変数のウェイトは$1-p$とする。\n", "\n", "$$u_c=\\frac{v-1}{\\sqrt{2}},\\qquad v\\sim\\chi^2(1)$$\n", "\n", - "が発生する。$\\chi^2(1)$は自由度1のカイ二乗分布で,平均は1,標準偏差は$\\sqrt{2}$。誤差項の確率密度関数は2つの確率密度関数の「加重平均」\n", + "ここで,$\\chi^2(1)$は自由度1のカイ二乗分布であり,$u_c$の平均は1,標準偏差は$\\sqrt{2}$となる。\n", + "誤差項の確率密度関数は2つの確率密度関数の「加重平均」\n", "\n", "$$\n", "u = pu_N+(1-p)u_c\n", @@ -162,7 +176,7 @@ "\n", "となる。\n", "* 正規分布の分散は0.5であり,カイ二乗分布の分散は1であるため仮定5は満たされない。(説明変数によって誤差項の分散が異なる。)\n", - "* また明らかに仮定6も満たされない。\n", + "* 明らかに仮定6も満たされない。\n", "* $\\text{E}(u_N)=\\text{E}(u_c)$であるため$\\text{E}(u)=0$。" ] }, @@ -256,11 +270,11 @@ "source": [ "for i in range(n): # (1)\n", " \n", - " prob = 0.05 # (2)\n", - " dist_1 = norm.rvs(loc=0, scale=u_sd, size=1) # (3)\n", - " dist_2 = (chi2.rvs(1, size=1) - 1) / np.sqrt(2) # (4)\n", + " p = 0.05 # (2)\n", + " dist_1 = np.random.normal(loc=0, scale=u_sd, size=1) # (3)\n", + " dist_2 = (np.random.chisquare(1, size=1) - 1) / np.sqrt(2) # (4)\n", " \n", - " error = prob*(dist_1)+(1-prob)*(dist_2) # (5)\n", + " error = p*(dist_1)+(1-p)*(dist_2) # (5)\n", " u[i] = error # (6)" ] }, @@ -279,15 +293,16 @@ "> 6. この誤差項を`u[]`の`i`番目に代入。\n", "\n", "<コメント>
\n", - "(5)では`dist_1`と`dist_2`の混合として`error`を生成しているが,`prob`で`dist_1`が発生し`1-prob`で`dist_2`が発生するように設定することも可能である。例えば,次のコード。\n", + "(5)では`dist_1`と`dist_2`の加重平均として`error`を生成しているが,`p`を確率として解釈し,\n", + "`p`で`dist_1`が発生し`1-p`で`dist_2`が発生するように設定することも可能である。例えば,次のコード。\n", "```\n", "for i in range(n):\n", "\n", - " random_var = {'normal':norm.rvs(loc=0, scale=u_sd, size=1),\n", - " 'chi2':(chi2.rvs(1, size=1)-1)/np.sqrt(2)}\n", + " random_var = {'normal':np.random.normal(loc=0, scale=u_sd, size=1),\n", + " 'chi2':(np.random.chisquare(1, size=1)-1)/np.sqrt(2)}\n", " dist = ['normal','chi2']\n", "\n", - " choice = np.random.choice(dist, p=[0,1])\n", + " choice = np.random.choice(dist, p=[0.05,1-0.05])\n", " error = random_var[choice]\n", " u[i] = error\n", "```\n", @@ -324,9 +339,9 @@ "outputs": [], "source": [ "x=np.linspace(-2.0,2.0,100) # 図を作成するために-2から2までの横軸の値を設定\n", - "kde_model=gaussian_kde(u) # カーネル密度推定を設定\n", - "ufunc = kde_model(x) # カーネル密度推定を使い誤差項の分布を推定\n", - "plt.plot(x, ufunc) # 誤差項の分布をプロット\n", + "kde_model=gaussian_kde(u) # カーネル密度推定を設定\n", + "ufunc = kde_model(x) # カーネル密度推定を使い誤差項の分布を推定\n", + "plt.plot(x, ufunc) # 誤差項の分布をプロット\n", "pass" ] }, @@ -393,7 +408,7 @@ }, "outputs": [], "source": [ - "b0 = 1 # 定数項\n", + "b0 = 1 # 定数項\n", "b1 = 0.5 # 説明変数の係数" ] }, @@ -789,7 +804,7 @@ }, "outputs": [], "source": [ - "b0 = 1 # 定数項\n", + "b0 = 1 # 定数項\n", "b1 = 0.5 # 説明変数の係数" ] }, @@ -1717,7 +1732,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.4" + "version": "3.10.8" }, "nteract": { "version": "0.15.0"