スプレッドシートのNORM.DIST関数|正規分布の確率を求める

スポンサーリンク

「テストで80点を取ったけど、全体の中でどのくらいの位置にいるんだろう?」。こんな疑問を感じたことはありませんか?

平均と自分のスコアだけでは、相対的な立ち位置が見えません。偏差値を手計算するのも面倒ですよね。

そんなときに使うのがNORM.DIST関数です。この記事ではGoogleスプレッドシートでのNORM.DIST関数の使い方を、基本構文から実務活用まで解説します。TRUE/FALSEの違いや、AVERAGE・STDEV関数との連携ワークフローもあわせて紹介しますよ。

NORM.DIST関数とは

NORM.DIST関数(読み方: ノーム・ディスト関数)は、正規分布にもとづいて確率を返す関数です。正規分布とは、データが平均値を中心に左右対称の釣鐘型に分布するモデルです。「NORM」は「Normal(正規)」、「DIST」は「Distribution(分布)」の略です。

たとえば「平均60点・標準偏差10点のテストで80点以下の人は全体の何%か」を1つの数式で求められます。

NORM.DIST関数にできることをまとめると、次のとおりです。

  • ある値が全体の何%に位置するかを求める(累積確率)
  • 正規分布グラフ上の密度(高さ)を取得する
  • 品質管理で規格内に収まる製品の割合を計算する
  • 成績やKPIの相対的な位置づけを数値化する

NOTE

NORM.DIST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。

基本構文と4つの引数

=NORM.DIST(値, 平均, 標準偏差, 累積)

カッコの中に4つの引数を指定します。

引数必須/任意説明
値(x)必須確率を求めたい数値
平均(mean)必須分布の平均値
標準偏差(standard_deviation)必須分布の標準偏差(0より大きい値)
累積(cumulative)必須TRUEで累積分布、FALSEで確率密度

TIP

標準偏差(データの散らばり具合を表す指標)に0以下を指定すると#NUM!エラーになります。数値以外を指定すると#VALUE!エラーです。

NORMDIST(旧関数名)との関係

GoogleスプレッドシートにはNORMDISTという関数もあります。これはNORM.DISTの旧バージョンで、計算結果は同じです。

=NORMDIST(80, 60, 10, TRUE)   ← 旧関数名(動作は同じ)
=NORM.DIST(80, 60, 10, TRUE)  ← 新関数名(推奨)

どちらを使っても問題ありませんが、Googleの公式ドキュメントではNORM.DISTが推奨されています。新しく数式を書くときはNORM.DISTを使いましょう。

TRUE/FALSEで何が変わる?累積か密度かを選ぼう

NORM.DIST関数の4番目の引数「累積」は、TRUEかFALSEで結果がまったく変わります。この違いを押さえておくことが、NORM.DIST関数を使いこなすポイントです。

TRUE(累積分布関数)——x以下は全体の何%?

TRUEを指定すると累積分布関数(CDF: ある値以下になる確率の合計)の値を返します。実務で使う場面のほとんどがこちらです。

=NORM.DIST(80, 60, 10, TRUE)

この数式は「平均60・標準偏差10の正規分布で、80以下になる確率」を返します。結果は約0.9772(97.7%) です。

つまり80点以下の人が全体の約97.7%を占めるということです。逆にいえば、80点を超えるのは上位約2.3%ですね。

FALSE(確率密度関数)——その値の密度は?

FALSEを指定すると確率密度関数(PDF: 正規分布グラフ上のy座標の値)を返します。

=NORM.DIST(80, 60, 10, FALSE)

結果は約0.0054です。これは「確率」ではなくグラフの高さなので、直接「何%」と読むことはできません。正規分布のグラフを描くときに使います。

2つを比較してみる(サンプルデータつき)

平均60・標準偏差10の正規分布で、値を変えたときの結果を比べてみましょう。

値(x)TRUE(累積確率)FALSE(確率密度)
400.0228(2.3%)0.0054
500.1587(15.9%)0.0242
600.5000(50.0%)0.0399
700.8413(84.1%)0.0242
800.9772(97.7%)0.0054

TRUEの列は値が大きくなるほど1に近づいていきます。FALSEの列は平均値(60)で最大になり、離れるほど小さくなります。

実務では「x以下の確率を知りたい」場面がほとんどなので、TRUEを使うケースが圧倒的に多いですよ。

実務活用3パターン

NORM.DIST関数の基本がわかったところで、実際の業務で使えるパターンを3つ紹介します。

成績分析——自分のスコアが上位何%かを計算

テストや資格試験の結果から、自分の相対的な位置を知りたいときに使えます。

たとえば平均点が65点、標準偏差が12点の試験で82点を取った場合です。

=NORM.DIST(82, 65, 12, TRUE)

結果は約0.9222(92.2%) です。82点以下が全体の92.2%なので、上位約7.8%に入っていることがわかります。

「上位何%か」を直接求めたいときは、次のように書きます。

=1 - NORM.DIST(82, 65, 12, TRUE)

結果は約0.0778、つまり上位7.8%です。チームの成績分析やKPI評価にも応用できますよ。

品質管理——規格範囲内の製品比率を求める

製造業では「規格の上限と下限の間に収まる製品の割合」を計算する場面があります。

たとえば、部品の長さが平均50mm・標準偏差0.5mmで、規格が49mm~51mmの場合です。

=NORM.DIST(51, 50, 0.5, TRUE) - NORM.DIST(49, 50, 0.5, TRUE)

結果は約0.9545(95.4%) です。規格内に収まる製品が約95.4%だとわかります。

「上限以下の確率」から「下限以下の確率」を引くことで、範囲内の確率を求めるテクニックです。品質管理の報告資料などで活躍してくれますよ。

人事評価——評価点の相対位置を可視化する

人事評価のスコアを相対的に比較したい場面でも便利です。

たとえば評価スコアの平均が3.2、標準偏差が0.6のチームで、ある社員のスコアが4.0だった場合です。

=NORM.DIST(4.0, 3.2, 0.6, TRUE)

結果は約0.9088(90.9%) です。この社員のスコアは全体の上位約9%に位置することがわかります。

全員分のスコアに対してNORM.DIST関数を適用すれば、パーセンタイル(百分位数)の一覧表を作れます。評価の偏りや分布を可視化したいときに試してみてください。

AVERAGE・STDEV関数との連携ワークフロー

NORM.DIST関数を使うには、平均と標準偏差が必要です。手入力してもよいのですが、AVERAGE関数STDEV関数を組み合わせると、データが更新されても自動で再計算されます。

実際のワークフローを見てみましょう。テストの点数がB2:B31に入っているとします。

ステップ1: 平均を求める

=AVERAGE(B2:B31)

ステップ2: 標準偏差を求める

=STDEV(B2:B31)

ステップ3: NORM.DIST関数で確率を求める

=NORM.DIST(80, AVERAGE(B2:B31), STDEV(B2:B31), TRUE)

このように数式をネスト(入れ子に)すれば、データを追加・変更しても自動で結果が更新されます。平均や標準偏差を別セルに出しておいて、そのセルを参照する方法でもOKですよ。

TIP

データが母集団(全数データ)の場合は、STDEVの代わりにSTDEV.Pを使いましょう。STDEVは標本標準偏差、STDEV.Pは母集団の標準偏差を返します。

正規分布関数ファミリーの使い分け

Googleスプレッドシートには、正規分布に関連する関数がいくつかあります。それぞれの役割を整理しておきましょう。

NORM.DIST / GAUSS / PHI / STANDARDIZE の違い

関数用途特徴
NORM.DIST任意の平均・標準偏差の正規分布で確率を求める最も汎用的。実務のメイン関数
NORM.S.DIST標準正規分布(平均0・標準偏差1)で確率を求めるNORM.DIST(x,0,1,TRUE)と同じ結果
NORM.INV確率から値を逆算するNORM.DISTの逆関数。上位10%のボーダーライン算出に便利
GAUSS平均から±xσの間の確率を求めるGAUSS(x) = NORM.S.DIST(x,TRUE) – 0.5
PHI標準正規分布の確率密度を返すPHI(x) = NORM.S.DIST(x,FALSE)
STANDARDIZE値を標準化(zスコアに変換)する(x – 平均) / 標準偏差 の計算を関数化

使い分けのポイントはシンプルです。

  • 確率を知りたい → NORM.DIST(平均・標準偏差がわかっているとき)
  • 標準正規分布だけでOK → NORM.S.DIST(すでにzスコアに変換済みのとき)
  • 確率から値を逆算したい → NORM.INV(ボーダーラインの算出)
  • データを標準化したいSTANDARDIZE

迷ったらNORM.DISTを使えばほとんどの場面に対応できますよ。

よくある間違いと注意点

NORM.DIST関数でつまずきやすいポイントをまとめました。

標準偏差に0以下を指定して#NUM!エラー

標準偏差は「0より大きい値」でなければなりません。0を指定すると#NUM!エラーになります。データが全部同じ値のときSTDEV関数は0を返すので、その結果をそのまま渡さないように注意してください。

=NORM.DIST(80, 60, 0, TRUE)   ← #NUM! エラー

引数に文字列を渡して#VALUE!エラー

数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認しましょう。

TRUE/FALSEの指定を間違える

4番目の引数を省略することはできません。TRUEとFALSEでは結果がまったく異なります。「x以下の確率」を求めたいのにFALSEを指定すると、意味のない密度値が返ってきます。目的に合った値を選んでくださいね。

「x以上」の確率を求めるときの計算

NORM.DIST関数は「x以下」の確率を返します。「x以上」の確率が欲しいときは、1から引く必要があります。

=1 - NORM.DIST(80, 60, 10, TRUE)

正規分布を仮定してよいか確認する

NORM.DIST関数は、データが正規分布に従うことを前提とした計算です。極端に偏ったデータには正確な結果を返しません。データの分布が正規分布から大きくずれていないか、SKEW関数で歪度を確認しておくとより安心ですよ。

まとめ

NORM.DIST関数は、正規分布にもとづいて確率を求める関数です。

  • 4番目の引数にTRUEを指定すると「x以下の確率」が返る
  • FALSEを指定するとグラフの密度値が返る(実務ではTRUEが主役)
  • AVERAGE関数STDEV関数と組み合わせるのが基本の使い方
  • 成績分析・品質管理・人事評価など幅広い場面で活用できる
  • 標準偏差に0以下を渡すと#NUM!エラー。STDEV関数と組み合わせるときは注意しよう
  • 関連関数として、逆算したい場合はNORM.INV、標準化にはSTANDARDIZEが便利

「このスコアは全体のどのあたり?」を数値で答えられるようになると、データ分析の幅がぐっと広がります。ぜひ実際のデータで試してみてくださいね。

タイトルとURLをコピーしました