감마 분포 (Gamma Distribution)

Casella & Berger Ch.3.3 — 감마 함수, PDF 유도, MGF, 특수 케이스, 포아송 과정 연결

감마 분포는 양수 지지 위에서 형상과 척도 두 모수로 정의되는 유연한 분포族이다. 감마 함수에서 PDF를 유도하고, 커널 기법으로 평균·분산·MGF를 계산한다. 지수 분포(α=1), 카이제곱 분포(α=ν/2, β=2)를 특수 케이스로 통합하고 포아송 과정, 닫힘성, 모수화 혼동 주의사항을 다룬다.

Statistics
저자

Kwangmin Kim

공개

2026년 03월 29일

1 왜 감마 분포인가

정규 분포가 실수 전체에 걸친 대칭 현상을 모델링한다면, 감마 분포는 양수 값만 갖는 현상 — 대기 시간, 강수량, 수명, 소득 — 을 모델링한다. 하나의 분포가 아니라 형상 모수 \(\alpha\) 를 조절함으로써 지수 분포, 카이제곱 분포, 에를랑(Erlang) 분포를 통합하는 분포 가족(family)이다.

감마 분포가 필요한 이유
  • 유연성: \(\alpha < 1\) (단조감소), \(\alpha = 1\) (지수), \(\alpha > 1\) (종 모양, 우편향) — 하나의 모수로 다양한 형태
  • 지수족 소속: 충분통계량, MLE, 베이지안 켤레 사전분포 모두 닫힌 형식
  • 닫힘성: 독립 감마 합 → 감마. 포아송 과정의 대기 시간이 정확히 감마를 따름
  • 카이제곱·지수의 어머니 분포: 통계 추론에서 반복적으로 등장하는 두 분포가 모두 특수 케이스

2 감마 함수 (Gamma Function)

감마 분포를 정의하기 전에 정규화 상수가 되는 감마 함수를 먼저 이해한다.

정의: 감마 함수

\[ \Gamma(\alpha) = \int_0^\infty t^{\alpha-1} e^{-t} \, dt, \quad \alpha > 0 \]

직관: 감마 함수는 “연속 팩토리얼”이다

\(\Gamma(\alpha)\) 를 말로 표현하면 “팩토리얼을 양의 실수 전체로 확장한 함수”이다.

피적분함수 \(t^{\alpha-1} e^{-t}\) 는 두 힘의 균형으로 이루어진다.

  • \(t^{\alpha-1}\): \(t\) 가 커질수록 증가하는 힘
  • \(e^{-t}\): \(t\) 가 커질수록 지수적으로 감소하는 힘

두 힘이 균형을 이루는 지점 \(t = \alpha - 1\) 근방에서 피적분함수가 봉우리를 가진다. \(\alpha\) 가 클수록 봉우리가 오른쪽으로 이동하고 적분값 \(\Gamma(\alpha)\) 가 커진다.

정수 \(\alpha = n\) 에서: 봉우리가 \(t = n-1\) 에 있고 적분하면 \((n-1)!\).

\(e^{-t}\) 항이 없으면 \(\int_0^\infty t^{\alpha-1} dt\) 는 발산한다. \(t^{\alpha-1}\) 항이 없으면(\(\alpha = 1\)) 단순한 지수 적분으로 \(\Gamma(1) = 1 = 0!\).

2.1 핵심 성질

재귀 관계 (Recursion):

\[ \Gamma(\alpha + 1) = \alpha \, \Gamma(\alpha), \quad \alpha > 0 \]

증명 (부분적분): \(u = t^\alpha\), \(dv = e^{-t} dt\) 로 놓으면:

\[ \Gamma(\alpha+1) = \int_0^\infty t^\alpha e^{-t} dt = \left[-t^\alpha e^{-t}\right]_0^\infty + \alpha \int_0^\infty t^{\alpha-1} e^{-t} dt = 0 + \alpha\,\Gamma(\alpha) \]

경계항은 \(t \to 0\)\(t \to \infty\) 모두 0 이다. \(\square\)

직관: 재귀 관계 \(\Gamma(\alpha+1) = \alpha\,\Gamma(\alpha)\) 의 의미

이 관계는 팩토리얼 재귀 \(n! = n \cdot (n-1)!\) 의 연속 버전이다.

경계항이 0이 되는 이유: \(t \to \infty\) 일 때 \(t^\alpha\) 가 아무리 빠르게 커져도 \(e^{-t}\) 가 더 빠르게 0으로 수렴하여 \(t^\alpha e^{-t} \to 0\). \(t \to 0\) 일 때는 \(\alpha > 0\) 이므로 \(t^\alpha \to 0\).

이 재귀 덕분에 임의의 \(\alpha > 0\) 에 대한 \(\Gamma(\alpha)\)\(0 < \alpha \le 1\) 구간의 값만으로 분해할 수 있다.

예: \(\Gamma(5.3) = 4.3 \times 3.3 \times 2.3 \times 1.3 \times \Gamma(0.3)\).

이 재귀가 없으면 각 \(\alpha\) 에 대해 정의 적분을 새로 계산해야 한다.

정수에서의 값: \(\Gamma(1) = \int_0^\infty e^{-t} dt = 1\) 이므로 재귀 적용하면:

\[ \Gamma(n) = (n-1)!, \quad n = 1, 2, 3, \ldots \]

반정수: \(w = t^{1/2}\) 치환과 가우시안 적분 \(\int_{-\infty}^\infty e^{-z^2/2} dz = \sqrt{2\pi}\) 를 이용하면:

\[ \Gamma\!\left(\tfrac{1}{2}\right) = \int_0^\infty t^{-1/2} e^{-t} dt = \sqrt{\pi} \]

재귀로부터: \(\Gamma(3/2) = (1/2)\Gamma(1/2) = \sqrt{\pi}/2\).

\(\alpha\) \(\Gamma(\alpha)\)
1 1 = 0!
2 1 = 1!
3 2 = 2!
4 6 = 3!
1/2 \(\sqrt{\pi}\)
3/2 \(\sqrt{\pi}/2\)
5/2 \(3\sqrt{\pi}/4\)

3 감마 분포 정의

핵심 아이디어: \(f(t) = t^{\alpha-1} e^{-t} / \Gamma(\alpha)\) 는 이미 PDF의 조건 \(f \ge 0\), \(\int f = 1\) 을 만족한다 (피적분함수가 양수이고, 정규화 상수가 \(\Gamma(\alpha)\) 이므로). 여기에 척도 모수 \(\beta\) 를 도입하기 위해 \(X = \beta T\) 변환 (Casella & Berger, 2002, Ch.3.3) 을 적용한다.

정의: 감마 분포

\(X \sim \text{Gamma}(\alpha, \beta)\) 이면:

\[ f(x \mid \alpha, \beta) = \frac{1}{\Gamma(\alpha)\,\beta^\alpha}\, x^{\alpha-1} e^{-x/\beta}, \quad x > 0 \]

  • \(\alpha > 0\): 형상 모수(shape parameter) — 분포의 뾰족함·치우침을 결정
  • \(\beta > 0\): 척도 모수(scale parameter) — 분포의 퍼짐(scale)을 결정

모수화 주의: rate parameter \(\lambda = 1/\beta\) 를 사용하는 표기도 흔하다 (scipy, Stan 등). 소프트웨어·교재마다 확인이 필요하다.

직관: PDF 각 항이 말하는 것

\[f(x \mid \alpha, \beta) = \underbrace{\frac{1}{\Gamma(\alpha)\,\beta^\alpha}}_{\text{정규화 상수}} \cdot \underbrace{x^{\alpha-1}}_{\text{형상 항}} \cdot \underbrace{e^{-x/\beta}}_{\text{감쇠 항}}, \quad x > 0\]

  • 정규화 상수 \(1/(\Gamma(\alpha)\beta^\alpha)\): 전체 면적을 1로 만드는 역할이다. 분포의 형태는 건드리지 않고 크기만 조정한다.
  • 형상 항 \(x^{\alpha-1}\): \(\alpha = 1\) 이면 \(x^0 = 1\) 로 사라진다(지수 분포). \(\alpha > 1\) 이면 작은 \(x\) 에서 밀도가 낮다 — “\(\alpha - 1\) 번의 선행 사건이 있어야 한다”는 대기 구조다. \(\alpha < 1\) 이면 \(x \to 0\) 에서 밀도가 발산한다.
  • 감쇠 항 \(e^{-x/\beta}\): 시간이 길어질수록 밀도가 지수적으로 감소한다. \(\beta\) 가 크면 감소가 느리다 — 평균 대기 시간이 길다.
  • 두 항의 경쟁: \(x^{\alpha-1}\)\(x\) 가 커질수록 밀도를 높이고, \(e^{-x/\beta}\) 는 낮춘다. 이 균형점이 최빈값 \((\alpha-1)\beta\) 이다. 이 두 항 중 하나만 있으면 단조 감소만 생기고 종 모양은 생기지 않는다.

3.1 PDF의 형태

\(\alpha\) 값에 따라 분포의 형태가 크게 달라진다:

\(\alpha\) 범위 형태 대표 분포
\(0 < \alpha < 1\) \(x=0\) 에서 발산, 단조 감소
\(\alpha = 1\) 단조 감소 지수 분포
\(\alpha > 1\) 우편향 단봉 에를랑, 카이제곱
\(\alpha \to \infty\) 정규 분포에 수렴

최빈값(mode): \(\alpha > 1\) 이면 \(x^* = (\alpha-1)\beta\).


4 평균과 분산 유도 — 커널 기법

Casella & Berger(2002, Ch.3.3)의 핵심 테크닉: 적분을 다른 PDF의 커널로 인식하여 계산한다.

커널 적분 공식: 감마 PDF의 정규화 조건에서,

\[ \int_0^\infty x^{a-1} e^{-x/b} dx = \Gamma(a)\, b^a \quad (a > 0,\ b > 0) \]

직관: 커널 기법 — “적분하지 않고 구조를 인식한다”

커널 기법의 핵심은 “이 피적분함수는 어떤 PDF의 정규화되지 않은 버전인가?”를 묻는 것이다.

\(\text{Gamma}(a, b)\) 의 PDF는 \(\frac{1}{\Gamma(a) b^a} x^{a-1} e^{-x/b}\) 이고, 이 PDF의 전체 적분은 1이다.

따라서: \(\int_0^\infty x^{a-1} e^{-x/b} dx = \Gamma(a) b^a\).

평균을 구할 때 \(\int x \cdot x^{\alpha-1} e^{-x/\beta} dx = \int x^\alpha e^{-x/\beta} dx\) 가 등장한다. 지수가 \(\alpha \to \alpha+1\) 로 올라간 감마 커널이므로 결과는 \(\Gamma(\alpha+1) \beta^{\alpha+1}\) 이다. 분모 \(\Gamma(\alpha)\beta^\alpha\) 와 약분하면 \(\Gamma(\alpha+1)/\Gamma(\alpha) \cdot \beta = \alpha\beta\).

이 방법이 강력한 이유: 치환적분이나 반복 부분적분 없이 “형태 인식”만으로 적분 결과를 즉시 얻는다.

4.1 평균 \(E[X]\)

\[ E[X] = \frac{1}{\Gamma(\alpha)\beta^\alpha} \int_0^\infty x \cdot x^{\alpha-1} e^{-x/\beta} dx = \frac{1}{\Gamma(\alpha)\beta^\alpha} \int_0^\infty x^\alpha e^{-x/\beta} dx \]

피적분함수는 \(\text{Gamma}(\alpha+1, \beta)\) 의 커널이다:

\[ = \frac{1}{\Gamma(\alpha)\beta^\alpha} \cdot \Gamma(\alpha+1)\,\beta^{\alpha+1} = \frac{\alpha\,\Gamma(\alpha)\,\beta}{\Gamma(\alpha)} = \alpha\beta \]

4.2 분산 \(\text{Var}(X)\)

\(E[X^2]\) 계산: 피적분함수가 \(\text{Gamma}(\alpha+2, \beta)\) 의 커널:

\[ E[X^2] = \frac{\Gamma(\alpha+2)\,\beta^{\alpha+2}}{\Gamma(\alpha)\,\beta^\alpha} = \frac{(\alpha+1)\alpha\,\Gamma(\alpha)\,\beta^2}{\Gamma(\alpha)} = \alpha(\alpha+1)\beta^2 \]

\[ \text{Var}(X) = E[X^2] - (E[X])^2 = \alpha(\alpha+1)\beta^2 - \alpha^2\beta^2 = \alpha\beta^2 \]


5 적률생성함수 (MGF) 유도

Casella & Berger(2002, Example 2.3.8)의 유도:

\[ M_X(t) = \frac{1}{\Gamma(\alpha)\beta^\alpha} \int_0^\infty e^{tx} x^{\alpha-1} e^{-x/\beta} dx = \frac{1}{\Gamma(\alpha)\beta^\alpha} \int_0^\infty x^{\alpha-1} e^{-x\left(\frac{1}{\beta} - t\right)} dx \]

\(t < 1/\beta\) 이면 \(\frac{1}{\beta} - t > 0\) 이므로 유효 척도 모수를 \(\beta^* = \frac{\beta}{1-\beta t}\) 로 정의하면:

\[ = \frac{1}{\Gamma(\alpha)\beta^\alpha} \int_0^\infty x^{\alpha-1} e^{-x/\beta^*} dx = \frac{1}{\Gamma(\alpha)\beta^\alpha} \cdot \Gamma(\alpha)(\beta^*)^\alpha \]

\[ \boxed{M_X(t) = \left(\frac{1}{1 - \beta t}\right)^\alpha, \quad t < \frac{1}{\beta}} \]

직관: MGF \((1-\beta t)^{-\alpha}\) 의 구조

MGF를 \((1 - \beta t)^{-\alpha}\) 로 읽으면 두 모수가 분리되어 보인다.

  • \(\beta\) (척도): MGF가 발산하는 임계점 \(t = 1/\beta\) 를 결정한다. \(\beta\) 가 크면 더 작은 \(t\) 에서 발산 — 분포의 꼬리가 더 무겁고 평균·분산이 크다.
  • \(\alpha\) (형상): 지수의 크기. 독립 합에서 자연스럽게 더해진다: \((1-\beta t)^{-\alpha_1} \cdot (1-\beta t)^{-\alpha_2} = (1-\beta t)^{-(\alpha_1+\alpha_2)}\). MGF의 곱이 지수의 합으로 나타나는 것이 닫힘성의 수학적 표현이다.
  • 적분 발산 이유 (\(t \ge 1/\beta\)): \(e^{tx}\) 의 성장이 \(e^{-x/\beta}\) 의 감쇠를 상쇄하여 전체 적분이 수렴하지 않는다.

\(t \ge 1/\beta\) 이면 적분이 발산하므로 MGF가 존재하지 않는다.

MGF로부터 적률 확인:

\[ M_X'(t)\big|_{t=0} = \frac{\alpha\beta}{(1-\beta t)^{\alpha+1}}\bigg|_{t=0} = \alpha\beta = E[X] \quad \checkmark \]


6 성질

6.1 닫힘성 (Closure under Addition)

\(X_i \sim \text{Gamma}(\alpha_i, \beta)\) 독립이면:

\[ \sum_{i=1}^n X_i \sim \text{Gamma}\!\left(\sum_{i=1}^n \alpha_i,\ \beta\right) \]

증명: MGF의 곱 \(M_{\sum X_i}(t) = \prod (1-\beta t)^{-\alpha_i} = (1-\beta t)^{-\sum\alpha_i}\). \(\square\)

핵심: 척도 모수 \(\beta\)동일해야 한다.

6.2 스케일링

\(c > 0\) 이면 \(cX \sim \text{Gamma}(\alpha, c\beta)\). 형상은 유지되고 척도만 변한다.


7 특수 케이스

7.1 지수 분포 (Exponential Distribution): \(\alpha = 1\)

\[ X \sim \text{Gamma}(1, \beta) \iff f(x) = \frac{1}{\beta} e^{-x/\beta},\ x > 0 \]

\(E[X] = \beta\), \(\text{Var}(X) = \beta^2\), \(M_X(t) = (1-\beta t)^{-1}\).

지수 분포는 감마 분포 가족에서 \(\alpha=1\) 인 단일 모수 분포이다. 개별 포스트에서 무기억성(memoryless property) 등을 상세히 다룬다.

7.2 카이제곱 분포 (Chi-squared Distribution): \(\alpha = \nu/2\), \(\beta = 2\)

\[ X \sim \text{Gamma}(\nu/2, 2) \iff X \sim \chi^2(\nu) \]

\[ f(x \mid \nu) = \frac{1}{\Gamma(\nu/2)\, 2^{\nu/2}}\, x^{\nu/2-1} e^{-x/2}, \quad x > 0 \]

\(E[X] = \nu\), \(\text{Var}(X) = 2\nu\), \(M_X(t) = (1-2t)^{-\nu/2}\).

\(Z_1, \ldots, Z_\nu \sim N(0,1)\) 독립이면 \(\sum Z_i^2 \sim \chi^2(\nu)\). 표본 분산의 분포, 검정 통계량에서 핵심적으로 등장한다.

7.3 에를랑 분포 (Erlang Distribution): \(\alpha = k\) (양의 정수)

\[ X \sim \text{Gamma}(k, \beta), \quad k \in \mathbb{Z}^+ \]

포아송 과정에서 rate \(\lambda = 1/\beta\)\(k\) 번째 사건이 발생하기까지의 대기 시간이 정확히 \(\text{Erlang}(k, \lambda) = \text{Gamma}(k, 1/\lambda)\) 를 따른다.

감마 분포 가족 관계 요약

\[ \text{Gamma}(\alpha, \beta) \begin{cases} \alpha = 1 \quad &\Rightarrow \text{Exp}(\beta) \\ \alpha = \nu/2,\ \beta = 2 \quad &\Rightarrow \chi^2(\nu) \\ \alpha = k \in \mathbb{Z}^+ \quad &\Rightarrow \text{Erlang}(k, 1/\beta) \end{cases} \]


8 감마-포아송 관계

Casella & Berger(2002, Example 3.3.1)에서 증명하는 중요한 관계:

\(X \sim \text{Gamma}(\alpha, \beta)\) 이고 \(\alpha\) 가 양의 정수이면, 임의의 \(x > 0\) 에 대해:

\[ P(X \le x) = P(Y \ge \alpha), \quad Y \sim \text{Poisson}(x/\beta) \]

직관: rate \(\lambda = 1/\beta\) 의 포아송 과정에서 시각 \(x\) 이전에 사건이 \(\alpha\) 번 이상 발생할 확률 = 감마 CDF. 포아송 과정의 대기 시간(감마)과 사건 횟수(포아송) 사이의 이중성(duality)이다.


9 와이블 분포와의 관계 (Weibull Distribution)

\(X \sim \text{Exp}(\beta)\) 이면 \(Y = X^{1/\gamma}\) 는 와이블 분포를 따른다:

\[ f_Y(y \mid \gamma, \beta) = \frac{\gamma}{\beta} y^{\gamma-1} e^{-y^\gamma/\beta}, \quad y > 0,\ \gamma > 0 \]

\(\gamma = 1\) 이면 지수 분포로 환원된다. 와이블 분포는 생존 분석(survival analysis)에서 위험함수(hazard function)가 단조 증가·감소하는 경우를 모델링한다.


10 모수화 주의사항

감마 분포는 소프트웨어·교재마다 모수화가 다르다:

표기 모수 E[X] scipy 인수
\(\text{Gamma}(\alpha, \beta)\) (scale) shape \(\alpha\), scale \(\beta\) \(\alpha\beta\) gamma(a=α, scale=β)
\(\text{Gamma}(\alpha, \lambda)\) (rate) shape \(\alpha\), rate \(\lambda=1/\beta\) \(\alpha/\lambda\) gamma(a=α, scale=1/λ)
모수화 혼동 — 흔한 실수

R의 rgamma(n, shape, rate)rgamma(n, shape, scale) 은 서로 역수 관계이다. Stan의 gamma(alpha, beta)rate 모수화이다. scipy의 gamma(a, scale)scale 모수화이다. 코드를 쓸 때마다 문서를 확인한다.


11 코드 예시

11.1 Step 1: 순수 Python — 감마 함수·PDF·MGF 직접 구현

import math

# 감마 함수 (재귀 성질 확인)
def my_gamma(alpha, tol=1e-10):
    """수치 적분으로 Γ(alpha) 계산"""
    # 심프슨 규칙 (0~100 구간, 큰 t에서 0에 가까우므로 충분)
    n, b = 10000, 30
    h = b / n
    xs = [i * h for i in range(n + 1)]
    ys = [(x**(alpha-1) * math.exp(-x)) if x > 0 else 0.0 for x in xs]
    s = ys[0] + ys[-1]
    s += 4 * sum(ys[i] for i in range(1, n, 2))
    s += 2 * sum(ys[i] for i in range(2, n-1, 2))
    return s * h / 3

# 재귀 성질 검증: Γ(α+1) = α·Γ(α)
print("=== 감마 함수 재귀 성질 검증 ===")
for alpha in [0.5, 1.0, 2.0, 3.5]:
    g_a = math.gamma(alpha)
    g_a1 = math.gamma(alpha + 1)
    ratio = g_a1 / g_a
    print(f"α={alpha}: Γ(α+1)/Γ(α) = {ratio:.6f}  (이론: {alpha:.6f})")

# 특수값 확인
print(f"\nΓ(1/2) = {math.gamma(0.5):.8f}  (이론: √π = {math.sqrt(math.pi):.8f})")
print(f"Γ(5)   = {math.gamma(5):.1f}  (이론: 4! = 24)")

# 감마 분포 PDF
def gamma_pdf(x, alpha, beta):
    if x <= 0:
        return 0.0
    return (x**(alpha-1) * math.exp(-x/beta)) / (math.gamma(alpha) * beta**alpha)

# MGF
def gamma_mgf(t, alpha, beta):
    if t >= 1/beta:
        return float('inf')
    return (1 - beta*t)**(-alpha)

# E[X] = M'(0) 수치 미분으로 확인
h = 1e-6
alpha, beta = 3.0, 2.0
mgf_deriv = (gamma_mgf(h, alpha, beta) - gamma_mgf(-h, alpha, beta)) / (2*h)
print(f"\n=== Gamma({alpha}, {beta}) MGF 검증 ===")
print(f"E[X] from MGF = {mgf_deriv:.6f}  (이론: α·β = {alpha*beta})")

# 형상 모수별 최빈값
print(f"\n=== 형상 모수별 최빈값 (beta={beta}) ===")
for a in [0.5, 1.0, 2.0, 4.0, 8.0]:
    mode = (a - 1) * beta if a > 1 else 0.0
    mean = a * beta
    print(f"α={a:4.1f}: mode={mode:5.1f}, mean={mean:5.1f}")
=== 감마 함수 재귀 성질 검증 ===
α=0.5: Γ(α+1)/Γ(α) = 0.500000  (이론: 0.500000)
α=1.0: Γ(α+1)/Γ(α) = 1.000000  (이론: 1.000000)
α=2.0: Γ(α+1)/Γ(α) = 2.000000  (이론: 2.000000)
α=3.5: Γ(α+1)/Γ(α) = 3.500000  (이론: 3.500000)

Γ(1/2) = 1.77245385  (이론: √π = 1.77245385)
Γ(5)   = 24.0  (이론: 4! = 24)

=== Gamma(3.0, 2.0) MGF 검증 ===
E[X] from MGF = 6.000000  (이론: α·β = 6.0)

=== 형상 모수별 최빈값 (beta=2.0) ===
α= 0.5: mode=  0.0, mean=  1.0
α= 1.0: mode=  0.0, mean=  2.0
α= 2.0: mode=  2.0, mean=  4.0
α= 4.0: mode=  6.0, mean=  8.0
α= 8.0: mode= 14.0, mean= 16.0

11.2 Step 2: scipy.stats — 특수 케이스 통합 검증

import numpy as np
from scipy import stats

# 감마 · 지수 · 카이제곱이 하나의 분포족임을 확인
alpha, beta = 3.0, 2.0
np.random.seed(42)
N = 100_000

# Gamma(α, β)
gamma_samples = np.random.gamma(shape=alpha, scale=beta, size=N)

# Exp(β) = Gamma(1, β)
exp_samples = np.random.exponential(scale=beta, size=N)
gamma1_samples = np.random.gamma(shape=1, scale=beta, size=N)

# Chi2(ν) = Gamma(ν/2, 2)
nu = 6
chi2_samples = np.random.chisquare(df=nu, size=N)
gamma_chi2_samples = np.random.gamma(shape=nu/2, scale=2.0, size=N)

print("=== Gamma vs 특수 케이스 통계량 비교 ===")
print(f"\nGamma({alpha}, {beta}):")
print(f"  표본 평균={gamma_samples.mean():.4f}  (이론: {alpha*beta})")
print(f"  표본 분산={gamma_samples.var():.4f}  (이론: {alpha*beta**2})")

print(f"\nExp({beta}) vs Gamma(1, {beta}):")
print(f"  Exp    평균={exp_samples.mean():.4f}, 분산={exp_samples.var():.4f}")
print(f"  Gamma1 평균={gamma1_samples.mean():.4f}, 분산={gamma1_samples.var():.4f}")
print(f"  이론:  평균={beta}, 분산={beta**2}")

print(f"\nChi2({nu}) vs Gamma({nu/2}, 2):")
print(f"  Chi2   평균={chi2_samples.mean():.4f}, 분산={chi2_samples.var():.4f}")
print(f"  Gamma  평균={gamma_chi2_samples.mean():.4f}, 분산={gamma_chi2_samples.var():.4f}")
print(f"  이론:  평균={nu}, 분산={2*nu}")

# KS 검정: Chi2(6)과 Gamma(3, 2)가 같은 분포인지
ks_stat, p_val = stats.ks_2samp(chi2_samples, gamma_chi2_samples)
print(f"\nKS test Chi2({nu}) vs Gamma({nu/2}, 2): stat={ks_stat:.4f}, p={p_val:.4f} ({'동일' if p_val > 0.05 else '다름'})")
=== Gamma vs 특수 케이스 통계량 비교 ===

Gamma(3.0, 2.0):
  표본 평균=5.9993  (이론: 6.0)
  표본 분산=12.0041  (이론: 12.0)

Exp(2.0) vs Gamma(1, 2.0):
  Exp    평균=1.9982, 분산=4.0094
  Gamma1 평균=2.0042, 분산=3.9891
  이론:  평균=2.0, 분산=4.0

Chi2(6) vs Gamma(3.0, 2):
  Chi2   평균=5.9969, 분산=12.0145
  Gamma  평균=6.0009, 분산=12.0036
  이론:  평균=6, 분산=12

KS test Chi2(6) vs Gamma(3.0, 2): stat=0.0040, p=0.3802 (동일)

11.3 Step 3: 닫힘성과 포아송 과정 연결

import numpy as np
from scipy import stats

np.random.seed(0)
N = 50_000

# ── 닫힘성 검증: Gamma(α1,β) + Gamma(α2,β) ~ Gamma(α1+α2, β) ──
alpha1, alpha2, beta = 2.0, 3.0, 1.5
X1 = np.random.gamma(alpha1, beta, N)
X2 = np.random.gamma(alpha2, beta, N)
S  = X1 + X2

ks_stat, p_val = stats.kstest(S, 'gamma', args=(alpha1+alpha2, 0, beta))
print(f"닫힘성: Gamma({alpha1},{beta}) + Gamma({alpha2},{beta}) ~ Gamma({alpha1+alpha2},{beta})")
print(f"  KS test: stat={ks_stat:.5f}, p={p_val:.4f} ({'OK' if p_val>0.05 else 'FAIL'})")
print(f"  합 표본 평균={S.mean():.4f}  (이론: {(alpha1+alpha2)*beta:.1f})")

# ── 포아송 과정: k번째 사건까지의 대기시간 = Gamma(k, 1/λ) ──
lam = 3.0   # 단위 시간당 평균 사건 수 (rate)
k   = 4     # k번째 사건까지의 대기 시간

# 시뮬레이션: 지수 분포 간격의 합 (Erlang)
wait_times = []
for _ in range(N):
    intervals = np.random.exponential(1/lam, k)  # k개 간격
    wait_times.append(intervals.sum())
wait_times = np.array(wait_times)

# 이론: Gamma(k, 1/λ)
ks_stat, p_val = stats.kstest(wait_times, 'gamma', args=(k, 0, 1/lam))
print(f"\n포아송 과정 (λ={lam}): {k}번째 사건까지 대기시간 ~ Gamma({k}, 1/λ={1/lam:.3f})")
print(f"  KS test: stat={ks_stat:.5f}, p={p_val:.4f} ({'OK' if p_val>0.05 else 'FAIL'})")
print(f"  표본 평균={wait_times.mean():.4f}  (이론: k/λ = {k/lam:.4f})")
print(f"  표본 분산={wait_times.var():.4f}  (이론: k/λ² = {k/lam**2:.4f})")

# ── 감마-포아송 관계: P(Gamma ≤ x) = P(Poisson ≥ α) ──
alpha_int = 3   # 정수 shape
beta_p    = 2.0
x_val     = 5.0

gamma_cdf = stats.gamma.cdf(x_val, a=alpha_int, scale=beta_p)
# P(Y ≥ α) where Y ~ Poisson(x/β)
poisson_prob = 1 - stats.poisson.cdf(alpha_int - 1, mu=x_val/beta_p)

print(f"\n감마-포아송 관계: X ~ Gamma({alpha_int}, {beta_p}), Y ~ Poisson({x_val/beta_p})")
print(f"  P(X ≤ {x_val}) = {gamma_cdf:.6f}")
print(f"  P(Y ≥ {alpha_int}) = {poisson_prob:.6f}")
print(f"  동일한가: {'YES' if abs(gamma_cdf - poisson_prob) < 1e-6 else 'NO'}")
닫힘성: Gamma(2.0,1.5) + Gamma(3.0,1.5) ~ Gamma(5.0,1.5)
  KS test: stat=0.00368, p=0.5291 (OK)
  합 표본 평균=7.5026  (이론: 7.5)

포아송 과정 (λ=3.0): 4번째 사건까지 대기시간 ~ Gamma(4, 1/λ=0.333)
  KS test: stat=0.00414, p=0.4004 (OK)
  표본 평균=1.3340  (이론: k/λ = 1.3333)
  표본 분산=0.4465  (이론: k/λ² = 0.4444)

감마-포아송 관계: X ~ Gamma(3, 2.0), Y ~ Poisson(2.5)
  P(X ≤ 5.0) = 0.456190
  P(Y ≥ 3) = 0.456190
  동일한가: YES

12 응용 분야

분야 활용 구체적 예시
대기 행렬 이론 \(k\) 번째 고객 도착까지 대기 시간 콜센터, 패킷 전송
신뢰성 공학 부품의 수명 분포 다단계 직렬 시스템
베이지안 통계 포아송 rate의 켤레 사전분포 \(\lambda \mid \alpha,\beta \sim \text{Gamma}(\alpha, 1/\beta)\)
의료 통계 생존 시간 (에를랑) 특정 단계 치료 후 생존
기상·수문 강수량, 홍수 최대치 연간 최대 강수량
보험 수리 총 손해액 분포 손해 건수(포아송) × 건당 손해(지수)

13 성질 요약

성질
지지 \((0, \infty)\)
평균 \(E[X]\) \(\alpha\beta\)
분산 \(\text{Var}(X)\) \(\alpha\beta^2\)
왜도(skewness) \(2/\sqrt{\alpha}\)
첨도(excess kurtosis) \(6/\alpha\)
MGF \(M_X(t)\) \((1-\beta t)^{-\alpha}\), \(t < 1/\beta\)
최빈값 \((\alpha-1)\beta\) (\(\alpha > 1\)), \(0\) (\(\alpha \le 1\))
지수족 여부 O
닫힘성 척도 동일한 독립 합

14 관련 주제

선행 지식

후속 주제 (특수 케이스 개별 포스트)

관련 개념

Subscribe

Enjoy this blog? Get notified of new posts by email: