「Excelで使っていたNORMINV関数、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、NORMINV関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はNORM.INVという新しい名前の関数が推奨されています。この記事ではスプレッドシートのNORMINV関数の使い方を、NORM.INVとの違いや移行時のポイントとあわせて解説します。
NORMINV関数とは
NORMINV関数(読み方: ノーム・インバース関数)は、正規分布の逆関数を求める互換関数です。確率を指定すると、その確率に対応する値を返してくれます。「NORM」は「Normal(正規)」、「INV」は「Inverse(逆)」の略です。
たとえば「平均60点・標準偏差10点のテストで、上位10%に入るには何点必要か」を1つの数式で求められます。
NORMINV関数にできることをまとめると、次のとおりです。
- 確率(パーセンタイル)から対応する値を逆算する
- 成績評価のグレード境界値(上位10%、上位30%など)を算出する
- 品質管理で規格の上限・下限値を設定する
NOTE
NORMINV関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのNORM.INV関数が推奨されています。新しく数式を書くときはNORM.INVを使いましょう。
NORMINV関数の基本構文と引数
基本構文
=NORMINV(確率, 平均, 標準偏差)
カッコの中に3つの引数を指定します。
引数の意味
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 確率(probability) | 必須 | 0より大きく1より小さい確率値 |
| 平均(mean) | 必須 | 正規分布の平均値 |
| 標準偏差(standard_deviation) | 必須 | 正規分布の標準偏差(0より大きい値) |
確率には0と1そのものは指定できません。0や1を入力すると#NUM!エラーになります。
TIP
確率に0.9を指定すると「下位90%の境界値」が返ります。つまり「上位10%のボーダーライン」です。「上位○%」で考えるときは「1 – 上位の割合」を確率に指定してくださいね。
NORM.INVとの違い
NORMINVとNORM.INVの違いは「関数名のみ」です。引数の順番も計算結果も完全に同じです。
=NORMINV(0.9, 60, 10) → 約72.8
=NORM.INV(0.9, 60, 10) → 約72.8
違いをまとめると次の表のとおりです。
| 項目 | NORMINV | NORM.INV |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 引数・戻り値 | 同じ | 同じ |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
Excelでは2007年までNORMINVが標準でした。2010以降でピリオド付きのNORM.INVに名称が変更されています。Googleスプレッドシートもこの命名規則に合わせています。
既存のシートにNORMINVで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
スプレッドシートでのNORMINV関数の使い方
NORMINV関数で確率から値を逆算する方法を見ていきましょう。
確率から値を逆算する(基本例)
まずはシンプルな例で動きを確認します。平均60点・標準偏差10点のテストを想定します。
=NORMINV(0.5, 60, 10)
結果は60です。確率0.5(50%)を指定すると、ちょうど平均値が返ります。正規分布は左右対称なので、真ん中が平均値になるわけですね。
確率を変えて、いくつかの値を見てみましょう。
| 確率 | 数式 | 結果 | 意味 |
|---|---|---|---|
| 0.1 | =NORMINV(0.1, 60, 10) | 約47.2 | 下位10%の境界値 |
| 0.25 | =NORMINV(0.25, 60, 10) | 約53.3 | 下位25%の境界値(第1四分位) |
| 0.5 | =NORMINV(0.5, 60, 10) | 60.0 | ちょうど平均値 |
| 0.75 | =NORMINV(0.75, 60, 10) | 約66.7 | 上位25%のボーダー |
| 0.9 | =NORMINV(0.9, 60, 10) | 約72.8 | 上位10%のボーダー |
確率が大きくなるほど、返される値も大きくなります。確率0.5で平均値、それより小さいと平均以下、大きいと平均以上の値が返りますよ。
AVERAGE・STDEVとのネスト活用
NORMINV関数を使うには、平均と標準偏差が必要です。AVERAGE関数とSTDEV関数を組み合わせると、データが増えても自動で再計算されます。
テストの点数がB2:B31に入っているとします。
=NORMINV(0.9, AVERAGE(B2:B31), STDEV(B2:B31))
このようにネスト(入れ子に)すれば、データを追加・変更しても結果が自動更新されます。平均や標準偏差を別セルに出しておいて参照する方法でもOKです。
TIP
NORMINVの中でもNORM.INVの中でも、AVERAGE・STDEVとの組み合わせ方はまったく同じです。関数名が違うだけで使い方は変わりませんよ。
NORMINV関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
成績評価のグレード境界値を算出する
テストや人事評価で「上位10%をA評価、上位30%をB評価」とグレード分けしたいときに使えます。
評価スコアの平均が70点、標準偏差が15点の場合です。
=NORMINV(0.9, 70, 15)
結果は約89.2です。つまり89点以上が上位10%(A評価)のボーダーラインです。
同じ要領で各グレードの境界値をまとめると、次のようになります。
| 評価 | 確率 | 数式 | 境界値 |
|---|---|---|---|
| A(上位10%) | 0.9 | =NORMINV(0.9, 70, 15) | 約89.2 |
| B(上位30%) | 0.7 | =NORMINV(0.7, 70, 15) | 約77.9 |
| C(上位70%) | 0.3 | =NORMINV(0.3, 70, 15) | 約62.1 |
| D(下位10%) | 0.1 | =NORMINV(0.1, 70, 15) | 約50.8 |
実際のデータで使うなら、AVERAGE関数とSTDEV関数を組み合わせるのがおすすめです。
=NORMINV(0.9, AVERAGE(B2:B31), STDEV(B2:B31))
データが変わっても境界値が自動更新されるので便利ですよ。
品質管理の規格値を設定する
製造業で「不良率を1%以内に抑えたい」ときの規格上限・下限を求められます。
部品の重量が平均500g・標準偏差5gの場合です。不良率1%以内ということは、下位0.5%と上位0.5%を規格外にします。
=NORMINV(0.005, 500, 5)
=NORMINV(0.995, 500, 5)
結果は下限が約487.1g、上限が約512.9gです。この範囲に収まる製品は全体の99%になります。
規格値をこのように統計的に設定すると、「なぜこの数値なのか」を根拠をもって説明できますよね。
NORMDISTとの関係(順方向と逆方向)
NORMINV関数は、NORMDIST関数の逆関数です。2つの関数は「入力と出力が逆」の関係にあります。
| 関数 | 入力 | 出力 | 方向 |
|---|---|---|---|
| NORMDIST | 値(x) | 確率(p) | 値 → 確率 |
| NORMINV | 確率(p) | 値(x) | 確率 → 値 |
具体例で確認してみましょう。平均60・標準偏差10の場合です。
=NORMDIST(72.8, 60, 10, TRUE) → 約0.9(90%)
=NORMINV(0.9, 60, 10) → 約72.8
NORMDISTに72.8を入れると確率0.9が返り、NORMINVに0.9を入れると72.8が返ります。お互いの結果を入れ替えても元に戻るということですね。
使い分けのポイントは次のとおりです。
- 「80点は上位何%?」 → NORMDIST関数(値がわかっていて確率を知りたい)
- 「上位10%は何点から?」 → NORMINV関数(確率がわかっていて値を知りたい)
新しい関数名を使う場合はNORM.INV関数とNORM.DIST関数の組み合わせになります。
ExcelからスプレッドシートへのNORMINV移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、NORMINVまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のNORMINV数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、NORMINVの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はNORM.INVを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はNORM.INV関数を使いましょう。将来的な互換性を考えると、推奨関数を使っておくのが安心です。
3. 他の旧関数名も同じルール
NORMINVだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
よくあるエラーと対処法
NORMINV関数でつまずきやすいポイントをまとめました。
確率に0以下や1以上を指定して#NUM!エラー
確率は「0より大きく1より小さい値」でなければなりません。0や1、負の数を指定すると#NUM!エラーになります。
=NORMINV(0, 60, 10) ← #NUM! エラー
=NORMINV(1, 60, 10) ← #NUM! エラー
=NORMINV(-0.5, 60, 10) ← #NUM! エラー
他のセルの計算結果を確率として渡すときは、値が0〜1の範囲内か確認しておきましょう。
標準偏差に0以下を指定して#NUM!エラー
標準偏差は0より大きい値が必要です。データがすべて同じ値のとき、STDEV関数は0を返します。そのままNORMINVに渡すとエラーになるので注意してください。
=NORMINV(0.9, 60, 0) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値になっているか確認してくださいね。
まとめ
NORMINV関数は、正規分布で確率から値を逆算する互換関数です。
- NORM.INV関数と引数・計算結果は完全に同じ。違いは関数名だけ
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのNORMINV数式は書き換え不要。そのまま動く
- 新しく数式を書くときはNORM.INV関数を推奨
- AVERAGE関数とSTDEV関数と組み合わせると、平均・標準偏差を自動計算できる
- 確率に0や1を指定すると
#NUM!エラー。範囲は0より大きく1より小さい値
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつNORM.INVに切り替えていくのがおすすめですよ。
