スプレッドシートのNORM.S.INV関数の使い方|確率からzスコアを逆算する方法

スポンサーリンク

「確率が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.901.2816片側10%臨界値
0.951.6449片側5%臨界値
0.9751.9600両側95%信頼区間
0.992.3263片側1%臨界値
0.9952.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.INVNORM.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スコアは?」をスプレッドシートでパッと計算できると、統計分析がぐっとスムーズになります。ぜひ実務のデータで試してみてくださいね。

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