統計やってると時々でてくるチェビシェフの不等式について、順を追って説明する

統計の学習やら統計検定の対策やらをしていると、確率の部分で
<B>「チェビシェフの不等式」</B>
という急に複雑（に見える）数式が出てきて、毎回「見てるふりして飛ばしている」方も多いのではないでしょうか。
（私のことですよ、はい）

そこで、自分のアウトプットの意味合いも含めて順に解説していきます。

がっつりとした統計の基礎に関しては割愛しながら説明することだけ先にご了承ください。

# （ちょっとした前置き）正規分布
統計においてはどうしても避けて通れない正規分布について先に扱います。

代表的な式と、標準正規分布を簡単にプロットすると以下。
$$f(x) = \frac{1}{\sqrt{2\piσ^2}} \exp(- \frac{(x - μ)^2}{2σ^2})$$

```
import numpy as np
import seaborn as sns

rng = np.random.default_rng()
x = rng.normal(loc=0, scale=1, size=500)
sns.displot(x, kind='kde')
```
![スクリーンショット 2021-10-21 21.28.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865635/50086fde-312f-fc28-dc33-15663548635a.png)

（せっかくなので、今風なrandomの作り方してみましたw）

この正規分布に関してですが、中心に左右対称（歪度=0）であり、中心は平均μとなります。
そこから左右に標準偏差のσだけ離れた範囲にサンプルは68%収まり、3σ離れると99.7%のサンプルが収まることが知られています。（雑な図で表現すると以下。）
![スクリーンショット 2021-10-21 21.37.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865635/10844c37-478f-e17e-6ee5-e04aa916b1cb.png)
# チェビシェフの不等式の使いどころ
では、前準備をしたところで、本題へ。

先程の正規分布や一様分布など、確率密度関数や特徴的な分布のもとで計算をしていくケースというのは日常的に非常にレアケース（そのために中心極限定理とか大数の法則とかある）なので、

- とりあえずデータは取得して平均とか標準偏差はわかってるけど、確率密度関数はわからない
- 上記の事象でレアケース（自分で決めれる。だいたい3σより大きいなど）が、どのくらいで起こるのか？（起こらないのか？）

ということを知りたいときに使われます。

# マルコフの不等式

チェビシェフの不等式の証明前に必要な前提のマルコフの定理を軽く扱っておきます

<B>
- 定理
任意の確率変数とし、任意のa >0 において
$$P[X≧a] ≦  \frac{E[X]}{a}$$
が成り立つ
</B>

- 証明(離散・連続の場合がありますが、連続のみを扱います)

$E[X] = \int_{0}^{∞}xf(x)dx  $
$=　\int_{0}^{c}xf(x)dx + \int_{c}^{∞}xf(x)dx$
$≧　\int_{c}^{∞}xf(x)dx  → (\int_{0}^{c}xf(x)dx >= 0より)$
$≧　c\int_{c}^{∞}f(x)dx →　(xのとりうる値をすべてcに制限)　$
$≧　cP(X > c) \$
$
となります。（もしかしたら、うまく表示されてない感あるので、画像ベースでも貼ります
![スクリーンショット 2021-10-21 22.03.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865635/9973a221-f841-b399-a44d-00d3ca830509.png)


特別な知識も入らずに淡々と式変形しました。
これをみると、マルコフの不等式が出てくるわけですね.

# チェビシェフの不等式
実は上記のマルコフの不等式がわかれば、もうおしまいと言っても過言ではないくらいです。

<B>
- 定理
E[X] = μ、V[X] = $σ^2$としたとき、任意の　k>0において、以下が成り立つ
$$　P[|X - μ| ≧ kσ ] ≦ \frac{1}{k^2}$$
</B>

- 証明
先程のマルコフの不等式において、$X→ |X - μ|^2, c→ (kσ)^2$に変形すれば、
$$P[|X - μ|^2 ≧ k^2σ^2] ≦  \frac{E[|X - μ|^2]}{k^2σ^2}$$

- $E[|X - μ|^2]$は分散そのものなので、$E[|X - μ|^2]$ = $σ^2$。
- $P[|X - μ|^2 ≧ k^2σ^2]$は両辺2乗しているため、絶対値に注意して、P[|X - μ| ≧ kσ]

これを踏まえてチェビシェフの不等式が導出されました。

## ちょっとした補足
大抵は上記の不等式で事足りますが、式変形の際に$c→ k^2$を採用して
$$　P[|X - μ| ≧ k ] ≦ \frac{V[X]}{k^2}$$
として話が進むこともあります。
（統計検定で2021-6で出題された。初見ではほぼむりでしたw）

# 大数の弱法則
ある程度掴めたところで、もう少し踏み込みます。

チェビシェフの不等式で大数の弱法則が導き出されることができます.

具体的には母集団から標本を取ってきたときに
標本平均をμ、母分散を$σ^2$とすれば、標本分散は$\frac{σ^2}{n}$となり、チェビシェフの不等式に入れると
$$　P[|X - μ| ≧ k ] ≦ \frac{\frac{σ^2}{n}}{k^2}$$
これでn→∞にするとP[~] → 0となります

噛み砕いて言えば、
<b>サンプルサイズを増やしていくにつれて、サンプルの平均は母平均に近づく（確率収束する。つまりレアケースはほぼ起こらないと考えて良い）</b>
って感じ

# pythonでチェビシェフの不等式を扱ってみる
調べた限り、関数などで準備されている感じでもなかったので、地道に関数を作っていろいろ試してみました。
（正規分布のみですが、normをお好きな分布に変えてみても面白いです）

```
from scipy import stats

def Chebyshev(mu, sigma, k):
  right_prob = stats.norm.sf(x=k*sigma, loc=mu, scale=sigma) # sfは生存関数。x以上の確率を格納
  left_prob = 1 - stats.norm.sf(x=-k*sigma, loc=mu, scale=sigma)

  prob = left_prob + right_prob
  if prob <= 1/ k**2:
    print(f'P(| X - mu | > kσ) < 1/k**2?: {prob:.2f} < {1/ k**2:.2f} !')
  else:
    print('Not good!')


Chebyshev(0, 1, 2)
Chebyshev(0, 1, 3)
>>>P(| X - mu | > kσ) < 1/k**2?: 0.05 < 0.25 !
>>>P(| X - mu | > kσ) < 1/k**2?: 0.00 < 0.11 !
```
特段コードの説明は割愛しますが、こんな感じ

# 今回参考にさせていただいた記事
[【大学数学】チェビシェフの不等式【確率統計】](https://www.youtube.com/watch?v=d-ugoDdXWrU)
[1. Pythonで学ぶ統計学　2. 確率分布[scipy.stats徹底理解]](https://qiita.com/y_itoh/items/c388ff82360906240daf#-sf-survival-function-%E7%94%9F%E5%AD%98%E9%96%A2%E6%95%B0)
[2021年6月統計検定2級の問題の解説（その2](https://bellcurve.jp/statistics/blog/22801.html)
[https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html)
[【統計学】チェビシェフの不等式を理解する](https://qiita.com/g-k/items/99bc3a0f89d5863e1776)
[チェビシェフの不等式の導出とシミュレーション](https://cartman0.hatenablog.com/entry/2016/11/27/002112)