「お客様対応が3件続くと、合計でどのくらい時間がかかるんだろう?」。こんな疑問を持ったことはありませんか?
1件あたりの平均時間はわかっていても、合計時間の確率は感覚では語れません。手計算で求めようとすると、べき乗や階乗の計算が出てきて大変ですよね。
そんなときに使うのがGAMMA.DIST関数です。この記事では基本構文から実務活用まで解説します。TRUE/FALSEの違いや、GAMMADIST関数との関係もあわせて紹介しますよ。
GAMMA.DIST関数とは
GAMMA.DIST関数(読み方: ガンマ・ディスト関数)は、ガンマ分布にもとづいて確率を返す関数です。ガンマ分布とは、複数のイベントが起こるまでの「合計待ち時間」を表す確率分布です。
「GAMMA」はギリシャ文字のガンマに由来する数学用語です。「DIST」は「Distribution(分布)」の略です。
たとえば「平均10分に1件の問い合わせが来る窓口で、3件対応するまでの合計時間が40分以内に収まる確率」を1つの数式で求められます。
GAMMA.DIST関数にできることをまとめると、次のとおりです。
- ある値以下となる確率を求める(累積分布)
- 特定の値での確率密度を求める
- 複数回のイベント発生にかかる合計時間の確率を計算する
- 保険金の請求額分布や売上データの分析に使う
NOTE
GAMMA.DIST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
ガンマ分布が使える場面とは
ガンマ分布は、次のような場面で使えます。
- 複数イベントの合計待ち時間: 問い合わせ3件分の処理時間の合計
- 右に裾が長いデータの分析: 保険金の請求額、故障修理費用など
- 正の値のみを取る連続データ: 降水量、年間売上高など
1件あたりの待ち時間が指数分布に従うとき、n件分の合計待ち時間はガンマ分布に従います。つまりEXPON.DIST関数の「複数回バージョン」がGAMMA.DIST関数です。
TIP
ガンマ分布の形状パラメータ(alpha)が1のとき、ガンマ分布は指数分布と一致します。alpha=1ならEXPON.DIST関数と同じ結果が得られますよ。
基本構文と4つの引数
=GAMMA.DIST(x, alpha, beta, 累積)
カッコの中に4つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | 評価する値(0以上の数値) |
| alpha(アルファ) | 必須 | 形状パラメータ(正の数値) |
| beta(ベータ) | 必須 | 尺度パラメータ(正の数値) |
| 累積(cumulative) | 必須 | TRUEで累積分布、FALSEで確率密度 |
alphaは「形状パラメータ」と呼ばれます。分布の形を決めるパラメータです。イベント回数に相当します。betaは「尺度パラメータ」と呼ばれます。分布の広がりを決めるパラメータです。1回あたりの平均時間に相当します。
WARNING
alphaとbetaはどちらも正の数です。0以下を指定すると
#NUM!エラーになります。xは0以上で指定してください。
GAMMADIST関数(互換関数)との関係
GoogleスプレッドシートにはGAMMADISTという関数もあります。これはGAMMA.DISTの旧バージョンです。計算結果はまったく同じです。
=GAMMADIST(10, 3, 2, TRUE) --- 旧関数名(動作は同じ)
=GAMMA.DIST(10, 3, 2, TRUE) --- 新関数名(推奨)
引数の数・順番・意味もすべて同じです。新しく数式を書くときはGAMMA.DISTを使いましょう。既存のシートでGAMMADIST関数が使われていても、そのまま動作します。急いで書き換える必要はありません。
GAMMA.DIST関数のTRUE/FALSEの違い
GAMMA.DIST関数の4番目の引数「累積」は、TRUEかFALSEで結果がまったく変わります。この違いを押さえることが使いこなすポイントです。
FALSE(確率密度関数)――ある値での密度
FALSEを指定すると確率密度関数(PDF)の値を返します。「値xでの確率の密度」を表す値です。
=GAMMA.DIST(10, 3, 2, FALSE)
alpha=3、beta=2のガンマ分布で、x=10での確率密度を返します。結果は約0.0270です。
数学的には、次の式で計算されています。
f(x) = x^(alpha-1) * e^(-x/beta) / (beta^alpha * GAMMA(alpha))
確率密度はそのままでは「ちょうどxの確率」にはなりません。連続分布なので、確率はTRUEで求めるのが一般的です。
TRUE(累積分布関数)――x以下となる確率
TRUEを指定すると累積分布関数(CDF)の値を返します。「値がx以下となる確率」です。
=GAMMA.DIST(10, 3, 2, TRUE)
alpha=3、beta=2のガンマ分布で、x=10以下となる確率です。結果は約0.8753(87.5%)です。
実務で「x以内に収まる確率は?」と聞かれたら、TRUEを使ってください。
2つを比較してみる(サンプルデータつき)
alpha=3、beta=2の場合で、xの値ごとの結果を比べてみましょう。平均値は alpha * beta = 6 です。
| x | FALSE(確率密度) | TRUE(x以下の確率) |
|---|---|---|
| 1 | 0.0758 | 0.0144(1.4%) |
| 2 | 0.1353 | 0.0803(8.0%) |
| 4 | 0.1465 | 0.3233(32.3%) |
| 6 | 0.1116 | 0.5768(57.7%) |
| 8 | 0.0710 | 0.7619(76.2%) |
| 10 | 0.0270 | 0.8753(87.5%) |
| 15 | 0.0037 | 0.9797(98.0%) |
FALSE列はx=4付近で最大値を取り、その前後で小さくなります。TRUE列はxが増えるほど1に近づいていきます。
「x以上となる確率」を求めたいときは =1 - GAMMA.DIST(x, alpha, beta, TRUE) と書きます。たとえば「10以上の確率」なら次のとおりです。結果は約0.1247(12.5%)です。
=1 - GAMMA.DIST(10, 3, 2, TRUE)
GAMMA.DIST関数の実務活用3パターン
基本がわかったところで、実際の業務で使えるパターンを3つ紹介します。
コールセンター――3件対応にかかる合計時間
「平均10分間隔で問い合わせが来るコールセンター」を考えましょう。3件の問い合わせに対応する合計時間が40分以内に収まる確率を求めます。alpha=3(3件)、beta=10(1件あたり平均10分)です。
=GAMMA.DIST(40, 3, 10, TRUE)
結果は約0.7619(76.2%)です。約76%の確率で40分以内に3件の対応が完了します。
では「50分以上かかる確率」はどうでしょうか。
=1 - GAMMA.DIST(50, 3, 10, TRUE)
結果は約0.1247(12.5%)です。3件で50分を超える確率は約12%です。シフト計画を立てるときの参考になりますね。
保険金請求――請求額の分布予測
「過去データから形状パラメータalpha=2、尺度パラメータbeta=50万円の分布に従う」保険金請求を考えましょう。請求額が150万円以下となる確率を求めます。
=GAMMA.DIST(150, 2, 50, TRUE)
結果は約0.8009(80.1%)です。請求の約80%が150万円以下に収まります。
「200万円を超える大口請求の確率」は次のとおりです。
=1 - GAMMA.DIST(200, 2, 50, TRUE)
結果は約0.0916(9.2%)です。約9%の確率で200万円超の請求が来ます。準備金の設定や保険料の算出に活用できますね。
売上分析――日次売上の確率計算
「日次売上がalpha=5、beta=2万円のガンマ分布に従う」ケースを考えましょう。日次売上が8万円以上になる確率を求めます。平均は5*2=10万円です。
=1 - GAMMA.DIST(8, 5, 2, TRUE)
結果は約0.7149(71.5%)です。約71%の日で8万円以上の売上が見込めます。
「15万円以上の好調日」の確率を見てみましょう。
=1 - GAMMA.DIST(15, 5, 2, TRUE)
結果は約0.1321(13.2%)です。好調日は約13%です。人員配置や在庫計画の判断材料になりますね。
EXPON.DIST関数・CHISQ.DIST関数との関係
GAMMA.DIST関数は、他の分布関数と数学的につながっています。
EXPON.DIST関数との関係(alpha=1のとき)
alphaを1にすると、ガンマ分布は指数分布と同じになります。以下の2つは同じ結果を返します。
=GAMMA.DIST(5, 1, 10, TRUE)
=EXPON.DIST(5, 1/10, TRUE)
EXPON.DIST関数はlambda(率パラメータ)を使いますが、これはGAMMA.DISTのbetaの逆数(lambda = 1/beta)です。1件分の待ち時間ならEXPON.DIST、複数件の合計時間ならGAMMA.DISTを使いましょう。
CHISQ.DIST関数との関係(alpha=n/2、beta=2のとき)
alpha=n/2、beta=2を指定すると、ガンマ分布はカイ二乗分布と同じになります。以下の2つは同じ結果を返します。
=GAMMA.DIST(5, 3, 2, TRUE)
=CHISQ.DIST(5, 6, TRUE)
alpha=3はカイ二乗分布の自由度6(n=2*alpha=6)に対応します。CHISQ.DIST関数はガンマ分布の特殊ケースなのですね。
確率分布関数ファミリー
Googleスプレッドシートには、確率分布に関連する関数がいくつかあります。目的に応じて使い分けましょう。
| 関数 | 用途 | いつ使うか |
|---|---|---|
| GAMMA.DIST | ガンマ分布の確率 | 複数イベントの合計時間や右裾データを扱う場合 |
| EXPON.DIST | 指数分布の確率 | 次のイベントまでの待ち時間を扱う場合 |
| CHISQ.DIST | カイ二乗分布の確率 | 適合度検定や独立性検定を行う場合 |
| NORM.DIST | 正規分布の確率 | 連続データ(身長・体重・気温など)を扱う場合 |
| WEIBULL.DIST | ワイブル分布の確率 | 製品寿命・故障率を分析する場合 |
| GAMMA | ガンマ関数(数値) | ガンマ関数の値そのものを計算する場合 |
迷ったときの判断基準はシンプルです。
- 1件分の待ち時間 → EXPON.DIST
- 複数件の合計待ち時間 → GAMMA.DIST
- 連続データの確率 → NORM.DIST
- 製品の寿命分析 → WEIBULL.DIST
よくある間違いと注意点
GAMMA.DIST関数でつまずきやすいポイントをまとめました。
xが負の値で#NUM!エラー
xは0以上の数値で指定します。負の値を入れるとエラーになります。
=GAMMA.DIST(-1, 3, 2, TRUE) --- #NUM! エラー
alphaが0以下で#NUM!エラー
alphaは正の数で指定します。0や負の値はエラーになります。
=GAMMA.DIST(5, 0, 2, TRUE) --- #NUM! エラー
betaが0以下で#NUM!エラー
betaも正の数で指定します。0以下はエラーです。
=GAMMA.DIST(5, 3, 0, TRUE) --- #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認しましょう。
TRUE/FALSEの指定を間違える
4番目の引数を省略することはできません。TRUEとFALSEでは結果がまったく異なります。「x以下の確率」を求めたいのにFALSEを指定すると、確率密度が返ってしまいます。目的に合った値を選んでくださいね。
Excelとの違い
GAMMA.DIST関数は、GoogleスプレッドシートとExcelで構文・動作ともにほぼ同じです。
=GAMMA.DIST(10, 3, 2, TRUE)
この数式はどちらの環境でも同じ結果を返します。Excelでも旧関数名GAMMADISTが使えます。ただしMicrosoft公式ではGAMMA.DISTが推奨されています。
ExcelとGoogleスプレッドシートを併用している方は、GAMMA.DISTで統一しておけば問題ありませんよ。
まとめ
GAMMA.DIST関数は、ガンマ分布にもとづいて確率を求める関数です。
- 4番目の引数にTRUEで「x以下となる確率」が返る
- FALSEで「値xでの確率密度」が返る
- alphaは形状パラメータ(イベント回数)、betaは尺度パラメータ(1回の平均時間)
- コールセンターの合計対応時間・保険金請求額・売上分析に使える
- 「x以上の確率」を求めるには
=1 - GAMMA.DIST(x, alpha, beta, TRUE)と書く - xが負の値やalpha・betaが0以下だと
#NUM!エラー - GAMMADIST関数と計算結果は同じ。新規にはGAMMA.DISTを推奨
- alpha=1ならEXPON.DIST関数と同じ結果になる
- 「1件分の待ち時間」ならEXPON.DIST関数、「連続データの確率」ならNORM.DIST関数を使う
