漸近理論#

関係する定理#

マルコフの不等式#

マルコフの不等式

非負の確率変数Xと任意の定数c>0に対して、

P(Xc)E[X]c

が成立する。

証明

指示関数I()をもちいて

E[X]=E[X{I(Xc)+I(X<c)}]E[XI(Xc)]cE[I(Xc)]=cP(Xc)

マルコフの不等式は 期待値よりも極端に大きな値を取る確率が低い ことを意味する。

例えばc=5E[X]とおけば

P(X5E[X])E[X]5E[X]=15
from scipy.stats import expon
mean = 2  # 期待値 E[X] = 2 の指数分布は scale=2
dist = expon(scale=mean)
threshold = 5 * mean # 5 * E[X]
# P(X >= 5 * E[X]) = 1 - CDF(threshold)
prob = 1 - dist.cdf(threshold)
upper_bound = 1 / 5 # マルコフの不等式の上限
print(f"P(X >= 5E[X]) = {prob:.2g}")
print(f"Markov Inequality Upper Bound = {upper_bound:.2g}")
P(X >= 5E[X]) = 0.0067
Markov Inequality Upper Bound = 0.2

チェビシェフの不等式#

チェビシェフの不等式

E[X]=μ,Var[X]=σ2がいずれも有限な確率変数Xを考える。

このとき任意のc>0に対して

P(|Xμ|c)σ2c2

が成立する。

証明

Y=(Xμ)2とおき、Yにマルコフの不等式

P(Xc)E[X]c

を適用すれば、

P(Yc2)E[Y]c2=σ2c2

ここで Yc2|Xμ|c であるから P(Yc2)=P(|Xμ|c) となり

P(|Xμ|c)σ2c2

が成立する

チェビシェフの不等式は 期待値から値が極端に離れる確率が低い ことを意味する。

例えばc=5σとおけば

P(|Xμ|5σ)σ25σ2=15

例:2シグマ範囲#

期待値からの2シグマ範囲には正規分布だと95%が入る。

import numpy as np
from scipy.stats import norm
mu = 0       # 平均
sigma = 1    # 標準偏差
lower = mu - 2 * sigma
upper = mu + 2 * sigma
dist = norm(loc=mu, scale=sigma)
# P(∣X−μ∣ ≤ 2σ) = P(μ−2σ ≤ X ≤ μ+2σ) = cdf(μ+2σ) - cdf(μ-2σ)
p_2sigma = dist.cdf(upper) - dist.cdf(lower) # P(-2σ <= X <= 2σ)
print(f"P(∣X−μ∣ ≤ 2σ) = {p_2sigma:.3f}")
P(∣X−μ∣ ≤ 2σ) = 0.954
Hide code cell source
import matplotlib.pyplot as plt

# plot
fig, ax = plt.subplots(figsize=[5, 2])
x = np.linspace(-4, 4, 100)
y = dist.pdf(x)
ax.plot(x, y)

# 2σ points
x_2sig = dist.ppf(dist.cdf(2 * sigma))
ax.axvline(mu + x_2sig, color="gray", linestyle="--")
ax.axvline(mu - x_2sig, color="gray", linestyle="--")
ax.text(mu + x_2sig, 0.1, f" μ+2σ", ha="left", color="gray")
ax.text(mu - x_2sig, 0.1, f"μ−2σ ", ha="right", color="gray")

x = np.linspace(mu - x_2sig, mu + x_2sig, 100)
y = dist.pdf(x)
ax.fill_between(x, y, 0, alpha=0.3)

ax.text(0, 0.01, f"P(μ−2σ ≤ X ≤ μ+2σ)\n= {p_2sigma:.3f}", ha="center", color="darkblue")
plt.show()
../../_images/c69ce4956fb68baae3345189481a8997bfe33f94ea7782d1efef2c4fb3da09b9.png

チェビシェフの不等式による任意の分布への下限は

P(X[μ2σ,μ+2σ])=P(|Xμ|2σ)1P(|Xμ|2σ)=1σ24σ2=114=34

となり、正規分布以外でも75%以上あることがわかる

例:期待値からのズレ#

n個のサンプルX1,,Xnがi.i.d.であるとする。これらのサンプルの標本平均X¯がその期待値E[X¯]からどれだけズレるかを見てみる

P(|X¯E[X¯]|c)Var[X¯]c2

もしc=1なら、標本平均と期待値の差の絶対値が1以上になる確率はその分散が上限になるということ。

P(|X¯E[X¯]|1)Var[X¯]=Var[X]n

例えばサンプルが商談から成約したかどうかであり、真の成約率が20%という確率変数XBer(p=0.2) の実現値だとすると、E[X¯]=0.2,Var[X¯]=p(1p)=0.16で、このときc=0.1とおけば

P(|X¯0.2|0.1)0.16n×0.12=16n

となり、仮にn=100なら16%程度の確率が上限(分布によらない上限)になることがわかる

Hide code cell source
import numpy as np
from scipy.stats import bernoulli
import matplotlib.pyplot as plt
p = 0.2
dist = bernoulli(p=p)
n = 100
c = 0.1
bound = p * (1-p) / n / c**2

n_trials = 1000
x_bars = []
for i in range(n_trials):
    x = dist.rvs(size=n, random_state=i)
    x_bars.append( x.mean() )

fig, ax = plt.subplots(figsize=[4, 3])
ax.hist(x_bars, bins=10)
ax.axvline(p + c, color="gray", linestyle="--")
ax.axvline(p - c, color="gray", linestyle="--")

x_bars = np.array(x_bars)
is_over = np.abs(x_bars - p) >= c

ax.set(
    # title=r"histogram of $\bar{X}$",
    title=r"num of |$\bar{X} - p| \geq c$ =" + f"{is_over.sum()}, num of simulations={n_trials} (→{is_over.sum()}/{n_trials} = {is_over.sum() / n_trials:.1%})",
    xlabel=r"$\bar{X}$",
    ylabel="count"
)
fig.show()
../../_images/9b1d669715fe02314d62c1a4435070542d53a072664858ae0eceda87c39b85f1.png

ヘフディングの不等式#

チェビシェフの不等式は幅広い範囲で有用ではあるものの、裾の確率を緩く評価してしまう。

例えば上記の期待値からのズレの例

P(|X¯0.2|0.1)16n

では、n=1000であっても「1.6%は起こるかもしれない」というかなり安全に寄った評価をしてしまう。これは実際にシミュレーションすると0%になるレベルの稀少な事例にもかかわらず。

Hide code cell source
import numpy as np
from scipy.stats import bernoulli
import matplotlib.pyplot as plt
p = 0.2
dist = bernoulli(p=p)
n = 1000
c = 0.1
bound = p * (1-p) / n / c**2

n_trials = 1000
x_bars = []
for i in range(n_trials):
    x = dist.rvs(size=n, random_state=i)
    x_bars.append( x.mean() )

fig, ax = plt.subplots(figsize=[4, 3])
ax.hist(x_bars, bins=10)
ax.axvline(p + c, color="gray", linestyle="--")
ax.axvline(p - c, color="gray", linestyle="--")

x_bars = np.array(x_bars)
is_over = np.abs(x_bars - p) >= c

ax.set(
    # title=r"histogram of $\bar{X}$",
    title=r"num of |$\bar{X} - p| \geq c$ =" + f"{is_over.sum()}, num of simulations={n_trials} (→{is_over.sum()}/{n_trials} = {is_over.sum() / n_trials:.1%})",
    xlabel=r"$\bar{X}$",
    ylabel="count"
)
fig.show()
../../_images/c84b8204a17a5b07e664b8b3257fb34aa2ba12ac420c06a98c8d2a5e9fde2aa2.png

このような裾の確率をより厳しく抑えるのに役立つのが ヘフディングの不等式 (Hoeffding’s inequality)

定理(ヘフディングの不等式)

X1,,Xnを独立な確率変数、X¯=1ni=1nXiをその標本平均とし、各Xiは区間[ai,bi]に値を取るとすると、任意のc>0に対して

P(|X¯E[X¯]|c)2exp(2n2c2i=1n(biai)2)

が成り立つ。

すべての確率変数Xiが区間[0,1]に値を取る場合はもっと単純に

P(|X¯E[X¯]|c)2exp(2nc2)

となる。

前出の成約率の例だと、n=1000,c=0.1のとき

P(|X¯E[X¯]|0.1)2exp(2×1000×0.12)=2exp(20)4.122×1090

となり、観測結果に近くなる。

しかしn=100,c=0.1のとき

P(|X¯E[X¯]|0.1)2exp(2×100×0.12)=2exp(2)0.27

とだいぶ大きく評価することもある様子…?

確率収束#

(定義)確率収束

サンプル数nを無限大に近づけていったとき、確率変数列{Xn}n=1が定数cから外れる確率がゼロに近づく、すなわち任意のε>0について

limnP(|Xnc|>ε)=0,ε>0

ならば、「Xnc確率収束(convergence in probability)する」といい

plimnXn=c

あるいは

Xnpc,(n)

と表す

平均2乗収束#

(定義)平均2乗収束

確率変数列{Xn}n=1が確率変数X平均2乗収束するとは

limnE[(XnX)2]=0

となることをいう。

チェビシェフの不等式を使うと「確率変数列がある確率変数に平均2乗収束するならば確率収束する」という命題が導かれる → 大数の法則

例:大数の法則#

(定理)大数の(弱)法則

X1,,Xnはi.i.d.で、E[|Xi|]<とする。このとき、標本平均X¯μ=E[Xi]に確率収束する

limnP(|X¯μ|>ε)=0
証明

ε>0を任意の定数とする。E[X¯n]=μ,Var[X¯n]=σ2/nであるから、X¯にチェビシェフの不等式を適用すれば

P(|X¯nμ|ε)σ2nε2

となる。ここでnとおけば右辺は0に収束するから

ε>0,limnP(|X¯nμ|ε)=0

例:推定量の一致性#

推定量θ^が真のパラメータθに確率収束

θ^pθ

するとき、その推定量は一致性(consistency)を持つという

概収束#

(定義)概収束

確率変数列{Xn}が確率変数Xについて

P({ω|limn|Xn(ω)X(ω)|=0})=1

となるとき概収束(almost sure convergence)するといい、

XnX a.s. 

と表す。

分布収束#

(定義)分布収束

確率変数列{Xn}が確率変数X分布収束(convergence in distribution)するとは、

limnP(Xnx)=P(Xx)=FX(x)

FX(x)のすべての連続な点で成り立つことをいい、XndXと表す。

例:中心極限定理#

確率変数列{Xn}n=1はi.i.d.で平均μ:=E[Xi]と分散σ2:=Var(Xi)が存在するとする。このとき、以下の分布収束が成り立つ

n(X¯μ)dN(0,σ2),n

ここでN(0,σ2)X¯の漸近分布(asymptoticd distribution)という。

(※なお、N(0,σ2)は正規分布を表す記号ではなく、正規分布に従う確率変数を意味するので注意。ややこしい記法だが標準的でよく見られる書き方である)

なお、上の式は

X¯μd1nN(0,σ2)=N(0,σ2n)

のように整理できる。

σ2は未知だが標本分散を用いてもこの関係性が成り立つ)

参考#