「Excelで使っていたGAMMAINV関数、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、GAMMAINV関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はGAMMA.INVという新しい名前の関数が推奨されています。この記事ではスプレッドシートのGAMMAINV関数の使い方を、GAMMA.INVとの違いや移行時のポイントとあわせて解説します。
GAMMAINV関数とは
GAMMAINV関数(読み方: ガンマ・インバース関数)は、ガンマ分布の逆関数を求める互換関数です。累積確率を指定すると、その確率に対応する値を返してくれます。「GAMMA」はギリシャ文字のガンマに由来する数学用語です。「INV」は「Inverse(逆)」の略です。
たとえば「問い合わせ3件分の対応が95%の確率で収まる時間」を1つの数式で求められます。
GAMMAINV関数にできることをまとめると、次のとおりです。
- 累積確率から対応するガンマ分布の値を逆算する
- SLA(サービスレベル合意)の基準時間を算出する
- 保険金請求の高額ラインを設定する
- 在庫管理で安全マージンの目安を計算する
NOTE
GAMMAINV関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのGAMMA.INV関数が推奨されています。新しく数式を書くときはGAMMA.INVを使いましょう。
GAMMAINV関数の基本構文と引数
基本構文
=GAMMAINV(確率, alpha, beta)
カッコの中に3つの引数を指定します。
引数の意味
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 確率(probability) | 必須 | ガンマ分布の累積確率。0より大きく1より小さい値 |
| alpha(アルファ) | 必須 | 形状パラメータ(正の数値) |
| beta(ベータ) | 必須 | 尺度パラメータ(正の数値) |
alphaは「形状パラメータ」で、分布の形を決めます。イベント回数に相当します。betaは「尺度パラメータ」で、分布の広がりを決めます。1回あたりの平均時間に相当します。
TIP
確率に0.95を指定すると「累積95%の境界値」が返ります。「95%の確率で収まる上限値」という意味です。SLA設計や安全在庫の算出でよく使われる考え方ですよ。
GAMMA.INVとの違い
GAMMAINVとGAMMA.INVの違いは「関数名のみ」です。引数の順番も計算結果も完全に同じです。
=GAMMAINV(0.95, 3, 10) → 約55.46
=GAMMA.INV(0.95, 3, 10) → 約55.46
違いをまとめると次の表のとおりです。
| 項目 | GAMMAINV | GAMMA.INV |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 引数・戻り値 | 同じ | 同じ |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
Excelでは2007年までGAMMAINVが標準でした。2010以降でピリオド付きのGAMMA.INVに名称が変更されています。Googleスプレッドシートもこの命名規則に合わせています。
既存のシートにGAMMAINVで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
スプレッドシートでのGAMMAINV関数の使い方
GAMMAINV関数で累積確率からガンマ分布の値を逆算する方法を見ていきましょう。
確率から値を逆算する(基本例)
まずはシンプルな例で動きを確認します。alpha=3、beta=10のガンマ分布で、累積確率50%に対応する値を求めます。
=GAMMAINV(0.5, 3, 10)
結果は約26.77です。「alpha=3、beta=10のガンマ分布で、値が26.77以下となる確率がちょうど50%」という意味です。
確率を変えて、いくつかの値を見てみましょう。
| 確率 | 数式 | 結果 | 意味 |
|---|---|---|---|
| 0.10 | =GAMMAINV(0.10, 3, 10) | 約13.39 | 下位10%の境界値 |
| 0.25 | =GAMMAINV(0.25, 3, 10) | 約19.34 | 第1四分位 |
| 0.50 | =GAMMAINV(0.50, 3, 10) | 約26.77 | 中央値 |
| 0.75 | =GAMMAINV(0.75, 3, 10) | 約36.78 | 第3四分位 |
| 0.90 | =GAMMAINV(0.90, 3, 10) | 約48.50 | 上位10%のボーダー |
| 0.95 | =GAMMAINV(0.95, 3, 10) | 約55.46 | 上位5%のボーダー |
確率が大きくなるほど、返される値も大きくなります。ガンマ分布は右裾が長いので、90%以上の確率では値が急激に大きくなるのが特徴ですよ。
GAMMA.DISTとの検算
GAMMAINV関数の結果が正しいか確認するには、GAMMA.DIST関数で検算します。
=GAMMAINV(0.95, 3, 10) → 約55.46
=GAMMA.DIST(55.46, 3, 10, TRUE) → 約0.9500
GAMMAINVで求めた値をGAMMA.DISTに入れると、元の確率に戻ります。逆関数の関係がきちんと成り立っていますね。
GAMMAINV関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
SLAの基準時間を算出する
コールセンターで「平均10分間隔で問い合わせが来る」状況を考えましょう。3件の問い合わせに対応する合計時間について、「95%の確率で収まる上限時間」を求めます。
alpha=3(3件)、beta=10(1件あたり平均10分)です。
=GAMMAINV(0.95, 3, 10)
結果は約55.46分です。95%の確率で3件の対応は約55分以内に完了します。この値をもとに「3件対応は60分以内」とSLAを設定すれば、十分な余裕を持たせられますね。
保険金の高額請求ラインを決める
保険金請求がalpha=2、beta=50万円のガンマ分布に従うケースです。「上位5%に入る高額請求の境界額」を求めます。
=GAMMAINV(0.95, 2, 50)
結果は約224.22万円です。請求の95%が約224万円以下に収まります。この金額を超える請求を「高額」と判断する基準にできますよ。
GAMMADISTとの関係(順方向と逆方向)
GAMMAINV関数は、GAMMADIST関数の逆関数です。2つの関数は「入力と出力が逆」の関係にあります。
| 関数 | 入力 | 出力 | 方向 |
|---|---|---|---|
| GAMMADIST | 値(x) | 確率(p) | 値 → 確率 |
| GAMMAINV | 確率(p) | 値(x) | 確率 → 値 |
具体例で確認してみましょう。alpha=3、beta=10の場合です。
=GAMMADIST(40, 3, 10, TRUE) → 約0.7619(40以下の確率)
=GAMMAINV(0.7619, 3, 10) → 約40.00
GAMMADISTに40を入れると確率0.7619が返り、GAMMAINVに0.7619を入れると40が返ります。お互いの結果を入れ替えても元に戻るということですね。
使い分けのポイントは次のとおりです。
- 「40分以内に収まる確率は?」 → GAMMADIST関数(値がわかっていて確率を知りたい)
- 「95%で収まる時間は何分?」 → GAMMAINV関数(確率がわかっていて値を知りたい)
新しい関数名を使う場合はGAMMA.INV関数とGAMMA.DIST関数の組み合わせになります。
ExcelからスプレッドシートへのGAMMAINV移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、GAMMAINVまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のGAMMAINV数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、GAMMAINVの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はGAMMA.INVを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はGAMMA.INV関数を使いましょう。将来的な互換性を考えると、推奨関数を使っておくのが安心です。
3. 他の旧関数名も同じルール
GAMMAINVだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
| 旧関数名 | 新関数名(推奨) |
|---|---|
| GAMMADIST | GAMMA.DIST |
| GAMMAINV | GAMMA.INV |
| NORMINV | NORM.INV |
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
よくあるエラーと対処法
GAMMAINV関数でつまずきやすいポイントをまとめました。
確率に0以下や1以上を指定して#NUM!エラー
確率は「0より大きく1より小さい値」でなければなりません。0や1、負の数を指定すると#NUM!エラーになります。
=GAMMAINV(0, 3, 10) ← #NUM! エラー
=GAMMAINV(1, 3, 10) ← #NUM! エラー
=GAMMAINV(-0.5, 3, 10) ← #NUM! エラー
他のセルの計算結果を確率として渡すときは、値が0〜1の範囲内か確認しておきましょう。
alphaに0以下を指定して#NUM!エラー
alphaは正の数値が必要です。0や負の値を指定するとエラーになります。
=GAMMAINV(0.5, 0, 10) ← #NUM! エラー
betaに0以下を指定して#NUM!エラー
betaも正の数値が必要です。0以下はエラーです。
=GAMMAINV(0.5, 3, 0) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値になっているか確認してくださいね。
まとめ
GAMMAINV関数は、ガンマ分布で累積確率から値を逆算する互換関数です。
- GAMMA.INV関数と引数・計算結果は完全に同じ。違いは関数名だけ
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのGAMMAINV数式は書き換え不要。そのまま動く
- 新しく数式を書くときはGAMMA.INV関数を推奨
- SLA設計で「95%で収まる時間」を算出したり、保険金の高額請求ラインを設定したりできる
- 確率に0や1を指定すると
#NUM!エラー。alphaとbetaは正の数で指定する
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつGAMMA.INVに切り替えていくのがおすすめですよ。
