NORM.DIST関数は、正規分布で「ある値以下になる確率(割合)」を求める関数です。「平均60点・標準偏差10点のテストで、70点以下の人は何%いるか」のように、平均とばらつきから割合を見積もるときに使います。
この記事では、エクセルで正規分布を扱う方法を、NORM.DIST 関数の書き方、「以下・以上・〜の間」の割合の出し方、正規分布のグラフの作り方、上位○%の境界を出す NORM.INV、実際のデータから平均と標準偏差を出して使う方法まで、実際の Excel の画面で説明します。
正規分布とは
正規分布は、平均のまわりにデータが多く集まり、平均から離れるほど少なくなる、左右対称のつりがね型の分布です。テストの点数や身長などがこの形に近くなります。平均から標準偏差1つ分の範囲(平均±標準偏差)に、全体の約68%が入ります。
NORM.DIST関数の書き方(構文)
=NORM.DIST(x, 平均, 標準偏差, 関数形式)
| 引数 | 意味 |
|---|---|
| x | 割合を知りたい値(70点など) |
| 平均 | 分布の平均 |
| 標準偏差 | 分布のばらつき。0 より大きい値 |
| 関数形式 | TRUE なら「x 以下になる割合(累積)」、FALSE なら「x のところのグラフの高さ(確率密度)」 |
割合を知りたいときは、4つ目を TRUE にします。NORM.DIST は Excel 2010 以降で使えます(古い Excel の NORMDIST 関数も同じ結果でした)。
「以下」「以上」「〜の間」の割合を求める
平均 60、標準偏差 10 のテストで、70点以下の割合を求めます。E1 に次の式を入れると 84.1% になりました。
=NORM.DIST(B3,B1,B2,TRUE)

| 知りたいこと | 式 | 結果 |
|---|---|---|
| 70点以下の割合 | =NORM.DIST(70,60,10,TRUE) | 84.1% |
| 70点以上の割合 | =1-NORM.DIST(70,60,10,TRUE) | 15.9% |
| 50〜70点の割合 | =NORM.DIST(70,60,10,TRUE)-NORM.DIST(50,60,10,TRUE) | 68.3% |
| 上位10%に入る点数 | =NORM.INV(0.9,60,10) | 72.8 |
NORM.DIST が返すのは「x 以下」の割合なので、「以上」は 1 から引き、「〜の間」は大きいほうから小さいほうを引きます。50〜70点(平均±標準偏差)の割合は 68.3% で、上で説明した「約68%」と同じでした。逆に、割合から点数を出すときは NORM.INV 関数を使います。上位10%は「下から90%」なので 0.9 を指定し、72.8点でした(NORM.INV関数の使い方)。
正規分布のグラフを作る
20点から100点まで5点おきの点数を並べ、B列に4つ目を FALSE にした式を入れて、グラフの高さ(確率密度)を出します。
=NORM.DIST(A2,60,10,FALSE)

A1:B18 を選んで[挿入]→[散布図]→[散布図(平滑線)]を選ぶと、平均の60点がいちばん高い、つりがね型のグラフになりました。いちばん高いところ(60点)の値は 0.0399 です。標準偏差を大きくすると、山が低く横に広がります。
実際のデータから平均と標準偏差を出して使う
手元のデータから割合を見積もるときは、まず AVERAGE で平均、STDEV.S で標準偏差を出し、そのセルを NORM.DIST に渡します。20人の点数では、平均 60.0、標準偏差 8.61 でした。
=1-NORM.DIST(70,D1,D2,TRUE)

正規分布で見積もった「70点以上」の割合は 12.3%、実際に数えた割合は 3人/20人で 15.0% でした。データが少ないと、見積もりと実際はずれます。正規分布は「たくさん集めると、この形に近づく」という考え方なので、目安として使います(STDEV.S関数)。
よくある間違い
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 式が入力できない | 4つ目の関数形式(TRUE・FALSE)を省いた | 割合なら TRUE、グラフの高さなら FALSE を必ず書く。 |
| #NUM! になる | 標準偏差が 0 以下 | 標準偏差は 0 より大きい値にする。 |
| 「以上」の割合が大きすぎる | NORM.DIST のまま使った(これは「以下」の割合) | 1 から引く。 |
| 割合ではなく小さな数(0.0242 など)が出る | 4つ目が FALSE(確率密度)になっている | 割合を知りたいときは TRUE にする。 |
試したところ、=NORM.DIST(70,60,10) のように4つ目を省くと、引数が足りずに式を確定できませんでした。標準偏差を 0 にすると #NUM! です。同じ 70点でも、TRUE は 0.8413、FALSE は 0.0242 と別の値になります。
よくある質問
標準正規分布(平均0・標準偏差1)で求めたいときは?
NORM.S.DIST 関数を使います。=NORM.S.DIST(1,TRUE) は 0.841345 で、平均60・標準偏差10 の 70点(平均より標準偏差1つ分上)と同じ割合でした(NORM.S.DIST関数)。
点数を偏差値やzスコアにしたいときは?
zスコアは STANDARDIZE 関数で求めます。=STANDARDIZE(70,60,10) は 1 でした。偏差値は「50+10×zスコア」で、この場合は 60 です(STANDARDIZE関数・偏差値を求める方法)。
カイ二乗検定やt検定もしたいときは?
確率分布・統計検定の関数まとめで、関数ごとの使い分けを紹介しています。カイ二乗検定の手順は カイ二乗検定をする方法で説明しています。

コメント