📈

Juliaで見る漸近理論 (確率変数の数列の収束)

2022/05/16に公開

確率収束

確率変数でない数列の収束に引き続き,確率変数の数列の収束について見ていきます.

確率収束の定義

  • 任意の \epsilon > 0 に対して,N \rightarrow \infty ならば P(|x_{N} - a | > \epsilon) \rightarrow 0 となるとき,確率変数の数列\{x_N: N=1, 2, \ldots \} は定数a確率収束する(converge in probability) といい,

    x_N \xrightarrow{p} a \quad \text{as} \quad N \rightarrow \infty

    と書く.このときa確率極限(probability limit) といい,
    \text{plim } x_N = a

    書く.

  • 特にa=0のとき,\{ x_N \}\mathcal{o}_p(1)であるといい,

    x_N = \mathcal{o}_p(1)

    または
    x_N \xrightarrow{p} 0

    と書く.

  • 任意の \epsilon > 0 に対して,全てのN > N_{\epsilon}について P(|x_N | \geq b_\epsilon) \leq \epsilon となるようなb_\epsilon \leq \inftyと整数 N_{\epsilon} が存在するとき,確率変数の数列\{ x_N \}確率有界である(bounded in probability) といい,

    x_N = \mathcal{O}_p(1)

    と書く.

確率収束の漸近記号の定義

  • 確率変数でない正の数列を\{ a_N \}とし,\frac{x_N}{a_N} = \mathcal{o}_p(1)であるとき,確率変数の数列\{ x_N: N=1, 2, \ldots \}

    \mathcal{o}_p(a_N)

    であるという.

  • 確率変数でない正の数列を\{ a_N \}とし,\frac{x_N}{a_N} = \mathcal{O}_p(1)であるとき,確率変数の数列\{ x_N: N=1, 2, \ldots \}

    \mathcal{O}_p(a_N)

    であるという.

確率変数でない数列\{a_N\}の収束の確認ではNが非常に大きいときの1要素a_Nの値そのものに注目していました.一方,確率変数の数列\{ x_N \}の収束の確認するときは,x_Nは確率変数なので値の大きさは考えません.代わりにNが非常に大きいときのx_Nについてランダムサンプリングをして,0と大きく異なる値が出る確率(頻度)が小さくなっていく様子に注目します.

Juliaでプロットして確率収束の感覚をつかめるようにします.

確率収束の例

例: z を確率変数としx_N \equiv \sqrt{N}zとすると,x_N = \mathcal{O}_p(N^{\frac{1}{2}}).また,任意の\delta > \frac{1}{2}において,x_N = \mathcal{o}_p(N^{\delta})

z \sim \text{Uniform}(0, 1)なら,

using Plots, LaTeXStrings, Random
N_inf = 1_000
x(N) = sqrt(N) * rand() # z ~ Univariate(0, 1)

anim = @animate for N in 1:10:N_inf
    Random.seed!(1234)
    x_N = x.(Vector(1:N))
    # check convergence in probability
    # scatter x_N.
    p1 = scatter(x_N, xlabel=L"N", ylabel=L"x_N \equiv \sqrt{N}z", legend=false, title=L"z \sim Uniform(0, 1)")
    # scatter x_N / N^δ
    p2 = scatter(x_N ./ Vector(1:N).^(2), xlabel=L"N", ylabel=L"N^{-\delta}x_N", label=L"x_N=\mathcal{o}(N^{2})", legend=:topleft)
    scatter!(x_N ./ Vector(1:N).^(1/2), label=L"x_N=\mathcal{O}(N^{1/2})")
    scatter!(x_N ./ Vector(1:N).^(1/3), label=latexstring(L"N^{-(1/3)}x_N ", "is unbounded"))
    plot(p1, p2, layout=(2, 1))
end
gif(anim, "6_plim_uni.gif", fps=60)

plim_uni

上のプロットは確率変数x_N \equiv \sqrt{N}zのサンプリング結果です.サンプルサイズNが大きくなるほど,サンプルの範囲は広くなっていきます.\frac{x_N}{N^{\delta}}のサンプリングを表した下のプロットでは\delta=2>\frac{1}{2}のとき,Nが小さい間は\frac{x_N}{N^{\delta}}=\frac{\sqrt{N}z}{N^2}のサンプリング結果にばらつきはありますが,Nが十分大きくなった後は全てのサンプルが0に収束していることが分かります.「Nが大きくなると確率変数\frac{x_N}{N^{2}}が定数である確率極限0に収束する」ということを確率収束の漸近記号\mathcal{o}_p(\dot)で表すと,

\text{plim}\frac{x_N}{N^{2}} = 0 \quad \text{or} \quad \frac{x_N}{N^{2}} = \mathcal{o}_p(1)

なので,

x_N = \mathcal{o}_p(N^{2})

と表すことができます.Nが大きくなるにつれ,確率変数x_Nのサンプリングのばらつきのスケールは大きくなりますが,N^{2}の発散と比べると小さく,確率収束するというイメージです.\delta=\frac{1}{2}のとき,\frac{x_N}{N^{\delta}}=\frac{\sqrt{N}z}{\sqrt{N}}=zであるため,サンプリングのばらつきのスケールは変わらず,確率有界となります.

x_N = \mathcal{O}_p(N^{\frac{1}{2}})

一方\delta=\frac{1}{3}<\frac{1}{2}の場合,N^{\frac{1}{3}}の発散がx_Nのサンプリングのばらつきの発散に追い付かないため,\frac{x_N}{N^{\delta}}=\frac{\sqrt{N}z}{N^{\frac{1}{2}}}のばらつきは無限大に飛んでいきます(Nが大きくなるにつれ下のプロットの縦軸の目盛が大きくなっていきます).

z \sim \text{Normal}(0, 1)でも同様に確率収束を確認できます.

N_inf = 1_000
Random.seed!(1234)

xnorm(N) = sqrt(N) * randn() # z ~ Normal(0, 1)
anim = @animate for N in 1:10:N_inf
    # check convergence in probability
    Random.seed!(1234)
    x_N = xnorm.(Vector(1:N))
    # scatter x_N 
    p1 = scatter(x_N, xlabel=L"N", ylabel=L"x_N \equiv \sqrt{N}z", legend=false, title=L"z \sim N(0, 1)")
    # scatter x_N / N^δ
    p2 = scatter(x_N ./ Vector(1:N).^(2), xlabel=L"N", ylabel=L"N^{-\delta}x_N", label=L"x_N=\mathcal{o}(N^{2})", legend=:topleft)
    scatter!(x_N ./ Vector(1:N).^(1/2), label=L"x_N=\mathcal{O}(N^{1/2})")
    scatter!(x_N ./ Vector(1:N).^(1/3), label=latexstring(L"N^{-(1/3)}x_N ", "is unbounded"))    
    plot(p1, p2, layout=(2, 1))
end
gif(anim, "7_plim_norm.gif", fps=60)

plim_norm

Reference
Wooldridge, J. M. (2010). Econometric analysis of cross section and panel data second edition. MIT press.

Discussion