ガンマ関数(Gamma Function)まとめ

1. ガンマ関数を一言で言うと?

階乗($n!$)の定義を、自然数から「実数(さらには複素数)」へと拡張した関数です。

  • 記号: $\Gamma(z)$ (ガンマ・ゼット)
  • 主な役割: 確率分布ベータ分布ディリクレ分布、ガンマ分布など)の確率密度関数において、全体の確率の総和(積分値)を $1$ に揃える正規化定数として登場します。

2. 数学的定義と基本的な性質

数学的定義(積分の形)

実部が正の実数($z > 0$)に対して、以下の広義積分で定義されます。

\[\Gamma(z) = \int_{0}^{\infty} t^{z-1} e^{-t} \, dt\]

最も重要な漸化式(基本ルール)

\(\Gamma(z+1) = z \Gamma(z)\)

「中身の数から $1$ 引いたものを外に出し、残りに $\Gamma$ を掛ける」というルールです。

整数・半整数の場合の具体例

入力値の種類 関係式・計算方法 具体例
正の整数 $n$ 階乗から $1$ ずれる
$\Gamma(n) = (n - 1)!$
$\Gamma(1) = 0! = 1$
$\Gamma(4) = 3! = 6$
半整数(小数が $.5$) 漸化式で削り、最後に $\Gamma(0.5) = \sqrt{\pi}$ を代入 $\Gamma(2.5) = 1.5 imes 0.5 imes \Gamma(0.5) = 0.75\sqrt{\pi}$
その他の小数 既知の定数で表せないため数値積分近似公式が必要 $\Gamma(1.8) pprox 0.9314$

3. 関連する概念とのつながり

[階乗 n!]  --(実数へ拡張)-->  [ガンマ関数 Γ(z)]
                                    │
               ┌────────────────────┴────────────────────┐
               ▼                                         ▼
   [2変数のベータ関数 B(α, β)]              [多変量ベータ関数 B(α)]
  = Γ(α)Γ(β) / Γ(α+β)                     = ∏Γ(α_k) / Γ(∑α_k)
               │                                         │
               ▼                                         ▼
    【ベータ分布の正規化定数】                【ディリクレ分布の正規化定数】

4. 統計学・機械学習における実務上の扱い

  • 複素数まで考える必要はあるか?
    • 実務・通常の理論学習: 正の実数($\mathbb{R}^+$)の範囲だけで 100% 完結します。
  • コンピュータでの計算方法
    • 実際のプログラミング(Python の scipymath モジュールなど)では、定義通りの重い積分計算は行わず、ランチョス近似(Lanczos approximation) などの高速な数値近似式が使われます。
  • 対数ガンマ関数(lgamma)の利用
    • 確率計算でガンマ関数をそのまま掛けると桁あふれ(オーバーフロー/アンダーフロー)を起こしやすいため、実際のコードでは対数をとった lgamma($\ln \Gamma(z)$)を使って足し引きで計算するのが鉄則です。