正規分布 (normal distribution) とは
連続変数の代表的な確率分布です。その形は、平均値を頂点とした左右対称の形になっています。正規分布は非常に多くの統計手法で活用されている確率分布であり、統計解析の根底にある確率分布だといっても過言ではないのかもしれません。多くの確率分布から得られた平均値が、データ数が多くなると正規分布に収束していくことが知られています (中心極限定理)。この性質を利用することによって、とくに仮説検定の際の確率の計算を簡便化することができるのです。

正規分布の確率密度関数
正規分布の確率密度関数は以下の式です。

\( f(x) = \frac{1}{ \sqrt[]{2 \pi \sigma^2} }e^{(-\frac{(x- \mu)^2}{2 \sigma^2})} \)

ここでμは母平均、σ2は母分散を意味しています。自然対数eのべき乗の中身をよく見てみると、xの値と母平均の差が2乗となった負の二次関数となっていますね。つまり、べき乗の中身は上に凸の二次関数です。この二次関数がどんなに小さく(マイナス方向で大きく)なっても、これはeのべき乗ですから0になることはありません。無限に小さくなっていくだけです。一方、xが母平均と等しいとき、べき乗は全体として0になります。つまり、e0 = 1となるため、f(x)は最大値\( \frac{1}{ \sqrt[]{2 \pi \sigma^2} } \)になります。正規分布の確率密度関数は、母平均のときに最大値(正規分布の山の頂点)となり、そこから滑らかに0に漸近していく確率分布となっているのです。この山のX軸上の位置が母平均によって決まり、最大値の値とそこからの傾斜が分散によって決まるため、正規分布の母数は母平均と母分散になるわけです。

標準正規分布 (Z)
母平均が0、母分散が1の正規分布を標準正規分布といいます。標準正規分布の確率密度関数は以下の式です。

\( f(x) = \frac{1}{ \sqrt[]{2 \pi} }e^{(-\frac{x^2}{2})} \)

母平均と母分散が0と1ではない正規分布も、その正規分布の母平均と変数全体(X)の差をとって、その正規分布の標準偏差で割ると、標準正規分布に変換できます。そのため、標準正規分布に変換することによって、正規分布の確率計算が非常に簡単になります(というか、確率計算しなくてもよくなります)。標準正規分布のX軸には、特別にZという名前がつけられています。仮説検定の結果を記述した文章や表などにZという表記があれば、それは標準正規分布のZ値のことを指します。

Rで正規分布を扱う
Rにおける確率分布の呪文は、頭文字1字で「Rがすべき作業内容」を表し、2文字目から確率分布の略称となっていることが多いです。正規分布の英名はnormal distributionなので「norm」が正規分布の略称です。
 頭文字1字には、d、p、rの3通りがあります。それぞれの作業内容は以下のとおりです。
dnorm: 想定した正規分布におけるX軸の値ごとの「確率密度」を求める。densityのd
pnorm: 想定した正規分布において、X軸が、ある値以下となる(orより大きな値となる)「確率」を求める。probabilityのp
rnorm: 想定した正規分布から、X軸の値をランダムに選択する。randomのr
では、具体的に使ってみましょう。

正規分布の確率密度
#ある正規分布における各値の確率密度を計算したい場合はdnormを用います。
#母平均が1で母分散が4(母標準偏差が2)の正規分布で、xが3になる確率密度を求めましょう。
dnorm(3, mean=1, sd=2)
#ちょっと違う値も試してみましょう。
dnorm(1, mean=1, sd=2)
dnorm(1.1, mean=1, sd=2)
dnorm(2, mean=1, sd=2)

正規分布における確率
では、値が3以下になる確率はなんでしょうか。
pnorm(3, mean=1, sd=2) 
結構大きいですね。確率分布は総面積が1なので、その大部分となっています。
その理由は、この呪文のデフォルトがlower.tail=TRUEだからです。
lower.tail=FALSEにすると、Xが3以上となる裾野の面積を計算します。
pnorm(3, mean=1, sd=2, lower.tail=F)
pnorm(3, mean=1, sd=2)+pnorm(3, mean=1, sd=2, lower.tail=F)
両方を足すと1になりましたね。どんな確率分布でも、確率(密度)分布の総面積は1です。

正規分布の作図
まずは、平均0で分散 (標準偏差) 1の標準正規分布を描きましょう。
x <- seq(-10, 10, 0.01)  #-10から10まで0.01間隔の数列をつくります。
このxの値ごとで確率密度を計算して、それを線で結びます (type="l")。
ここで注意してほしいのは、type="l"のlはイチではなくエルの小文字だということです。
plot(x, dnorm(x, mean=0, sd=1), type="l")
これが標準正規分布です。
 では、別の正規分布も描き足しましょう。いちど作図されたあとで線を描き足すにはlinesを使います。
lines(x, dnorm(x, mean=5, sd=1), col="red")
平均5、標準偏差1の正規分布は、標準正規分布が5だけ水平移動したものです。
いっぽう、標準偏差 (2乗すれば分散) は、正規分布という「山」の高さや裾野を決めます。
lines(x, dnorm(x, mean=0, sd=5), col="blue")
確率分布の面積は全体で1なので、裾野が広くなるほど、高さが低くなります。
このように正規分布は平均と分散 (分散は標準偏差の2乗)で形が決まります。

正規分布からのランダムなサンプリング
#標準正規分布からランダムに1000個の数字をサンプリングします。
rnorm(1000, mean=0, sd=1) -> x1
hist(x1)
#今度は、平均5, 標準偏差2の正規分布から1000個の数字をサンプリングします。
rnorm(1000, mean=5, sd=2) -> x2
hist(x2)
サンプリングした数が1000くらいあれば、そのヒストグラムはけっこうキレイな正規分布に見えますね。

正規分布が想定できるデータ
実際のデータがどんな形をしていたら正規分布をあてはめることができるのでしょうか。このことを感覚的に掴むための簡単な方法は、本物の正規分布から得られたデータを何度も描いてみることです。めんどくさいかもしれませんが、慣れてしまえば自分のなかに良い「統計的感覚」を身につけることができます。

例えば、母平均5で、母分散4の正規分布から20個のデータをランダムに抽出してみましょう。
rnorm(20, mean=5, sd=2) 
分散が4なので標準偏差sdは2ですね。だいたい5が平均になりそうな数字が20個でましたが、これでは傾向が分からないので
hist(rnorm(20, mean=5, sd=2))
rnormとhistの呪文を何回か繰り返すと、同じ母集団からでもいろいろな「山」が描かれることがわかります。

正規分布から得られる「山」を、もっとたくさん描いてみましょう。
par(mfrow=c(3, 4))  #画面を3行4列に分割
for(i in 1:12){
    rnorm(20, mean=5, sd=2) -> x
    hist(x, breaks=-5:15, main="")
}
par(mfrow=c(1, 1))  #画面をもとに戻す。

ここで視点を切り替えましょう。これらが「実際のデータ」だと考えてみてください。つまり、このようなデータが実際に取れたとき、たとえ、そのデータが「峰が2つあるようなないような、、、」という分布であったとしても、あるいは、「なんだか左右非対称な「山」だなあ」と強く感じるデータであったとしても、正規分布を想定するのは「まちがってはいない」ということです。
 ここは「データ数が少ないから、偶然そうなることはある」と考えるべき状況だといえます。もちろん、データ数が少ないことは褒められたことではないので、もっとデータをとるべきですが。

一方、データ数が増えるほど、「山」は常に正規分布っぽくなります。
rnorm(500, mean=5, sd=2) -> x; hist(x, breaks=-5:15, main="")
並べて見てみましょう。画面を3行4列に分割して作図します。
par(mfrow=c(3, 4)) 
for(i in 1:12){
    rnorm(500, mean=5, sd=2) -> x
    hist(x, breaks=-5:15, main="")
}
par(mfrow=c(1, 1))  #画面をもとに戻す。

さて、もう一度、これらが「実際のデータ」だと考えてみてください。データ数が500くらいあれば、データが「峰が2つあるようなないような、、、」という分布になることは、めったになく、「左右非対称な山だなあ」と強く感じることもめったにありません。

 逆に言えば、データが500くらいあるのに、そのように感じるヒストグラムになったときは、そのデータで単純な正規分布を想定した母集団推定などをおこなうのは間違いだということになります。そういう場合は、峰の数だけ山を分ける「コホート解析」や他の確率分布を想定する必要があり、平均値よりも中央値のほうが代表値として適切となるのです。

パソコンがなかった時代
かつて、学生がパソコンをもっていなかった時代、手作業での統計解析は非常に大変でした。私も本学水産学部生だったとき、臨海実習のデータ解析(作図、推定、検定)に、連日深夜までかかっていたことをよく憶えています。それは、実習の思い出としてはけっこう良いものですが、統計解析としては贅沢(=無駄)すぎる時間でした。

 そのような時代には、正規分布が想定できない場合でも、無理やり正規分布にあてはめて(変数変換)解析をしていました。正規分布にあてはめてしまえば、どんな正規分布も標準正規分布に変換できるため、確率(密度)を計算しなくても、早見表(統計学の教科書の巻末によく載っている標準正規分布表)で確率を求めることができたからです。

 もちろん、中心極限定理で多くの確率分布の期待値が正規分布することが分かっていたという理論的根拠もありましたが、実情としては、確率の計算(確率(密度)関数の面積計算)があまりにも大変だからこそ、古典統計学は正規分布に頼った解析手法を発達させたのだと思います。

 けれども、現在は統計解析による困難のうち、かなりの部分をパソコンが引き受けてくれます。そのため、データに適切な確率分布を想定した解析が手軽にできるようになりました。そして、Rを使えば、確率分布の切り替えも簡単です。いろいろな確率分布があることさえ知っていれば、あとは唱える呪文を少し変えるだけで対応できます。

いろいろな確率分布を想定した具体的な解析は、統計解析の入門科目ではほとんど扱いませんが、いろいろな確率分布があるということを知っておくことは重要です。

最后修改: 2021年02月13日 星期六 18:58