「確率が0.95のとき、zスコアはいくつになるんだろう?」。統計分析をしていると、確率からzスコア(標準化された値)を逆算したい場面がありますよね。
標準正規分布表を逆引きすれば求められますが、毎回表を探すのは手間がかかります。そもそも小数点以下4桁の確率にぴったり合う値が表にないこともあります。
そんなときに活躍するのが、GoogleスプレッドシートのNORM.S.INV関数です。この記事では基本構文から実務での活用パターン、NORM.INVとの使い分けまで解説します。
スプレッドシートのNORM.S.INV関数とは?
NORM.S.INV関数(読み方: ノーム・エス・インバース関数)は、標準正規分布の逆関数です。「NORM」は「Normal(正規)」、「S」は「Standard(標準)」の略です。「INV」は「Inverse(逆)」の略ですね。
ひとことで言うと、確率を入れるとzスコアを返してくれる関数です。
標準正規分布の「逆関数」って何をする関数?
NORM.S.DIST関数は「zスコア → 確率」の方向で計算します。NORM.S.INV関数はその逆で、「確率 → zスコア」の方向です。
たとえば「累積確率0.95に対応するzスコアは?」という問いに答えてくれます。結果は約1.6449です。つまり「下位95%と上位5%の境目」がz = 1.6449だとわかります。
逆関数(インバース)とは、もとの関数の入力と出力をひっくり返す関数のことです。NORM.S.DISTに確率を「逆入力」するイメージですね。
構文と引数(probabilityの指定方法)
=NORM.S.INV(probability)
引数はたった1つです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| probability | 必須 | 求めたいzスコアに対応する累積確率(0より大きく1より小さい値) |
probabilityには0 < x < 1の範囲で指定します。0ちょうどや1ちょうどを入れると#NUM!エラーになるので注意してください。
NOTE
旧関数名
NORMSINVも使えますが、互換性のために残されているものです。新しく数式を書くときはNORM.S.INVを使いましょう。
NORM.S.DISTとの関係(確率 ↔ zスコアの往復)
NORM.S.INV関数とNORM.S.DIST関数は、入力と出力が逆の関係にあります。
=NORM.S.DIST(1.6449, TRUE) → 約 0.95(zスコア → 確率)
=NORM.S.INV(0.95) → 約 1.6449(確率 → zスコア)
このように片方の出力をもう片方に渡すと、元の値に戻ります。この「往復」の性質は、計算結果の検証にも使えますよ。
基本的な使い方
NORM.S.INV関数の基本を、よくある2つのパターンで見ていきましょう。
上位5%に入るzスコアを求める(片側検定)
「上位5%の境目となるzスコアはいくつか?」を求めるケースです。下位95%の累積確率に対応するzスコアを計算します。
=NORM.S.INV(0.95)
結果は約1.6449です。zスコアが1.6449を超えれば、上位5%に入ることを意味します。片側検定(かたがわけんてい)で有意水準5%の臨界値を求めるときに使うパターンです。
片側検定とは、「ある方向にだけ差があるか」を調べる統計的検定のことです。
両側95%信頼区間の臨界値を求める
両側95%信頼区間(りょうがわしんらいくかん)では、上下2.5%ずつを除外します。右側の臨界値を求めるには確率0.975を指定します。
=NORM.S.INV(0.975)
結果は約1.9600です。左側の臨界値は符号を反転して-1.9600になります。つまり「z = -1.96 から z = 1.96 の範囲」が95%信頼区間です。
この1.96という値は統計で最も頻出する数字の1つです。覚えておくと便利ですよ。
代表的な確率値とzスコアの対応をまとめておきます。
| 確率(probability) | zスコア(戻り値) | よく使う場面 |
|---|---|---|
| 0.90 | 1.2816 | 片側10%臨界値 |
| 0.95 | 1.6449 | 片側5%臨界値 |
| 0.975 | 1.9600 | 両側95%信頼区間 |
| 0.99 | 2.3263 | 片側1%臨界値 |
| 0.995 | 2.5758 | 両側99%信頼区間 |
実務での活用例
基本がわかったところで、実際の業務で使えるパターンを紹介します。
品質管理:不良率から合否ラインのzスコアを算出
製造業の品質管理で「不良率2%以下に抑えたい」場面を考えます。不良率2%ということは、上位2%を超えたら規格外です。
合否ラインのzスコアを求めるには、下位98%に対応するzを計算します。
=NORM.S.INV(1 - 0.02)
これは=NORM.S.INV(0.98)と同じで、結果は約2.0537です。
つまりzスコアが2.0537を超えるデータは不良品と判定できます。平均や標準偏差がわかれば、元の単位(mmやgなど)に換算して合否ラインを設定できますよ。
テスト結果分析:偏差値への応用
テストの点数を偏差値に変換する場面でも使えます。偏差値は「平均50、標準偏差10」に変換した値です。
たとえば「上位10%は偏差値いくつ以上か?」を求めるには、次のように計算します。
=50 + 10 * NORM.S.INV(1 - 0.10)
NORM.S.INV(0.90)は約1.2816なので、結果は約62.8です。偏差値63以上が上位10%の目安になります。
同じ考え方で、上位5%の偏差値も出してみましょう。
=50 + 10 * NORM.S.INV(0.95)
結果は約66.4です。偏差値67以上が上位5%ということですね。
NORM.INVとの組み合わせで元の単位に戻す
NORM.S.INV関数はzスコアを返すだけなので、元の単位に戻すにはもうひと手間必要です。NORM.INV関数を使えば、平均と標準偏差を指定して直接求められます。
たとえば平均170cm・標準偏差6cmの身長データで、上位5%の身長を求める場合です。
=NORM.INV(0.95, 170, 6)
結果は約179.9です。NORM.S.INVで求めたzスコアから手動計算しても同じ結果になります。
=170 + 6 * NORM.S.INV(0.95)
結果は約179.9です。どちらでも同じ値が出ますが、元の単位で直接答えが欲しいならNORM.INV関数のほうがシンプルですね。
往復確認パターン:計算結果が正しいか検証する方法
統計の計算は「結果が合っているのか不安」になりがちです。NORM.S.INV関数には、結果を簡単に検証できる方法があります。
NORM.S.INV → NORM.S.DIST で元の確率に戻す
NORM.S.INV関数の出力をNORM.S.DIST関数に渡すと、元の確率に戻るはずです。
=NORM.S.DIST(NORM.S.INV(0.95), TRUE)
結果は0.95です。元の確率と一致すれば、計算が正しいと確認できます。
もう少し変わった確率値でも試してみましょう。
=NORM.S.DIST(NORM.S.INV(0.123), TRUE)
結果は0.123です。どんな確率値でも往復すれば元に戻ります。この検証パターンは覚えておくと安心ですよ。
STANDARDIZE と組み合わせたzスコア検証
実際のデータでzスコアを使うときは、STANDARDIZE関数と組み合わせて検証できます。
たとえば「平均65点・標準偏差12点の試験で上位5%は何点以上か」を求めたとします。
ステップ1: 上位5%のzスコアを求める
=NORM.S.INV(0.95)
結果は約1.6449です。
ステップ2: 点数に換算する(平均 + 標準偏差 x z)
=65 + 12 * NORM.S.INV(0.95)
結果は約84.7です。
ステップ3: STANDARDIZE関数で逆検証する
=STANDARDIZE(84.7, 65, 12)
結果は約1.64です。ステップ1のzスコアとほぼ一致するので、計算が正しいと確認できますね。
NORM.INVとの使い分け早見表
NORM.S.INV関数とNORM.INV関数は、どちらも「確率 → 値」の逆算をする関数です。違いは引数の数と対象の分布です。
| 項目 | NORM.S.INV | NORM.INV |
|---|---|---|
| 引数の数 | 1つ(確率のみ) | 3つ(確率、平均、標準偏差) |
| 対象 | 標準正規分布(平均0・標準偏差1) | 任意の正規分布 |
| 戻り値 | zスコア | 元の単位の値 |
| 数式の関係 | NORM.S.INV(p) | NORM.INV(p, 0, 1) と同じ |
| 使いどころ | 臨界値・zスコアを求めるとき | 元の単位で境界値を求めるとき |
使い分けのポイントをまとめます。
- zスコアが欲しい → NORM.S.INV(引数1つでシンプル)
- 元の単位(cm、点数など)の値が欲しい → NORM.INV
- 平均0・標準偏差1で固定 → NORM.S.INV
- 平均や標準偏差を自分で指定したい → NORM.INV
実はNORM.S.INV(p)とNORM.INV(p, 0, 1)は同じ結果を返します。どちらを使っても計算結果は変わりませんよ。
よくあるエラーと対処法
NORM.S.INV関数でつまずきやすいポイントを2つ紹介します。
#NUM! エラー:確率が0以下または1以上
最もよくあるエラーです。引数のprobabilityに0以下や1以上の値を指定すると、#NUM!エラーになります。
=NORM.S.INV(0) ← #NUM! エラー(0は不可)
=NORM.S.INV(1) ← #NUM! エラー(1は不可)
=NORM.S.INV(-0.5) ← #NUM! エラー(負の値は不可)
=NORM.S.INV(1.2) ← #NUM! エラー(1以上は不可)
有効な範囲は0より大きく1より小さい値です。境界の0と1は含まないので注意してください。
=NORM.S.INV(0.5) ← OK(結果は 0)
=NORM.S.INV(0.001) ← OK(結果は約 -3.0902)
セル参照を使うときは、参照先の値が0〜1の範囲に収まっているか確認しましょう。
#VALUE! エラー:引数が数値でない
引数に文字列を渡すと#VALUE!エラーになります。
=NORM.S.INV("abc") ← #VALUE! エラー
=NORM.S.INV(A1) ← A1がテキストなら #VALUE! エラー
セル参照のときは、参照先が数値かどうかを確認してください。ISNUMBER関数(セルの値が数値かどうかを判定する関数)で事前にチェックする方法もあります。
=IF(ISNUMBER(A1), NORM.S.INV(A1), "数値を入力してください")
まとめ
NORM.S.INV関数は、確率からzスコアを逆算する関数です。
- 引数は1つだけ。0より大きく1より小さい確率値を指定する
- 標準正規分布(平均0・標準偏差1)のzスコアを返す
- NORM.S.DIST関数の逆関数。確率とzスコアを往復できる
- 品質管理の合否ライン算出や信頼区間の臨界値計算に活用できる
- 元の単位で値を求めたいときはNORM.INV関数と使い分ける
- 計算結果に不安があれば、NORM.S.DISTに戻して検証するクセをつけよう
「この確率のときのzスコアは?」をスプレッドシートでパッと計算できると、統計分析がぐっとスムーズになります。ぜひ実務のデータで試してみてくださいね。
