「問い合わせ3件分の対応が95%の確率で収まる時間は何分だろう?」。こんな疑問を持ったことはありませんか?
GAMMA.DIST関数を使えば「x分以内に収まる確率」は求められます。でも逆に「確率pに対応する時間」を知りたいときはどうすればよいのでしょうか。
そんなときに使うのがGAMMA.INV関数です。この記事では基本構文から実務活用まで解説します。GAMMA.DISTとの逆関数関係や、GAMMAINV関数との違いもあわせて紹介しますよ。
スプレッドシートのGAMMA.INV関数とは
GAMMA.INV関数(読み方: ガンマ・インバース関数)は、ガンマ分布の累積確率から対応する値を逆算する関数です。「GAMMA」はギリシャ文字のガンマに由来する数学用語です。「INV」は「Inverse(逆関数)」の略です。
GAMMA.DIST関数が「値x → 確率p」を求めるのに対し、GAMMA.INV関数はその逆の「確率p → 値x」を求めます。つまり2つの関数は逆関数の関係にあります。
GAMMA.INV関数にできることをまとめると、次のとおりです。
- 「95%の確率で収まる合計待ち時間」を逆算する
- 保険金の請求額分布で「上位10%ライン」を求める
- SLA(サービスレベル合意)の基準値を算出する
- 在庫管理で安全マージンの目安を計算する
NOTE
GAMMA.INV関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
GAMMA.INV関数の基本構文と引数
基本構文
=GAMMA.INV(確率, alpha, beta)
カッコの中に3つの引数を指定します。
引数の一覧
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 確率(probability) | 必須 | ガンマ分布の累積確率。0より大きく1より小さい値 |
| alpha(アルファ) | 必須 | 形状パラメータ(正の数値) |
| beta(ベータ) | 必須 | 尺度パラメータ(正の数値) |
alphaは「形状パラメータ」です。分布の形を決め、イベント回数に相当します。betaは「尺度パラメータ」です。分布の広がりを決め、1回あたりの平均時間に相当します。
WARNING
確率は0より大きく1より小さい値(0 < 確率 < 1)で指定します。0や1を指定すると
#NUM!エラーになります。alphaとbetaはどちらも正の数です。0以下を指定するとやはり#NUM!エラーです。
GAMMAINV関数(互換関数)との関係
GoogleスプレッドシートにはGAMMAINVという関数もあります。これはGAMMA.INVの旧バージョンです。計算結果はまったく同じです。
=GAMMAINV(0.95, 3, 10) --- 旧関数名(動作は同じ)
=GAMMA.INV(0.95, 3, 10) --- 新関数名(推奨)
引数の数・順番・意味もすべて同じです。新しく数式を書くときはGAMMA.INVを使いましょう。既存のシートでGAMMAINV関数が使われていても、そのまま動作します。急いで書き換える必要はありません。
GAMMA.INV関数の基本的な使い方
まずはシンプルな例で動きを確認しましょう。alpha=3、beta=10のガンマ分布で、累積確率50%に対応する値を求めます。
=GAMMA.INV(0.5, 3, 10)
結果は約26.77です。「alpha=3、beta=10のガンマ分布で、値が26.77以下となる確率がちょうど50%」という意味です。
本当に正しいか、GAMMA.DISTで検算してみましょう。
=GAMMA.DIST(26.77, 3, 10, TRUE)
結果は約0.5000です。GAMMA.INVで求めた値をGAMMA.DISTに戻すと、元の確率に戻ります。逆関数の関係がきちんと成り立っていますね。
確率を変えて結果を見てみましょう。alpha=3、beta=10(平均30)の場合です。
| 確率 | GAMMA.INV の結果 | 意味 |
|---|---|---|
| 0.10 | 約13.39 | 下位10%ライン |
| 0.25 | 約19.34 | 第1四分位 |
| 0.50 | 約26.77 | 中央値 |
| 0.75 | 約36.78 | 第3四分位 |
| 0.90 | 約48.50 | 上位10%ライン |
| 0.95 | 約55.46 | 上位5%ライン |
| 0.99 | 約71.22 | 上位1%ライン |
確率が大きくなるほど返る値も大きくなります。ガンマ分布は右裾が長いので、90%以上の確率では値が急激に大きくなるのが特徴です。
GAMMA.INV関数の実務活用3パターン
基本がわかったところで、実際の業務で使えるパターンを3つ紹介します。
コールセンター――SLAの基準時間を算出する
「平均10分間隔で問い合わせが来るコールセンター」を考えましょう。3件の問い合わせに対応する合計時間について、「95%の確率で収まる上限時間」を求めます。alpha=3(3件)、beta=10(1件あたり平均10分)です。
=GAMMA.INV(0.95, 3, 10)
結果は約55.46分です。95%の確率で3件の対応は55分以内に完了します。この値をSLAの基準として「3件対応は60分以内」と設定すれば、十分な余裕を持たせられますね。
さらに「99%で収まる時間」も見てみましょう。
=GAMMA.INV(0.99, 3, 10)
結果は約71.22分です。99%カバーだと約71分です。シフト計画を立てるときの参考になります。
保険金請求――高額請求の基準額を決める
「過去データからalpha=2、beta=50万円の分布に従う」保険金請求を考えましょう。「上位5%に入る高額請求の境界額」を求めます。
=GAMMA.INV(0.95, 2, 50)
結果は約224.22万円です。請求の95%が約224万円以下に収まります。つまり224万円を超える請求が「高額」と判断できます。
「上位1%ライン」も求めてみましょう。
=GAMMA.INV(0.99, 2, 50)
結果は約329.83万円です。この金額を超える請求は全体の1%未満です。準備金の上限額を設定するときの根拠にできますね。
売上分析――在庫準備の安全マージン
「日次売上がalpha=5、beta=2万円のガンマ分布に従う」ケースを考えましょう。平均は5*2=10万円です。「90%の日をカバーできる在庫額」を求めます。
=GAMMA.INV(0.90, 5, 2)
結果は約14.53万円です。14.5万円分の在庫を準備すれば、90%の日は品切れせずに済みます。
「99%カバー」の場合はどうでしょうか。
=GAMMA.INV(0.99, 5, 2)
結果は約20.52万円です。99%カバーだと約20.5万円分の在庫が必要です。在庫コストとのバランスを見ながら、90%ラインと99%ラインのどちらを採用するか判断してくださいね。
GAMMA.DISTとの逆関数関係
GAMMA.INV関数とGAMMA.DIST関数は、互いに逆の計算をする関係です。この関係を押さえておくと、使い分けで迷わなくなります。
「値→確率」と「確率→値」
=GAMMA.DIST(40, 3, 10, TRUE) → 約0.7619(40以下の確率)
=GAMMA.INV(0.7619, 3, 10) → 約40.00(76.19%に対応する値)
GAMMA.DISTに値を入れると確率が返り、その確率をGAMMA.INVに入れると元の値に戻ります。
使い分けの判断基準はシンプルです。
- 「x分以内に収まる確率は?」 → GAMMA.DIST関数を使う
- 「95%で収まる時間は何分?」 → GAMMA.INV関数を使う
「わかっている値」が時間や金額ならGAMMA.DIST、確率ならGAMMA.INVと覚えましょう。
検算テクニック
GAMMA.INVの結果が正しいか不安なときは、次のように検算できます。
=GAMMA.DIST(GAMMA.INV(0.95, 3, 10), 3, 10, TRUE)
結果が0.95に戻れば正しい計算です。逆関数の性質を使った検算ですね。alpha・betaが同じ値であることを確認するのがポイントです。
確率分布逆関数ファミリー
Googleスプレッドシートには、確率から値を逆算する関数がいくつかあります。目的に応じて使い分けましょう。
| 関数 | 用途 | いつ使うか |
|---|---|---|
| GAMMA.INV | ガンマ分布の逆関数 | 複数イベントの合計待ち時間や右裾データを逆算する場合 |
| NORM.INV | 正規分布の逆関数 | 連続データ(身長・体重・気温など)の境界値を求める場合 |
| CHISQ.INV | カイ二乗分布の逆関数 | 適合度検定・独立性検定の臨界値を求める場合 |
| F.INV | F分布の逆関数 | F検定・分散分析の臨界値を求める場合 |
迷ったときの判断基準はこちらです。
TIP
各「.INV」関数は、対応する「.DIST」関数の逆関数です。GAMMA.DISTが「値→確率」なら、GAMMA.INVは「確率→値」。このパターンはNORM.DIST/NORM.INV、CHISQ.DIST/CHISQ.INVでも同じですよ。
よくある間違いと注意点
GAMMA.INV関数でつまずきやすいポイントをまとめました。
確率が0または1で#NUM!エラー
確率は0より大きく1より小さい値で指定します。ちょうど0や1を入れるとエラーになります。
=GAMMA.INV(0, 3, 10) --- #NUM! エラー
=GAMMA.INV(1, 3, 10) --- #NUM! エラー
「ちょうど0%」や「ちょうど100%」は数学的に定義できないためです。0.001や0.999のように、0と1に近い値を使ってください。
alphaが0以下で#NUM!エラー
alphaは正の数で指定します。0や負の値はエラーになります。
=GAMMA.INV(0.5, 0, 10) --- #NUM! エラー
betaが0以下で#NUM!エラー
betaも正の数で指定します。0以下はエラーです。
=GAMMA.INV(0.5, 3, 0) --- #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認しましょう。
GAMMA.DISTとalpha・betaを取り違える
GAMMA.INVとGAMMA.DISTで同じalpha・betaを使わないと、逆算の結果がずれます。検算するときは両方の引数が一致しているか確認してくださいね。
Excelとの違い
GAMMA.INV関数は、GoogleスプレッドシートとExcelで構文・動作ともにほぼ同じです。
=GAMMA.INV(0.95, 3, 10)
この数式はどちらの環境でも同じ結果を返します。Excelでも旧関数名GAMMAINVが使えます。ただしMicrosoft公式ではGAMMA.INVが推奨されています。
ExcelとGoogleスプレッドシートを併用している方は、GAMMA.INVで統一しておけば問題ありませんよ。
まとめ
GAMMA.INV関数は、ガンマ分布の累積確率から対応する値を逆算する関数です。
- 引数は3つ: 確率・alpha(形状)・beta(尺度)
- GAMMA.DIST関数の逆関数。「確率→値」を求めるときに使う
- コールセンターのSLA設計で「95%で収まる時間」を算出できる
- 保険金の高額請求ラインや在庫の安全マージンの算出にも活用できる
- 確率に0や1を指定すると
#NUM!エラー。alpha・betaは正の数で指定する - GAMMAINV関数と計算結果は同じ。新規にはGAMMA.INVを推奨
- 検算は
=GAMMA.DIST(GAMMA.INV(p, alpha, beta), alpha, beta, TRUE)で確率に戻るか確認 - NORM.INV・CHISQ.INV・F.INVとあわせて、確率分布逆関数ファミリーとして使い分ける
