はじめに
このシリーズは久保川達也氏著「現代数理統計学の基礎」を簡潔に説明し、その内容をpythonで実装してみよう、というものです。実装にはGoogle Colaboratory(以下:Colab)を使いました。ご指摘があればコメント欄に書いて下さるとありがたいです。
説明が必要だと思ったところにだけ触れて、アウトプットできればいいよねくらいのスタンスで書くので本の内容をちゃんと全部理解したい方にとっては向いていないかもしれないです。
式番号や命題・定義のインデックスは本に合わせて書いた場合、この記事では番号がとびとびになることがありますので予めご了承ください。
2章の概観
まず、普段何気なく使っている確率変数を厳密に表現し、離散型・連続型における確率分布の説明をしています。似た言葉が出てきてややこしいかもしれませんが、内容を理解したら迷うことは少ないと思います。続いて期待値を定義して分散、標準偏差などの説明をしています。確率生成関数、積率生成関数、特性関数は初めてきくという方もいるかもしれませんが、統計学に関する造詣をより深められる重要な関数です。最後の変数変換は考え方だけ知っておいて、必要な時にその都度やる感じでいいと思います。
1書と2章は3章以降の準備で、現時点で完璧でなくても読み進めているうちに理解できてたということがあると思います。
確率変数
$ $ 考えている事象をすべて扱うのではなく、どうでもいいところを省いて扱いやすくしたのが確率変数です。例えば100人をランダムに選んでグッピーが好きか質問するとします。全事象$\Omega$は$2^{100}$個の元からなりますが、それは個人を区別した場合です。しかしいま知りたいのは100人のうち何人がグッピーが好きかということです。個人を区別した場合の全事象$\Omega$(「好きと答えた人」を1、「嫌いと答えた人」を0とする)と個人を区別しない場合の確率変数を$X$としたときの$X$の全事象(標本空間)$\chi$はそれぞれ、
$\Omega=${$ ${0,0,...,0}$,${1,0,...,0}$,...,${1,1,...,1}$ $}$ $
$\chi=${0,1,2,...,100}$ $
であり、元の数が桁違いに小さく扱いやすくなったことがわかります。確率変数$X$とは要するに、実数直線上で動く変数のことです。
確率分布
累積分布関数
定義:
確率変数$X$の累積分布関数を$F_X(x)$とすると、$$F_X(x)=P(X \leq x)$$と表せる。
例:サイコロを一回振って4以下が出る確率は? 答え:$F_X(4)=P(X \leq 4)=4/6=2/3$。ということです。累積分布関数を単に分布関数ともいいます。
サイコロのように変数がとびとびの値をとる場合の確率変数$X$を離散型確率変数といい、気温のように変数が連続の値をとる場合は連続型確率変数といいます。
確率関数・確率密度関数
$ $累積分布関数$F_X(x)$は累積($X \leq x$となる)の確率を考えていますが、次に$X=x$となる(ピンポイントの)確率を考えます。
・離散型
$$f_X(x)=P(X=x)$$を確率関数といいます。変数に値をいれると、確率が求められます。
離散型確率変数$X$に対して、確率関数$f_X(x)$は
f_X(x) = \left\{ \begin{array}{ll}
p(x_i) & (x=x_iのとき) \\
0 & (x \notin \chi のとき)
\end{array} \right.
と表せます。厳密な表現は省略しましたが、使っている文字は今までに出てきた文字の意味と同じです。
・連続型
連続型の場合は、変数を1点だけ考えることはできないため確率を求めることはできません。たとえば実数直線上の実数1を表そうとしても、1.0000000000...と無限に続いてしまうからです。そこで、1点の代わりに変数が少し幅をもった場合の確率を考えます。
定義:
連続型確率変数$X$に対して、$$F_X(x)=
\int_{-\infty}^x f_X(t) dt, \ -\infty<x<\infty \tag{1}
\ $$
となる関数$f_X(x)$が存在するとき、$f_X(x)$を確率密度関数という。
例えば、明日の気温$T[℃]$が$22\leq T\leq25$になる確率は?みたいな考え方です。$F_X(x)$は累積分布関数です。密度という表現はすぐ慣れると思います。確率ですので、もちろん$$\int_{-\infty}^{\infty} f_X(x)dx=1 \tag{2} $$です。式(1)より$$f_X(x)=\frac{d}{dx}F_X(x)$$であることがわかります。確率密度関数は、$x \to ±\infty$の極限で収束します。確率密度関数の積分値である累積分布関数が1に収束するからですね。
期待値
まず、期待値の定義から:
$ $確率変数$X$の関数$g(X)$の期待値を$E[g(X)]$で表し、
E[g(X)] = \left{ \begin{array}{ll}
\int_{-\infty}^{\infty} g(x)f_X(x) dx& (Xが連続型確率変数のとき) \
\sum_{x_i \in \chi}g(x_i)f_X(x_i) & (Xが離散型確率変数のとき)
\end{array} \right.
と表す。
$f_X(x)$は前述の確率関数です。つまり、それぞれの変数$x$のときの値とその値が起こる確率の積を足し上げているのですね。期待値が重要な理由は、確率分布の特性値(情報を縮約したもの)である平均と分散も、ある確率変数$X$の関数$g(X)$の期待値だからです。
・平均
$g(X)=X$のとき、$X$の期待値$E[X]$を$X$の平均といいます。$E[X]= \mu $と表します。平行移動と尺度の変化に対して
$$E[aX+b]=aE[X]+b$$
となります。
・分散
$g(X)=(X-E[X])^2$のとき、期待値$E[(X-\mu )^2]$を$X$の分散といい、$V(X)$もしくは$\sigma^2$と表します。$\sigma = \sqrt{V(X)} $を$X$の標準偏差といいます。分散はデータの散らばり度合いを表し、その次元を一つ落として計算しやすくしたものが標準偏差です。証明は省略しますが、分散は平行移動と尺度の変化に対して
$$V[aX+b]=a^2V[X]$$
となります。分散はもともと偏差(平均値とそれぞれのデータの差)の二乗を考えているので、納得がいくと思います。データが並行移動しても散らばり具合は変わらないというのも直感的に分かるのではないかと思います。
※確率生成関数・積率生成関数・特性関数は長くなりそうなので、別の機会に一つの記事にして紹介します。名前の通り、確率関数や積率を自動的に求めることができる関数です。
# pythonを動かしてみよう
では、pythonを使って標準正規分布(次章で出てきます)の確率密度関数と累積分布関数を見てみましょう。
```python
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
fig,ax = plt.subplots()
x1 = np.arange(-5,5,0.1)
x2 = np.arange(-5,5,0.01)
y = (np.exp(-x2**2/2)) / np.sqrt(2*np.pi)
Y = norm.cdf(x1,loc=0,scale=1)#標準正規分布の累積分布関数(cumulative distribution function)を計算
c1,c2 = "red","blue"
ax.set_xlabel("x")
ax.set_ylabel("plobability")
plt.grid(True)
plt.plot(x1,Y,color=c1,label=l1)
plt.plot(x2,y,color=c2,label=l2)
plt.show()
これを実行すると下図のようになります
青のグラフが標準正規分布の確率密度関数$f_X(x)$で、赤のグラフが累積分布関数$F_X(x)$です。累積分布関数は0から1に近づいているのが分かりますね。
以上で2章は終わりです。ありがとうございました。
参考文献
「現代数理統計学の基礎」久保川達也氏著