統計学の基礎 二項分布・正規分布・信頼区間

この記事は、正規分布の説明と利用方法を記載しています。

読者は、次の問題がわかる人を前提にしています。
Q.「平均60点で標準偏差15点の算数のテストがあったとき、偏差値60だった人は何点をとっていますか？」
A. 正解は「75点」

---
# 二項分布
[参考: 統計学の基礎](http://lbm.ab.a.u-tokyo.ac.jp/~omori/kokusai11/kokusai11_926.html)

**成功確率 p** の事象を **n 回試行**したときの成功回数 r の分布を r ～ B(n, p) と書く.

成功回数が r となる確率 Pr[r ] は,  
n 回の試行で r 回成功する 場合の数が nCr 通りで, r 回成功し n－r 回失敗するので,

$$
\begin{align}
$P_r[r]＝{}_n C _r p^r (1－p)^{n－r}
\end{align}
$$

となる.また、確率分布の平均と分散は

$$
\begin{align}
\mbox{平均： } \bar{x} &= np & \\\\
\mbox{分散： } s^2 &= np(1 - p) & \\\\
\end{align}
$$

である．

---

### 例題

 A 選手は 3 割バッターである．ある試合で 5 回打席に立ったときときのヒット数の分布を求める.   
 この場合，p＝0.3，n＝5である． 
 
 
$$
\begin{align}
\mbox{5打数ノーヒットの確率：} & \mbox{ヒットが出ない確率は，1－0.3＝0.7なので，求める確率は} & \\\\
P_r[0] &＝0.7^5 &＝0.16807\\\\
\mbox{5打数1安打の確率：}P_r[1] &＝ {}_5 C _1p(1－p)^4 & ＝5×0.3×0.7^4＝1.5×0.2401 ＝0.36015 \\\\
\mbox{5打数2安打の確率：}P_r[2] &＝ {}_5 C _2 p^2(1－p)^3 & ＝(5×4)/(2×1)×0.3^2×0.7^3 ＝0.3087 \\\\
\mbox{5打数3安打の確率：}P_r[3] &＝ {}_5 C _3 p^3(1－p)^2 & ＝(5×4×3)/(3×2×1)×0.3^3×0.7^2＝10×0.027×0.49 ＝0.1323 \\\\
\mbox{5打数4安打の確率：}P_r[4] &＝ {}_5 C _4 p^4(1－p) & ＝5×0.34×0.7＝3.5×0.0081 ＝0.02835 \\\\
\mbox{5打数5安打の確率：} P_r[5] &＝ p^5 & ＝0.35 ＝0.00243 \\\\
\end{align}
$$

これより，ヒット数の分布は以下の表のように書ける．

| ヒット数 | 0       | 1       | 2      | 3      | 4       | 5       | 
| :------: | :-----: | :-----: | :----: | :----: | :-----: | :-----: | 
| 確率     | 0.16807 | 0.36015 | 0.3087 | 0.1323 | 0.02835 | 0.00243 | 

の形で表現される．  

このとき，確率分布の平均と分散は,   
$$
\begin{align}
\mbox{平均： } \bar{x} &= x_1p_1 + x_2p_2 + \cdots + x_np_n = \sum_{i=1}^{n}{x_ip_i} & \\\\
\mbox{分散： } s^2 &= (x_1 - \bar{x})^2p_1 + (x_2 - \bar{x})^2p_2 + \cdots + (x_n - \bar{x})^2p_n = \sum_{i=1}^{n}(x_i - \bar{x})^2p_i
\end{align}
$$
と定義される．  
これより，ヒット数の平均と分散は，

$$
\begin{align}
\mbox{平均： } \bar{x} &= 0\cdot0.16807+1\cdot0.36015+2\cdot0.3087+3\cdot0.1323+4\cdot0.02805+5\cdot0.00243 & \\\\ &= 1.5 \\\\
\mbox{分散： } s^2 &= (0－1.5)^2\cdot0.16807+(1－1.5)^2\cdot0.36015+(2－1.5)^2\cdot0.3087+(3－1.5)^2\cdot0.1323+(4－1.5)^2\cdot0.02805+(5－1.5)^2\cdot0.00243 & \\\\ &= 1.05
\end{align}
$$



と計算される．

実は，成功確率 p の事象を n 回行ったときの二項分布 B(n，p) の平均と分散は  
$$
\begin{align}
\mbox{平均： } \bar{x} &= np & \\\\ &= 5\cdot0.3 & \\\\ &= 1.5 \\\\
\mbox{分散： } s^2 &= np(1 - p) & \\\\ &= 5\cdot0.3\cdot0.7 & \\\\ &= 1.05 \\\\
\end{align}
$$
となることがわかる．

---

### 二項分布が正規分布に近づく様子

成功確率 p の二項分布は，試行回数 n を増やしていくと，平均 np，分散 np(1 - p) の正規分布 に近づく．左図が確率分布（密度）で，右図が累積分布である．

![binormal1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/fdf819aa-40ff-08a4-ade7-bb8734e607dd.png)

![binormal2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/a8e3411c-d96d-33b8-bd43-99e800cac4b3.png)

![binormal3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/3e4256ce-02c3-33f5-84e9-6d7df4226b55.png)

![binormal4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/02983939-ebf8-b06e-107e-46bb986c9f37.png)

![z-table.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/990bb0db-64a1-c153-da67-285ea1bbe70b.png)

#### t分布
標本nが小さい(n<30)とき母集団を推定するときは、  
t分布を用いて、自由度は n-1 として計算する  

![t-table.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441999/c2c7838f-3140-4fc3-307c-d85f68067e95.png)

---

## 二項分布の応用

[参考:統計データ解析A](http://racco.mikeneko.jp/Kougi/08s/SDAA/SDAA13pr.pdf)

### 視聴率調査

#### 問い①
ある番組の視聴率とは、無作為に抽出された世帯を標本として調査し、視聴率としている.  
n 世帯を無作為に抽出して、視聴率の標準偏差を 1％ 以下にするには、n は最低でもいくらでなければならないか？  

#### 解答
「抽出された n 世帯のうち、その番組を見ている世帯の数」を X  
「抽出された n 世帯のうち、その番組を見ている世帯の割合」を  X/n = p^ (ハット:推定値)  
とする.  

X は確率変数で二項分布B(n, p)に従うので、  

X の平均は np  
X の分散は np(1-p) となる.  

このとき X/n についての平均と分散も、すでに定まっている.  
平均については、確率変数 X がいっせいに 1/n 倍されるので
$$
\mbox{(X/n の平均)} = \frac{1}{n} × np = p
$$
分散については、
$$
\mbox{(確率変数の分散の定義)}=\sum_{i=1}^n (\mbox{}X_i\mbox{のとりうる値} - \mbox{平均})^2 \times \mbox{(その値をとる確率)}
$$
の定義を眺めると、Xのとりうる値すべて と 平均(期待値) が 1/n 倍され、その差を2乗したものなので
$$
\mbox{(X/n の分散)}=\frac{1}{n^2} × np(1-p) = \frac{p(1-p)}{n}
$$
である.  
( 余談だが、別の表現では「すべての世帯(実際は不明)」を n 世帯 ごとに小分けして調査していくと、 確率変数としての p^ は二項分布に従う。ともいえる )

分散から標準偏差を求めることができるので
$$
(\hat{p}\mbox{の標準偏差})=\sqrt{\frac{p(1-p)}{n}}
$$
このとき、標準偏差を1％以下にするには
$$
\sqrt{\frac{p(1-p)}{n}}\leqq0.01 \\\\
\mbox{すなわち} \\\\
n \geqq 10000p(1-p)
$$
となる n を探す。  

p(1-p)の最大値は 1/4 (p=1/2のとき)※なので  
※p(1-p) は (0, 0)と(1, 0)を通る上に凸な2次曲線. かつpは0から1の範囲をとりうる.→ p(1-p)の最大値は1/4

$$
\begin{align}
n & \geqq 10000 \times \frac{1}{4} \\\\
n & \geqq 2500 \cdots \mbox{(答え)}
\end{align}
$$

---

### 問い②
100 世帯を無作為に抽出して調査すると、ある番組を見ていたのは 20 世帯だった.  
「全世帯のうち、その番組を見ていた世帯」の割合を p とするとき、  
p の95％信頼区間の視聴率は 何％～何％ か？  

また、1000 世帯を調査して、その番組を見ていた世帯が 200 世帯だった場合はどうか？ 

### 解答

「抽出された n 世帯のうち、その番組を見ている世帯の数」を X とすると  
X は確率変数で二項分布B(n, p)に従う.  
(中心極限定理により平均値の周辺に質量が多く分布する)  

また、 n が十分に大きいとき、X の確率密度は正規分布に近似する(ド・モアブル=ラプラスの定理)  
(正規分布へ近似はn>30が目安。 n のサイズが小さいときは t分布として解く)

X の確率密度の標準偏差を σ とすると、正規分布表より |z|=1.96 のとき確率分布の95％を占めるので  

$$
\hat{p}-1.96×\sigma \leqq p \leqq \hat{p}+1.96×\sigma \\\\
\mbox{すなわち} \\\\
\hat{p}-1.96×\sqrt{\frac{p(1-p)}{n}} \leqq p \leqq \hat{p}+1.96×\sqrt{\frac{p(1-p)}{n}} \\\\
p\mbox{と}\hat{p}\mbox{は近いはずなので}p\mbox{を}\hat{p}\mbox{で置き換えると} \\\\
\hat{p}-1.96×\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \leqq p \leqq \hat{p}+1.96×\sqrt{\frac{\hat{p}(1-\hat{p}}{n}} \\\\
$$

n = 100, p^=0.2 なので

$$
0.2-1.96×\sqrt{\frac{0.2(1-0.2))}{100}} \leqq p \leqq 0.2+1.96×\sqrt{\frac{0.2(1-0.2)}{100}} \\\\
0.1216 \leqq p \leqq 0.2784 \\\\
\cdots \mbox{(答え)}
$$

1000 世帯を調査して、その番組を見ていた世帯が 200 世帯だった場合、  
n = 1000, p^=0.2 なので
$$
0.1752 \leqq p \leqq 0.2247
$$
『精度が高まり、誤差の範囲が縮まった』……(答え)  
(一般にn を大きくすると精度が高まり誤差の範囲が縮まる)

なお、答えの計算にはpythonを使用
```py:
# 確率分布の下限と上限を返す関数
import math
def get_error_min_max(n, p_, z=1.96):
    sigma = math.sqrt(p_*(1-p_)/n)
    min_ = p_-z*sigma
    max_ = p_+z*sigma
    return 'min: {}, max: {}'.format(min_, max_)

# 100 世帯を調査して 20 世帯が番組を見ていたとき、 95% 信頼区間の下限と上限
# ⇛ n=1000, p^=0.2, z=1.96のとき
print(get_error_min_max(n=100, p_=0.2, z=1.96))
# 1000 世帯を調査して 20 世帯が番組を見ていたとき、 95% 信頼区間の下限と上限
# n = 1000 p^=0.2 z=1.96のとき
print(get_error_min_max(n=1000, p_=0.2, z=1.96))
```

---

## 選挙の開票途中で「当確」

投票者数10万人の選挙で候補者A, Bが争う.
開票数が 10000 のとき A は5050票 B は4950票であった。

### 問い①
候補者A, Bの最終得票率 p_a, p_b を信頼区間 95％で表わせ。

### 解答

現在の得票率をそれぞれ p_a^, p_b^ とすると  
p_a^ = 5050 / 10000 = 0.505  
p_b^ = 4950 / 10000 = 0.495  
となり最終得票率もこれに近いと推定する。  

最終得票率 p は95％の確からしさで  
$$
\hat{p} \pm 1.96×\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}
$$
の範囲に入ると推定できるため
```py:
print(get_error_min_max(n=10000, p_=0.505, z=1.96))
print(get_error_min_max(n=10000, p_=0.495, z=1.96))
# min: 0.49520049001225064, max: 0.5147995099877494
# min: 0.48520049001225063, max: 0.5047995099877494
```

---
### 問い②
候補者A に当選確実を出すには、開票数がいくつを超えたときか？  
(※95％以上の確からしさをもつ予測を以て当選確実とする)

### 解答
P_a^ の下限が 50％を超えたとき、  
95％の確からしさで候補者 A が当選確実といえるので、  
(候補者が3人なら (P_a^ の下限) > (P_b^ の上限) かつ (P_a^ の下限) < (P_c^ の上限)かな？)

$$
\hat{p_a} - 1.96×\sqrt{\frac{\hat{p_a}(1-\hat{p_a})}{n}} \geqq 0.5
$$
となる n を探す。p_a^ = 0.505 なので、

$$
\begin{align}
0.505 - 1.96×\sqrt{\frac{0.505(1-0.505)}{n}} &\geqq 0.5 \\\\
-0.9799×\sqrt{\frac{1}{n}} &\geqq -0.005 \\\\
\sqrt{\frac{1}{n}} &\geqq 0.00510256 \\\\
\frac{1}{n} &\geqq 0.000025 \\\\
n &\geqq 40000 \cdots \mbox{(答え)} \\\\
\end{align}
$$


正確には
n = 38413 のとき0.50000005 < p_a^

```
print(get_error_min_max(40000, .505))
print(get_error_min_max(40000, .495))
# min: 0.5001002450061253, max: 0.5098997549938747
# min: 0.4901002450061253, max: 0.4998997549938747
print(get_error_min_max(38413, .505))
# min: 0.5000000547734237, max: 0.5099999452265763
```