ガンマ関数(Gamma Function)まとめ
ガンマ関数(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 の
scipyやmathモジュールなど)では、定義通りの重い積分計算は行わず、ランチョス近似(Lanczos approximation) などの高速な数値近似式が使われます。
- 実際のプログラミング(Python の
- 対数ガンマ関数(
lgamma)の利用- 確率計算でガンマ関数をそのまま掛けると桁あふれ(オーバーフロー/アンダーフロー)を起こしやすいため、実際のコードでは対数をとった
lgamma($\ln \Gamma(z)$)を使って足し引きで計算するのが鉄則です。
- 確率計算でガンマ関数をそのまま掛けると桁あふれ(オーバーフロー/アンダーフロー)を起こしやすいため、実際のコードでは対数をとった