「zスコアが1.96のとき、上位何%に入るんだっけ?」。統計の教科書で見かけるこの疑問、Excelで一発で解決できます。
正規分布表をめくって値を探すのは手間がかかりますよね。しかも表を読み間違えると計算がずれてしまいます。
そんなときに使うのがNORM.S.DIST関数です。この記事では基本の書き方から実務での活用例まで解説します。NORM.DIST関数との違いもあわせて整理しました。
NORM.S.DIST関数とは?標準正規分布の確率を返す関数
NORM.S.DIST関数(読み方: ノルム・エス・ディスト)は、標準正規分布に従う確率を返す関数です。「NORM」は「Normal Distribution(正規分布)」、「S」は「Standard(標準)」、「DIST」は「Distribution(分布)」の略です。
標準正規分布とは、平均0・標準偏差1に固定された正規分布のことです。実データをzスコア(標準化した値)に変換すると、この分布を使って確率を計算できます。
NORM.S.DIST関数は、NORM.DIST関数の特殊ケースです。NORM.DIST関数で平均0、標準偏差1を指定したときと同じ結果を返します。引数が2つだけなので、zスコアの確率を求めるときはこちらのほうがシンプルに書けます。
NORM.S.DIST関数でできることをまとめると、次のとおりです。
- zスコアから「下位何%に位置するか」を計算する
- 統計的検定でp値や臨界値を確認する
- 正規分布表を引く代わりにExcelで確率を求める
- STANDARDIZE関数と組み合わせて実データの確率を求める
NOTE
NORM.S.DIST関数はExcel 2010以降で使えます。Microsoft 365、Excel 2013〜2024のすべてのバージョンに対応しています。
NORM.S.DIST関数の書き方(構文と引数)
基本構文
=NORM.S.DIST(z, 関数形式)
カッコの中に、確率を求めたいzスコアと出力の形式を指定します。NORM.DIST関数と違い、平均と標準偏差の指定は不要です(平均0・標準偏差1に固定されているため)。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| z | 必須 | 確率を求めたい値(zスコア)。数値を指定する |
| 関数形式 | 必須 | TRUEで累積分布関数(CDF)、FALSEで確率密度関数(PDF) |
2つの引数はどちらも必須です。省略するとエラーになります。
TIP
関数形式にはTRUE/FALSEのほか、1/0でも指定できます。実務ではほとんどの場面でTRUE(累積分布関数)を使います。
累積分布関数(CDF)と確率密度関数(PDF)の違い
ちょっとむずかしく見えますが、やっていることはシンプルです。
- CDF(TRUE): 「z以下になる確率」を返す。0〜1の値になる。「下位何%?」を知りたいときに使う
- PDF(FALSE): 「zにおける確率密度」を返す。標準正規分布の曲線の高さ。グラフ描画で使う
たとえばz = 1.96のとき、CDFは「1.96以下になる確率(約97.5%)」を返し、PDFは「z = 1.96における曲線の高さ」を返します。
NORM.S.DIST関数の基本的な使い方
zスコアを使った基本的な計算例を見ていきましょう。
z = 0(平均値)の確率を求める
=NORM.S.DIST(0, TRUE)
結果は 0.5(50%)です。z = 0は標準正規分布のちょうど真ん中なので、「0以下になる確率」は50%になります。
z = 1.96の確率を求める(95%信頼区間)
=NORM.S.DIST(1.96, TRUE)
結果は約 0.975(97.5%)です。統計でよく使う値で、「平均から1.96標準偏差以内に全体の95%が収まる」ことを意味します。
z = -1.96の確率を求める
=NORM.S.DIST(-1.96, TRUE)
結果は約 0.025(2.5%)です。標準正規分布は左右対称なので、z = -1.96の確率は z = 1.96の確率を1から引いた値と等しくなります。
マイナスのzスコアとプラスのzスコアの確率をまとめて確認する
よく使うzスコアの確率を一覧表にしておくと便利です。
| zスコア | =NORM.S.DIST(z, TRUE) | 意味 |
|---|---|---|
| -2 | 0.0228(2.3%) | 下位2.3% |
| -1 | 0.1587(15.9%) | 下位15.9% |
| 0 | 0.5000(50%) | ちょうど真ん中 |
| 1 | 0.8413(84.1%) | 上位15.9% |
| 2 | 0.9772(97.7%) | 上位2.3% |
TIP
z = 1なら約68%のデータが平均から1標準偏差以内に収まり、z = 2なら約95%が収まります。この「68-95-99.7ルール」は統計の基本なので、覚えておくと便利ですよ。
NORM.S.DIST関数の実践的な使い方・応用例
STANDARDIZE関数と組み合わせて実データの確率を求める
テストの点数が平均65点、標準偏差12点で、80点の生徒が上位何%に入るかを求めてみましょう。
まずSTANDARDIZE関数でzスコアに変換します。
=STANDARDIZE(80, 65, 12)
結果は 1.25 です。次にNORM.S.DIST関数で確率を求めます。
=NORM.S.DIST(1.25, TRUE)
結果は約 0.8944(89.4%)です。80点はクラスの上位約10.6%に位置することがわかります。
1つの数式にまとめることもできます。
=NORM.S.DIST(STANDARDIZE(80, 65, 12), TRUE)
この方法は、NORM.DIST関数を使って =NORM.DIST(80, 65, 12, TRUE) と書いた場合と同じ結果になります。zスコアの算出過程を明示したいときはSTANDARDIZE関数との組み合わせが、シンプルに結果だけ欲しいときはNORM.DIST関数のほうが便利です。
統計的検定でp値を計算する
データ分析で「この結果は偶然ではないか?」を判断するとき、zスコアからp値を求める場面があります。
たとえば、あるABテストの結果からzスコアが2.33と算出されたとします。この値の片側p値を求めてみましょう。
=1 - NORM.S.DIST(2.33, TRUE)
結果は約 0.0099(約1%)です。p値が0.05(5%)より小さいので、「統計的に有意な差がある」と判断できます。
両側検定のp値を求めたい場合は、片側の値を2倍にします。
=2 * (1 - NORM.S.DIST(2.33, TRUE))
結果は約 0.0198(約2%)です。両側検定でも有意水準5%を満たしています。
製品検査でzスコアによる合否判定を行う
製品の重量を標準化して、規格外かどうかをzスコアで判定する方法です。
平均500g、標準偏差5gの製品で、zスコアが2を超えたら「要検査」とフラグを立てる場合、次のように数式を組めます。
=IF(ABS(STANDARDIZE(A2, 500, 5)) > 2, "要検査", "合格")
このとき、zスコアが2を超える確率はNORM.S.DIST関数で確認できます。
=2 * (1 - NORM.S.DIST(2, TRUE))
結果は約 0.0456(約4.6%)です。全体の約4.6%が「要検査」に該当する計算になります。
TIP
AVERAGE関数とSTDEV.P関数で平均と標準偏差を求めれば、STANDARDIZE関数に渡してzスコアを算出し、NORM.S.DIST関数で確率を求める一連の流れが完成します。
よくあるエラーと対処法・似た関数との違い
#VALUE!エラー
引数に数値以外の文字列を指定すると発生します。
=NORM.S.DIST("abc", TRUE) → #VALUE!エラー
セル参照を使う場合は、参照先に数値が入っているか確認してください。
引数不足エラー
NORM.S.DIST関数は2つの引数がどちらも必須です。関数形式を省略するとエラーになります。
=NORM.S.DIST(1.96) → エラー(引数不足)
必ず第2引数にTRUEまたはFALSEを指定してください。
結果が0や1に極端に近くなるケース
エラーではありませんが、zスコアが大きい(または小さい)場合、結果が0.0000…や0.9999…のように極端な値になることがあります。
=NORM.S.DIST(5, TRUE) → 0.99999971(ほぼ1)
=NORM.S.DIST(-5, TRUE) → 0.00000029(ほぼ0)
これは標準正規分布の性質どおりの正しい結果です。平均から5標準偏差も離れた値は、ほぼ確実にその範囲内(または範囲外)に収まります。
TIP
NORM.S.DIST関数はNORM.DIST関数と違い、#NUM!エラーが発生しにくいです。NORM.DIST関数では標準偏差に0以下を指定すると#NUM!エラーになりますが、NORM.S.DIST関数は標準偏差が1に固定されているためこの問題が起きません。
NORM.S.DIST関数とNORM.DIST関数の違い
| 項目 | NORM.S.DIST | NORM.DIST |
|---|---|---|
| 引数の数 | 2(z, 関数形式) | 4(x, 平均, 標準偏差, 関数形式) |
| 分布の指定 | 平均0・標準偏差1に固定 | 任意の平均・標準偏差を指定できる |
| 使う場面 | zスコアの確率を求めるとき | 実データの確率を直接求めるとき |
NORM.DIST関数で平均0、標準偏差1を指定すると、NORM.S.DIST関数と同じ結果になります。
=NORM.S.DIST(1.96, TRUE) → 0.975
=NORM.DIST(1.96, 0, 1, TRUE) → 0.975(同じ結果)
どちらを使えばいいか迷ったら
以下の基準で判断してみてください。
- NORM.S.DIST関数を使う場面: すでにzスコアに変換した値の確率を求めたい、統計的検定のp値を計算したい
- NORM.DIST関数を使う場面: 実データの平均・標準偏差がわかっていて、生の値の確率を直接求めたい(例: 80点が上位何%か)
実務で「ある値が上位何%か」を手軽に求めたいだけなら、NORM.DIST関数のほうが便利です。平均や標準偏差をわざわざ標準化する必要がないので1つの数式で完結します。一方、統計的検定やzスコアを使った分析ではNORM.S.DIST関数がよく使われます。
NORM.S.INV関数との関係
NORM.S.DIST関数が「zスコア → 確率」を返すのに対し、NORM.S.INV関数は「確率 → zスコア」を返す逆関数です。
=NORM.S.DIST(1.96, TRUE) → 0.975(z → 確率)
=NORM.S.INV(0.975) → 1.96(確率 → z)
セットで覚えておくと、統計的な分析の幅が広がります。
旧NORMSDIST関数との互換性
NORM.S.DIST関数はExcel 2010で導入された「新しい名前」の関数です。旧NORMSDIST関数と計算結果はまったく同じです。
| 項目 | NORM.S.DIST | NORMSDIST(旧) |
|---|---|---|
| 導入バージョン | Excel 2010 | Excel 2003以前 |
| 計算結果 | 同一 | 同一 |
| 引数の数 | 2(z, 関数形式) | 1(zのみ、CDF固定) |
| 今後のサポート | 推奨 | 互換性のために残存 |
旧NORMSDIST関数にはCDF/PDFの切り替え機能がなく、常にCDFを返します。Microsoftは新しい関数名の使用を推奨しています。新規で数式を作るときはNORM.S.DIST関数を使いましょう。
関連関数の一覧
| 関数 | 説明 |
|---|---|
| NORM.DIST | 正規分布の確率(任意の平均・標準偏差) |
| NORM.S.DIST | 標準正規分布の確率(平均0・標準偏差1固定) |
| NORM.INV | 正規分布の逆関数(確率→値) |
| NORM.S.INV | 標準正規分布の逆関数(確率→zスコア) |
| NORMSDIST | NORM.S.DISTの旧名称 |
| STANDARDIZE | データをzスコアに変換する |
| STDEV.P | 母集団の標準偏差を求める |
| AVERAGE | 平均値を求める |
まとめ
NORM.S.DIST関数は、標準正規分布(平均0・標準偏差1)に従う確率を返す関数です。
この記事のポイント
- 構文は
=NORM.S.DIST(z, 関数形式)の2つの引数を指定する - 関数形式をTRUEにすると累積分布関数(CDF)、FALSEにすると確率密度関数(PDF)
- 実務ではCDF(TRUE)を使う場面がほとんど。「z以下になる確率」が求まる
- 「z以上の確率」は
=1 - NORM.S.DIST(...)で計算する - NORM.DIST関数の特殊ケース(平均0・標準偏差1を固定)で、引数が少なくシンプル
- STANDARDIZE関数と組み合わせれば、実データの確率もNORM.S.DIST関数で求められる
関連記事
NORM.S.DIST関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
