ポアソン分布のパラメータλの区間推定

区間推定に関する記事が続いていますがラストはポアソン分布$Po(\lambda)$のパラメーター$\lambda$の区間推定です。

平均も分散も$\lambda$なので、中心極限定理から$(\sum X_i -n\lambda)/\sqrt{n\lambda}$の分布が、$n$が十分大きい時は標準正規分布で近似できることを使います。
あとは結果だけ紹介すると、$\lambda$の推定量$\hat{\lambda}$の信頼係数$1-\alpha$の信頼区間は、次の式で近似的に求めることができます。
$$
\left[
\hat{\lambda} – Z_{\alpha/2}\sqrt{\frac{\hat{\lambda}}{n}}, \
\hat{\lambda} + Z_{\alpha/2}\sqrt{\frac{\hat{\lambda}}{n}} \
\right].
$$

二項分布の母数pの区間推定

実は地味に使うことがある二項分布の母比率の区間推定の式を紹介します。
今回もテキストは統計学入門(赤本)。
途中、近似計算が多く、細かく説明すると手間なので、詳細はテキストの方で追っていただくとして、
ここでは方針と結果だけ紹介しましょう。

前提として二項分布$B(n,p)$は、$n$が大きくなると直接計算するのが難しくなります。
(二項係数がどんどん大きくなるからです)
そのため、方針としては$n$が大きくなると、二項分布が正規分布で近似できることを使います。

まず、母集団分布が母数pのベルヌーイ分布($n=1$の二項分布) $B(1,p)$の時、
母数$p$は$\hat p = \bar X$で推定します。
この時、$\sum X_i$は$B(n,p)$に従います。
これに対して、$\hat p = \bar X = \sum X_i/n$で推定されます。

そして、信頼水準$1-\alpha$の$p$の信頼区間は近似的に次の式で求めることができます。
$$
\left[\hat{p}-Z_{\alpha/2}\sqrt{\hat{p}(1-\hat{p})/n}, \hat{p}+Z_{\alpha/2}\sqrt{\hat{p}(1-\hat{p})/n}\right].
$$

ここで、$Z_\alpha$は、標準正規分布の$\alpha$パーセント点です。

カイ二乗分布

このブログでもカバン検定の説明の中などで登場しており、
昨日のt分布の紹介の中でも使われているので、明らかに順番がおかしくなってしまっていますが、
カイ二乗分布について紹介してなかったので紹介しておこうと思います。

統計学入門(赤本)ではt分布同様定義は紹介されますが確率密度関数の式は登場しないようです。
不思議ですね。

定義

$Z_1, Z_2,\dots, Z_k$を独立な標準正規分布$N(0, 1)$に従う確率変数とします。
ここで、
$$
\chi^2 = Z_1^2+Z_2^2+\cdots+Z_k^2
$$
とすると、確率変数$\chi^2$が従う確率分布を自由度$k$の$\chi^2$分布と呼びます。
そしてそれを$\chi^2(k)$と書きます。

自由度$k$の$\chi^2$分布の確率密度関数$f_k(x)$は、$x\geq0$に対して、次のように書けます。
$$
f_k(x) = \frac{1}{2^{\frac{k}{2}}\Gamma(\frac{k}{2})}x^{\frac{k}{2}-1}e^{-\frac{x}{2}}
$$
また$x<0$に対しては、$f_k(x)=0$です。

スチューデントのt分布

母平均の信頼区間を出したり、t検定を行ったりする時に登場するt分布の紹介です。

今回も主に東京大学出版会の統計学入門を参考に書きますが、
なぜ過去の本にはt分布の確率密度関数の具体的な式が登場しないので、そこだけは別の本を参照しました。
(シリーズの緑色の本、青色の本にも登場してないように見えます。数表があれば十分という判断かな?)

たとえば、マセマのキャンパスゼミシリーズの統計学にベータ関数を用いた表記が登場します。
Wikipediaなどにあるのはガンマ関数を使った表記ですが同じ式です。

定義
二つの確率変数$Y$と$Z$が次の条件を満たすものとします。
(a) $Z$は標準正規分布$N(0,1)$に従う。
(b) $Y$は自由度$k$の$\chi^2$分布$\chi^2(k)$に従う。
(c) $Z$と$Y$は独立である。

今、確率変数$t$を
$$
t = \frac{Z}{\sqrt{Y/k}}
$$
と定義すると、$t$が従う確率分布を自由度$k$の$t$分布(もしくはスチューデントの$t$分布)と言います。
これを$t(k)$と表します。

自由度$k$が大きくなり、特に$30$以上くらいになると、ほぼ正規分布と変わらない分布になり、$k$が$\infty$になると一致します。

自由度$k$の$t$分布の確率密度関数$f(t)$は次のようになります。
$$
f(t) = \frac{\Gamma(\frac{k+1}{2})}{\sqrt{k\pi}\Gamma(\frac{k}{2})}\left(1+\frac{t^2}{k}\right)^{-(\frac{k+1}{2})}
$$

ベータ関数$B(x,y)$を使うと次のようにも書けます。
$$
f(t) = \frac{1}{\sqrt{\pi}B(\frac{k}{2},\frac{1}{2})}\left(1+\frac{t^2}{k}\right)^{-(\frac{k+1}{2})}
$$

母分散の信頼区間

今回は母分散の信頼区間の求め方を紹介します。
母集団の分布は正規分布 $N(\mu, \sigma^2)$とし、標本を$X = (X_1, X_2, \dots, X_n)$とします。
$\alpha$などの記号の意味も母平均の信頼区間の記事と同じです。

標本分散を$s^2 = \sum_{i=1}^n\frac{(X_i-\bar X)^2}{n-1}$とすると、
$(n-1)s^2/\sigma^2$は、自由度$n-1$の$\chi^2$分布、$\chi^2(n-1)$に従います。
そのため、$\chi^2(n-1)$のパーセント点$\chi_{1-\alpha/2}^2(n-1)$と、$\chi_{\alpha/2}^2(n-1)$を使って、次式のように書けます。

$$
P(\chi_{1-\alpha/2}^2(n-1) \leq (n-1)s^2/\sigma^2 \leq \chi_{\alpha/2}^2(n-1)) = 1 – \alpha.
$$

括弧の中を整理すると次のようになります。(分子と分母を逆転させる必要がありますが、3つの値が全部正なので簡単です。)
$$
P(\frac{(n-1)s^2}{\chi_{\alpha/2}^2(n-1)} \leq \sigma^2 \leq \frac{(n-1)s^2}{\chi_{1-\alpha/2}^2(n-1)}) = 1 – \alpha.
$$

よって母分散の信頼区間は次のように求まります。
$$
[\frac{(n-1)s^2}{\chi_{\alpha/2}^2(n-1)} , \frac{(n-1)s^2}{\chi_{1-\alpha/2}^2(n-1)}].
$$

普段の業務だと母平均に比べて、母分散の信頼区間を求めようと思うことが少ない、(というかほぼ無い)ので、
この式に馴染みがなく、ちょっと違和感を感じます。
nが大きくなるとこの区間は狭まっていくのでしょうか。
信頼区間なので、この区間中に標本分散$s^2$が含まれてるはずなのですが、
自分にはまだその感覚も身についてません。
普段のクロス表の検定で使わないような、自由度のでかいカイ2乗分布のパーセント点を意識して無いですからね。

区間推定の実験(95%信頼区間の信頼度は本当に95%なのか)

前回の記事で、正規分布に従う確率変数の母平均の区間推定を行う式を紹介しました。
参考:母平均の区間推定

これで、実際に信頼区間を計算すると、結構広い区間が求まります。
特にサンプルサイズが30とか50の時は、もっと絞り込めるんじゃないか?と感じる結果になることが多いです。
ぶっちゃけた話、95%信頼区間に99%くらいの確率で母平均が含まれてそうに見えます。

ということで、既知の分布から繰り返し標本を抽出し95%信頼区間を計算して、
その中に母平均が含まれている割合が95%に近い値になるのか試してみました。
対象とする分布は $N(7, 2^2)$, 一回の標本のサイズは50、実験回数は100としました。

試したコードがこちらです。


from scipy.stats import norm
from scipy.stats import t
import numpy as np
import matplotlib.pyplot as plt

# 母集団の平均と標準偏差を定義
mu = 7
sigma = 2

# サンプルサイズ(一回の実験で撮る標本数)とサンプル数(標本のセットの数)
sample_size = 50
sample_count = 100
# 1-alpha が 0.95 なので、 alpha ha 0.05
alpha = 0.05

# 母集団が従う確率分布
norm_rv = norm.freeze(loc=mu, scale=sigma)
# 区間推定の計算に使う、自由度が sample_size - 1 のt分布
t_rv = t.freeze(sample_size-1)

# 計算した信頼区間たちを格納しておく配列
result = []
for i in range(sample_count):

    sample = norm_rv.rvs(size=sample_size)
    ave = sample.mean()
    s = sample.std()

    L = ave - t_rv.isf(alpha/2) * s/np.sqrt(sample_size)
    U = ave + t_rv.isf(alpha/2) * s/np.sqrt(sample_size)

    result.append([L, U])

fig = plt.figure(figsize=(12, 6))
ax = fig.add_subplot(1, 1, 1)
for i, r in enumerate(result):
    # 真の平均が信頼区間の中に入っているかどうかで色を変える
    if r[0] > mu or r[1] < mu:
        color = 'm'
    else:
        color = 'c'

    ax.vlines(x=i, ymin=r[0], ymax=r[1], colors=color)

# 真の平均の値で横線を引く
ax.hlines(y=mu, xmin=-1, xmax=sample_count)
plt.show()

当然ですが途中に乱数を含むので実行のたびに結果が変わります。

外れてしまった(赤っぽく着色されている)のが 6本あり、残り94本が区間内に真の母平均を含む結果になりました。
今回の結果は94%となりましたが、テスト回数が100回だったので十分許容誤差だと思います。
本当に5%くらいは外すんですね。

母平均の区間推定

今回は正規分布に従う母集団から抽出した標本について、その母平均を区間推定する式を紹介します。
テキストは東京大学出版会の統計学入門です(11.5.1 正規母集団の母平均、母分散の区間推定)。

まず、母集団の分散$\sigma$は既知で、平均$\mu$を推定したい場合から。
(どんな場合に、分散が既知になるんだろうかという気もしますが、簡単なので先に紹介します。)

標本を $X = (X_1, X_2, \dots, X_n)$とし、標本平均を$\bar X$とします。
すると、$\bar X$は、正規分布 $N(\mu, \sigma^2/n)$に従うので、標準化すると、次のようになります。
$$
P(-Z_{a/2} \leq \frac{\sqrt{n}(\bar X – \mu)}{\sigma} \leq Z_{a/2}) = 1-\alpha.
$$

ここで、$Z_\alpha$は、パーセント点と呼ばれるもので、
標準正規分布$N(0, 1)$において、その点より上側の確率が$100\alpha\%$となる点です。
統計学入門ではP197の10.2 で導入されている記号です。

この式を括弧内の不等式についてとくと次のようになります。
$$
P(\bar X-Z_{a/2} \cdot \frac{\sigma}{\sqrt{n}} \leq \mu \leq \bar X+Z_{a/2} \cdot \frac{\sigma}{\sqrt{n}}) = 1-\alpha.
$$

結果、$\mu$の信頼区間は、次のようになります。
$$
[\bar X-Z_{a/2} \cdot \frac{\sigma}{\sqrt{n}}, \bar X+Z_{a/2} \cdot \frac{\sigma}{\sqrt{n}}].
$$

さて、次は$\sigma^2$が未知の場合です。通常はこちらだと思います。
この時は、標本分散を使うことになります。標本分散$s^2$の式はいつものこれ。
$$
s^2 = \sum_{i=1}^n\frac{(X_i-\bar X)^2}{n-1}.
$$

すると今度は$\sqrt{n}(\bar X-\mu)/s$は、自由度$n-1$の$t$分布に従うので、
$t$分布のパーセント点を使って、次のようにかけます。
$t_{\alpha}(n)$は自由度$n$の$t$分布の$\alpha$パーセント点です。

$$
P(-t_{a/2}(n-1) \leq \frac{\sqrt{n}(\bar X – \mu)}{s} \leq t_{a/2}(n-1)) = 1-\alpha.
$$
これを先ほど同じように整形すると、次のようになります。
$$
P(\bar X-t_{a/2}(n-1) \cdot \frac{s}{\sqrt{n}} \leq \mu \leq \bar X+t_{a/2}(n-1) \cdot \frac{s}{\sqrt{n}}) = 1-\alpha.
$$

よって、母平均$\mu$の信頼係数$1-\alpha$の信頼区間はこのようになります。
$$
[\bar X-t_{a/2}(n-1) \cdot \frac{s}{\sqrt{n}}, \bar X+t_{a/2}(n-1) \cdot \frac{s}{\sqrt{n}}].
$$

点推定と区間推定

東京大学出版会の統計学入門の10〜11章を読み直したので、これから数回の更新で区間推定についてまとめておこうと思います。

確率分布のパラメーター(正規分布であれば平均や標準偏差)を、標本から定めることを
パラメーター(母数)の推定と言います。

その時、パラメーター$\theta$をある一つの値$\hat\theta$で指定する方法点推定(point estimation)と呼びます。
例えば標本の平均をとってそれを母平均の推定値とするようなことです。

それに対して、区間推定(interval estimation)は、真のパラメーターの値が入る確率が
ある値$1-\alpha$以上と保証される区間$[L, U]$を求めるものです。
言い換えると、次の式を満たす$L,U$を求めるものです。
$$
P(L\leq \mu\leq U) \geq 1-\alpha.
$$

点推定の場合は別途誤差の評価を行う必要がありますが、
区間推定は最初からある程度の誤りがあることを認めた推定法と言えます。

Googleアナリティクスで参照元ページのURLを調べる

このブログも200件以上の記事を書いてようやくオーガニックサーチからの訪問以外のランディング、
つまり他のサイトのリンクからの訪問が発生するようになりました。

Googleアナリティクスの [参照元 / メディア] で調べると、 teratail.com / referral からやってきている人がいます。
そこで、teratailのどこにこのブログへのリンクが貼られているのかきになるのですが、
このままではそれがわかりません。

具体的な参照元のURLを知るためには、セカンダリディメンションか、カスタムレポートを使います。
選択するディメンションは [完全なリファラー] です。(APIでは ga:fullReferrer)

これを指定すると、”メディアによっては” リンク元のURLがわかります。
結果、こちらのページに引用していただけてるのを見つけました。

cabochaのPythonバインディングがエラーとなる

ちなみに、Qiitaからも流入があるのですが、
完全なリファラーに表示されるURLもQiitaのトップページになってしまっていて、
こちらはどの記事からの訪問者なのかわかりませんでした。

オーガニックサーチについても検索エンジンのトップページのURLが表示されるので、
「完全な」とついている割には不完全な情報しか取れないようです。

変動係数

なんとなく統計検定2級の過去問を眺めていたら、変動係数というキーワードが登場してきました。
語感や説明なく使われている様子から基礎的な用語な感じがしたのですが聞いた覚えがありません。
それで、東大の統計学入門(赤本)にも載ってないんじゃないかと思って調べたのですが、バッチリ載っていました。
自分が覚えていなかっただけのようです。(38ページに登場します。)
良い機会なのでここで定義を紹介しようと思います。

変動係数(Coefficient of Variation)とは、標準偏差を期待値で割ったものです。

本に載っている用途をそのまま紹介しますが、
これは二つの分布の中心(期待値)の大きさが著しく異なり、標準偏差を使って散らばり具合を比較できない場合などに使います。
たとえば、県の1人当たり県民所得の平均と標準偏差が次の値だったとします。
1965年は平均26.6万円、標準偏差は7.5万円で、
1975年は平均117.5万円、標準偏差は23.8万円。

これで、標準偏差が約3倍になっているから地域間の格差が広がっているか?という問いを考えると、
平均も約4.5倍になっているのでそう単純に比較できない、という場合に変動係数で比較するという方法が使えます。

1965年の変動係数は$7.5/26.6 = 0.28$で、1975年のそれは$23.8/117.5 = 0.2$なので、相対的な地域間所得格差は小さくなっていると判断できます。

以上のように紹介してみましたが、結構用途が限られる指標だとも感じました。
確率変数$X$に定数$a$を足した分布を考えると値が変わってしまいますし、
平均が$0$の場合は定義できません。
統計学入門の以降のページにもほぼ登場していないようです。

とはいえ、時系列データなどを扱う時、時代によって平均値が大きく変わってしまった場合の散らばりの比較などには
使えそうなので覚えておこうと思います。