スプレッドシートのGAMMA.DIST関数の使い方|ガンマ分布

スポンサーリンク

「お客様対応が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にも同名の関数があり、動作は同じです。

ガンマ分布が使える場面とは

ガンマ分布は、次のような場面で使えます。

  1. 複数イベントの合計待ち時間: 問い合わせ3件分の処理時間の合計
  2. 右に裾が長いデータの分析: 保険金の請求額、故障修理費用など
  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 です。

xFALSE(確率密度)TRUE(x以下の確率)
10.07580.0144(1.4%)
20.13530.0803(8.0%)
40.14650.3233(32.3%)
60.11160.5768(57.7%)
80.07100.7619(76.2%)
100.02700.8753(87.5%)
150.00370.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関数を使う
タイトルとURLをコピーしました