目次
1.はじめに
2.正式な数式
3.キーワード1:基本形(左右対称、x=0で1)
4.キーワード2:確率密度関数(面積は1)
5.キーワード3:正規化(の逆)
6.おわりに
1. はじめに
正規分布の数式って、滅茶苦茶(メチャクチャ)複雑ですよね。なぜ、こんなに複雑なカタチをしているのか、3つのキーワードと共に、考えてみましょう。
なお、数学的に、厳密な議論ではなく、ザックリと数式の意味を理解することを目的としていますので、その点はご留意くださいね。
2. 正式な数式
正規分布(ガウス分布)の確率密度関数(probability density function, PDF)は以下のように表されます:
$$
f(x | \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi}} \cdot e^{-\frac{(x - \mu)^2}{2\sigma^2}}
$$
ここで、
- (x) は確率変数です。
- (μ) は平均値(期待値)を表します。
- (σ) は標準偏差を表します。
- (e) は自然対数の底(ネイピア数)です。
- (π) は円周率を表します。
この数式って、一目見ただけでは意味不明ですよね。
3つのキーワードに沿って、順番に考えていくと、何を意味しているのかが、少しずつ分かるようになります。(なることを祈っています(笑))
3. キーワード1:基本形(左右対称、x=0で1)
正規分布を考えると、当然、真ん中の平均にくるデータが一番多くて、平均から離れれば離れるほど、データ数は少なくなることが求められます。
左右対称のグラフとして、最初に思いつくのは、2次元のグラフですよね。絶対値を使う手もあると思いますが、絶対値記号の中が、プラスか、マイナスか、で場合分けする必要がありますので、
2次元を使うと良いです。
そして、平均値が真ん中にくるようなグラフで、その時の値は、分かりやすく、1になるとします。つまり、x=0のときに、f(x)=1となるような数式を考えます。
そういった意味からすると、正規分布の数式の基本形は、以下の通りです。
$$
f(x ) = \ e^{-{x^2}}
$$
ここで、xの前にマイナスを付けているのは、平均値から離れれば離れるほど、小さな値を取るようにするためです。つまり、以下のように、書き換えることもできます。
$$
f(x ) = \ e^{-{x^2}} = e^{\frac{1} {x^2}}
$$
ちなみに、$$
f(x ) = \ e^{-{x^2}}
$$
のグラフをPythonで描いてみると、以下のようになります。
コードも参考までに載せておきます。
import matplotlib.pyplot as plt
import numpy as np
def f(x):
return np.exp(-x**2)
x = np.linspace(-3, 3, 400) # xの範囲を-3から3まで400点で区切る
y = f(x)
plt.plot(x, y, label='$e^{-x^2}$')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Graph of $e^{-x^2}$')
plt.legend()
plt.grid()
plt.show()
でも、なぜ、ネイピア数を使うのか、気になりますよね。ネイピア数を使う謎を解くカギは、次のキーワード、確率密度関数です。
4. キーワード2:確率密度関数(面積は1)
今回、考えているのは、確率密度関数です。確率なので、すべての場合を足し合わせると、確率1になるようにします。
つまり、正規分布の取り得るマイナス無限大からプラス無限大までの面積が1になるようにします。このとき、積分を使う必要があるので、積分しやすいようにネイピア数を使っています。
確率密度関数(probability density function, PDF)としての、正規分布のは以下のように表されます:
$$
f(x) = \frac{1}{\sqrt{2\pi}} \cdot e^{-\frac{x^2}{2}}
$$
ネイピア数の前にある
$$
\frac{1}{\sqrt{2\pi}}
$$
や、$${x^2}$$の分母にある2は、面積を1にするためのパラメーターです。
先ほどと同様、
$$
f(x) = \frac{1}{\sqrt{2\pi}} \cdot e^{-\frac{x^2}{2}}
$$
をグラフ化してみます。面積を1にするため、x=0で、0.4になっています。
コードも参考までに載せておきます。
def f(x):
return 1 / np.sqrt(2 * np.pi) * np.exp(-x**2 / 2)
x = np.linspace(-5, 5, 400) # xの範囲を-5から5まで400点で区切る
y = f(x)
plt.plot(x, y, label='$\\frac{1}{\\sqrt{2\\pi}} \\cdot e^{-\\frac{x^2}{2}}$')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Graph of $\\frac{1}{\\sqrt{2\\pi}} \\cdot e^{-\\frac{x^2}{2}}$')
plt.legend()
plt.grid()
plt.show()
5. キーワード3:正規化(の逆)
正規分布の面積は、求めることができますが、いちいち計算するのは面倒なので、標準正規分布表から面積を求めます。
そして、標準正規分布表を使うために必要な作業が正規化です。
仮に、日本人男性の身長の平均が170cmで、標準偏差が6cmだとします。その場合、正規分布は、170cmを中心に標準偏差が6cmとして、描かれます。
この正規分布の平均を0、標準偏差を1とすることが正規化(または、標準化)です。これにより、異なる尺度や単位を持つ複数の変数を比較する際に、尺度の影響を排除して変数間の関係を理解しやすくします。正規化は以下の式で表されます。
$$
z = \frac{x - \mu}{\sigma}
$$
ここで、
x は元のデータの値、
μ はデータの平均値、
σ はデータの標準偏差を表しています。
標準化後の値 z が計算されます。
正式な正規分布の確率密度関数は、以下の通りです。
$$
f(x | \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi}} \cdot e^{-\frac{(x - \mu)^2}{2\sigma^2}}
$$
この数式に平均0、標準偏差1を代入すると、先ほどの以下の式になります。
$$
f(x) = \frac{1}{\sqrt{2\pi}} \cdot e^{-\frac{x^2}{2}}
$$
つまり、正規分布の数式は、面積が1となる確率密度関数に、正規化の逆の作業をすることで求められることが分かるかと思います。
ちなみに、これは仮説例ですが、それほど現実離れしていないと思います。
当然ですが、190cmを超える身長の人は、ほとんどいませんよね。大谷選手は193㎝ですから、以下に規格外のスケールか、分かりますね。そういえば、個人的に、190cmを超える知り合いはいません、、、
コードは、以下の通りです。
def f(x, mu, sigma):
return 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-((x - mu)**2) / (2 * sigma**2))
mu = 170
sigma = 6
x = np.linspace(140, 200, 400) # xの範囲を140から200まで400点で区切る
y = f(x, mu, sigma)
plt.plot(x, y, label=f'$f(x | \mu={mu}, \sigma={sigma})$')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title(f'Graph of $f(x | \mu={mu}, \sigma={sigma})$')
plt.legend()
plt.grid()
plt.show()
6. おわりに
ザッと、駆け足で、正規分布の数式が複雑な理由を考えてみました。
自分は、最初、正規分布の数式を見たときに、「ナンジャ、こりゃ?」という感じでした。
この記事を、お読みになった皆さんの少しでも、お役に立てば、幸いです。
最後に、お願いですが、もし、当方の勉強不足で、間違った記述があれば、ぜひとも、教えてください。
マサカリ、大歓迎です(笑)