「Excelで使っていたNORMSDIST関数、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、NORMSDIST関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はNORM.S.DISTという新しい名前の関数が推奨されています。この記事ではNORMSDIST関数の使い方を、NORM.S.DISTとの違いや移行時のポイントとあわせて解説します。
スプレッドシートのNORMSDIST関数とは
NORMSDIST関数(読み方: ノームズ・ディスト関数)は、標準正規分布にもとづいて累積確率を返す互換関数です。関数名の「NORMS」は「Normal Standard(正規・標準)」の略。「DIST」は「Distribution(分布)」の略です。
標準正規分布とは、平均が0、標準偏差が1の正規分布のことです。あの釣り鐘型のグラフ(ベルカーブ)の中でも、基準となる形ですね。
NORMSDIST関数にできることをまとめると、次のとおりです。
- zスコアから「その値以下になる確率」を求める(累積確率)
- STANDARDIZE関数で標準化したデータの位置を数値化する
- 統計的な判定(p値の算出など)に活用する
NOTE
NORMSDIST関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのNORM.S.DIST関数が推奨されています。新しく数式を書くときはNORM.S.DISTを使いましょう。
NORMSDIST関数の書き方(構文と引数)
基本構文
=NORMSDIST(z)
カッコの中に引数は1つだけです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| z | 必須 | 累積確率を求めたいzスコア(標準化された値) |
NORMDIST関数は4つの引数が必要ですが、NORMSDIST関数は1つだけです。平均と標準偏差は「0と1」に固定されていて、累積確率の計算(TRUE相当)のみに対応しています。
TIP
zスコアとは、データを「平均0・標準偏差1」に変換した値のことです。STANDARDIZE関数で計算できますよ。
NORM.S.DISTとの違い
NORMSDISTとNORM.S.DISTの最大の違いは「引数の数」です。NORM.S.DISTは2番目の引数で累積確率か確率密度かを選べます。一方、NORMSDISTは常に累積確率を返します。
=NORMSDIST(1.5) → 0.9332(累積確率のみ)
=NORM.S.DIST(1.5, TRUE) → 0.9332(累積確率)
=NORM.S.DIST(1.5, FALSE) → 0.1295(確率密度)
違いをまとめると次の表のとおりです。
| 項目 | NORMSDIST | NORM.S.DIST |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| 引数の数 | 1つ(z値のみ) | 2つ(z値 + 累積フラグ) |
| 確率密度(FALSE) | 取得できない | 取得できる |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
既存のシートにNORMSDISTで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
基本的な使い方
NORMSDIST関数の基本的な使い方を見ていきましょう。
zスコアから累積確率を求める
zスコアが1.96のとき、「その値以下になる確率」を求めます。
=NORMSDIST(1.96)
結果は約0.9750(97.5%) です。zスコアが1.96以下になる確率が97.5%という意味ですね。ちなみに統計学でよく使われる「95%信頼区間の上限」がz = 1.96です。
「x以上」の確率を求める
「zスコアがx以上になる確率」は、1から累積確率を引くだけです。
=1 - NORMSDIST(1.96)
結果は約0.0250(2.5%) です。zスコアが1.96を超えるのは全体の2.5%しかありません。
マイナスのzスコアを指定する
zスコアにはマイナスの値も指定できます。
=NORMSDIST(-1.5)
結果は約0.0668(6.7%) です。平均よりも1.5標準偏差分低い値以下になる確率が6.7%ということですね。
NORMSDIST関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
STANDARDIZEと組み合わせて相対位置を求める
NORMSDIST関数は標準正規分布専用なので、元のデータをzスコアに変換してから使います。STANDARDIZE関数と組み合わせると便利です。
平均点が65点、標準偏差が12点の試験で82点を取った場合です。
=NORMSDIST(STANDARDIZE(82, 65, 12))
結果は約0.9222(92.2%) です。82点以下が全体の92.2%なので、上位約7.8%に入っていることがわかります。
TIP
STANDARDIZE関数を使わずに手動で計算する場合は
=NORMSDIST((82-65)/12)と書きます。結果は同じですが、STANDARDIZE関数を使った方が読みやすいですよ。
AVERAGE・STDEVと組み合わせる
実際のデータで使うときは、AVERAGE関数とSTDEV関数を組み合わせると便利です。データが増えても自動で再計算されます。
テストの点数がB2:B31に入っているとします。80点の相対位置を求める数式です。
=NORMSDIST((80 - AVERAGE(B2:B31)) / STDEV(B2:B31))
このようにネスト(入れ子に)すれば、データを追加・変更しても結果が自動更新されます。
ExcelからスプレッドシートへのNORMSDIST移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、NORMSDISTまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のNORMSDIST数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、NORMSDISTの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はNORM.S.DISTを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はNORM.S.DIST関数を使いましょう。NORM.S.DISTなら確率密度(FALSE)も取得でき、将来的な互換性の面でも安心です。
3. 他の旧関数名も同じルール
NORMSDISTだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
| 旧関数名 | 新関数名(推奨) |
|---|---|
| NORMSDIST | NORM.S.DIST |
| NORMDIST | NORM.DIST |
| NORMINV | NORM.INV |
| NORMSINV | NORM.S.INV |
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
よくあるエラーと対処法
NORMSDIST関数でつまずきやすいポイントをまとめました。
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーです。セル参照を使うときは、参照先が数値か確認しましょう。
=NORMSDIST("abc") ← #VALUE! エラー
引数を空にして#N/Aエラー
引数を指定せずに=NORMSDIST()と書くとエラーになります。zスコアの値を必ず指定してください。
NORMSDISTで確率密度が欲しい場合
NORMSDIST関数は累積確率しか返せません。確率密度(グラフの高さ)が必要なときは、NORM.S.DIST関数の第2引数にFALSEを指定してください。
=NORM.S.DIST(1.5, FALSE) → 確率密度を取得
まとめ
NORMSDIST関数は、標準正規分布の累積確率を返す互換関数です。
- NORM.S.DIST(z, TRUE)と計算結果は同じ。引数は1つだけでシンプル
- ただし確率密度(FALSE)は取得できない。密度が必要ならNORM.S.DIST関数を使う
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのNORMSDIST数式は書き換え不要。そのまま動く
- STANDARDIZE関数と組み合わせると、元のデータから相対位置を一発で計算できる
- 新しく数式を書くときはNORM.S.DIST関数を推奨
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつNORM.S.DISTに切り替えていくのがおすすめですよ。
