1 초기하 분포란 무엇인가
초기하 분포(Hypergeometric Distribution)는 유한 모집단에서 비복원 추출(sampling without replacement)할 때, 관심 범주에 속하는 개체의 수를 모형화하는 분포이다.
“항아리에 빨간 공 \(M\) 개와 초록 공 \(N-M\) 개가 들어 있다. 눈을 감고 \(K\) 개를 한꺼번에 꺼내면, 빨간 공이 정확히 \(x\) 개일 확률은?” — 이것이 초기하 분포의 원형(prototype)인 항아리 모형(urn model)이다 (Casella & Berger, 2002, Ch.3).
이 분포가 중요한 이유는 다음과 같다:
- 유한 모집단: 이항 분포가 무한 모집단(또는 복원 추출)을 가정하는 반면, 초기하 분포는 모집단의 유한성을 정확히 반영한다
- 비복원 추출: 한 번 뽑은 개체를 되돌리지 않으므로 시행 간 의존성이 존재한다
- 정확 검정: 피셔의 정확검정(Fisher’s exact test)의 이론적 기반이다
- 품질 관리: 수용 표본 추출(acceptance sampling)에서 로트의 합격/불합격 판정에 직접 사용된다
2 정의
모집단 \(N\) 개 중 \(M\) 개는 관심 범주(“성공”), \(N - M\) 개는 그 외(“실패”)이다. \(K\) 개를 비복원 추출할 때, 관심 범주의 개수 \(X\) 의 PMF는:
\[ P(X = x \mid N, M, K) = \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} \]
\(x\) 의 범위는 \(\max(0,\, K - (N-M)) \leq x \leq \min(K, M)\) 이다.
2.1 PMF의 조합론적 유도
총 \(N\) 개에서 \(K\) 개를 뽑는 방법은 \(\binom{N}{K}\) 가지이다. 이 중에서:
- 관심 범주 \(M\) 개에서 \(x\) 개를 뽑는 방법: \(\binom{M}{x}\)
- 나머지 \(N-M\) 개에서 \(K-x\) 개를 뽑는 방법: \(\binom{N-M}{K-x}\)
곱의 법칙에 의해 분자는 \(\binom{M}{x}\binom{N-M}{K-x}\) 이다. 각 조합이 동등한 확률(이산균등)을 가지므로, 비율이 곧 확률이 된다.
\(\binom{N}{K}\) (분모): 전체 \(N\) 개에서 \(K\) 개를 뽑는 총 경우의 수. 비복원 추출에서 모든 부분집합이 동등하게 가능하다는 가정의 기준선이다.
\(\binom{M}{x}\): 관심 범주 \(M\) 개 중 정확히 \(x\) 개를 선택하는 방법의 수.
\(\binom{N-M}{K-x}\): 비관심 범주 \(N-M\) 개에서 나머지 \(K-x\) 개를 채우는 방법의 수.
비율의 의미: “원하는 구성( \(x\) 개 관심 + \(K-x\) 개 비관심)을 만드는 경우 수” \(\div\) “전체 경우 수”.
이항 분포와의 결정적 차이: 이항은 각 시행이 독립이라 \(p^x(1-p)^{K-x}\) 를 직접 곱할 수 있다. 초기하는 비복원 추출이라 이미 뽑힌 개체가 다음 단계의 모집단 구성을 바꾼다. 따라서 조합론적으로 경우의 수를 세어야 한다. 복원 추출이었다면 \(P(X=x) = \binom{K}{x}(M/N)^x(1-M/N)^{K-x}\) 로 단순해진다.
2.2 범위의 제약
이항계수 \(\binom{n}{r}\) 은 \(0 \leq r \leq n\) 에서만 양수이므로, \(x\) 는 다음을 동시에 만족해야 한다:
\[ M \geq x \quad \text{and} \quad N - M \geq K - x \]
이를 정리하면:
\[ \max(0,\, K - (N-M)) \leq x \leq \min(K, M) \]
\(K\) 가 \(M\) 과 \(N-M\) 에 비해 작으면 범위가 단순히 \(0 \leq x \leq K\) 가 된다. 이 경우가 실무에서 가장 흔하다.
2.3 정규화 확인
\[ \sum_{x} \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} = 1 \]
이 등식은 반데르몽드 항등식(Vandermonde’s identity)의 직접적인 결과이다:
\[ \sum_{x=0}^{K} \binom{M}{x}\binom{N-M}{K-x} = \binom{N}{K} \]
조합론적 해석: \(N\) 개의 원소(\(M\) 개의 A그룹 + \(N-M\) 개의 B그룹)에서 \(K\) 개를 선택하는 방법은, A그룹에서 \(x\) 개, B그룹에서 \(K-x\) 개를 뽑는 모든 경우를 합한 것과 같다.
3 평균
3.1 유도 (축소 기법)
Casella & Berger의 우아한 유도를 따른다. 핵심 아이디어는 합산 과정에서 “한 단계 작은” 초기하 분포를 인식하여 합이 1임을 이용하는 것이다.
\[ E[X] = \sum_{x=1}^{K} x \cdot \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} \]
( \(x = 0\) 항은 0이므로 \(x = 1\) 부터 시작)
Step 1: 항등식 \(x\binom{M}{x} = M\binom{M-1}{x-1}\) 을 적용한다.
이 항등식은 조합론적으로 해석할 수 있다: ” \(M\) 명 중 \(x\) 명을 뽑아 그중 한 명을 대표로 세우는 방법의 수”는, “먼저 대표 1명을 뽑고( \(M\) 가지), 나머지 \(M-1\) 명 중 \(x-1\) 명을 뽑는 방법의 수”와 같다.
Step 2: 항등식 \(\binom{N}{K} = \frac{N}{K}\binom{N-1}{K-1}\) 을 적용한다.
\[ E[X] = \sum_{x=1}^{K} \frac{M\binom{M-1}{x-1}\binom{N-M}{K-x}}{\frac{N}{K}\binom{N-1}{K-1}} = \frac{KM}{N} \sum_{x=1}^{K} \frac{\binom{M-1}{x-1}\binom{N-M}{K-x}}{\binom{N-1}{K-1}} \]
Step 3: \(y = x - 1\) 로 치환하면:
\[ \sum_{y=0}^{K-1} \frac{\binom{M-1}{y}\binom{(N-1)-(M-1)}{(K-1)-y}}{\binom{N-1}{K-1}} = 1 \]
이 합은 모수 \((N-1, M-1, K-1)\) 인 초기하 분포의 전체 확률 합이므로 1이다.
따라서:
\[ \boxed{E[X] = \frac{KM}{N}} \]
직관: 모집단에서 관심 범주의 비율이 \(M/N\) 이고, \(K\) 개를 뽑으므로, 기대 관심 개체 수는 \(K \cdot (M/N)\) 이다. 이 공식은 이항 분포의 평균 \(np\) 와 구조적으로 동일하다 — 여기서 \(p = M/N\) 역할을 한다.
항아리에 빨간 공 \(M\) 개, 초록 공 \(N-M\) 개가 있다. \(K\) 개를 꺼낸다.
직관적 기대값: 꺼낸 \(K\) 개에서 빨간 공이 차지하는 비율이 모집단 비율 \(M/N\) 과 같을 것으로 기대한다. 따라서 \(K \times (M/N)\).
경계값으로 검증: - \(K = N\) (전수 조사): \(E[X] = M\). 당연히 빨간 공 \(M\) 개를 모두 얻는다. - \(K = 1\): \(E[X] = M/N\). 한 개를 뽑았을 때 빨간 공일 확률과 정확히 같다.
평균은 복원/비복원을 구분하지 않는다: 이항 분포의 평균 \(Kp\) 와 동일한 구조이다. 비복원 추출이 평균을 바꾸지는 않는다. 차이는 분산에서 나타난다 — 비복원 추출은 분산을 줄인다.
4 분산
\[ \boxed{\text{Var}(X) = \frac{KM}{N} \cdot \frac{(N-M)(N-K)}{N(N-1)} = K \cdot \frac{M}{N} \cdot \frac{N-M}{N} \cdot \frac{N-K}{N-1}} \]
\[\text{Var}(X) = \underbrace{K \cdot \frac{M}{N} \cdot \frac{N-M}{N}}_{\text{이항 분포의 분산}} \cdot \underbrace{\frac{N-K}{N-1}}_{\text{FPC}}\]
첫 두 항 \(K \cdot \frac{M}{N} \cdot \frac{N-M}{N}\): 이항 분포 \(\text{Binomial}(K, M/N)\) 의 분산이다. 복원 추출이었다면 분산이 이 값이 된다.
세 번째 항(FPC): 비복원 추출이 분산을 줄이는 효과이다. 이미 뽑은 개체를 되돌리지 않으므로, 모집단 구성이 점점 확정되어 불확실성이 줄어든다.
반사실: FPC가 없다면(복원 추출과 동일) 같은 모집단에서 더 많은 불확실성이 유지된다. 비복원 추출은 “정보 누적 효과”가 있어 분산이 항상 더 작다.
극단 확인: \(K = N\) (전수 조사)이면 FPC \(= 0\) 이므로 \(\text{Var}(X) = 0\). 모집단을 전부 보면 불확실성이 사라진다는 직관과 정확히 일치한다.
4.1 유한 모집단 교정인자
분산을 \(Kp(1-p)\) ( \(p = M/N\) )와 비교하면:
\[ \text{Var}(X) = Kp(1-p) \cdot \underbrace{\frac{N-K}{N-1}}_{\text{FPC}} \]
\(\frac{N-K}{N-1}\) 을 유한 모집단 교정인자(Finite Population Correction, FPC)라 한다.
- FPC \(< 1\) 이므로 초기하 분포의 분산은 항상 이항 분포의 분산보다 작다
- \(K = 1\) 이면 FPC \(= (N-1)/(N-1) = 1\) : 하나만 뽑으면 복원/비복원 구분이 없다
- \(K = N\) 이면 FPC \(= 0\) : 전수 조사하면 불확실성이 없다
- \(N \to \infty\) ( \(K\) 고정)이면 FPC \(\to 1\) : 무한 모집단에서 이항과 동일해진다
FPC가 왜 분산을 줄이는가? 비복원 추출에서는 이미 뽑힌 개체의 정보가 남은 개체의 구성을 확정적으로 변화시킨다. 이 추가 정보가 불확실성을 줄인다. 극단적으로, 전수 조사( \(K = N\) )하면 모집단을 완전히 알게 되어 분산이 0이 된다.
4.2 분산 유도 (개요)
\(E[X^2]\) 을 구하기 위해 \(E[X(X-1)]\) 을 계산하는 것이 더 편리하다:
\[ E[X(X-1)] = \sum_{x=2}^{K} x(x-1) \cdot \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} \]
평균 유도와 같은 축소 기법을 두 번 적용한다:
- \(x(x-1)\binom{M}{x} = M(M-1)\binom{M-2}{x-2}\)
- \(\binom{N}{K} = \frac{N(N-1)}{K(K-1)}\binom{N-2}{K-2}\)
치환 \(z = x - 2\) 후 합이 모수 \((N-2, M-2, K-2)\) 인 초기하 확률의 합 = 1이 됨을 인식하면:
\[ E[X(X-1)] = \frac{K(K-1)M(M-1)}{N(N-1)} \]
\[ \text{Var}(X) = E[X(X-1)] + E[X] - (E[X])^2 = \frac{KM(N-M)(N-K)}{N^2(N-1)} \]
5 이항 분포로의 수렴
\(N \to \infty\) , \(M/N \to p\) (고정)이면, 초기하 \((N, M, K)\) 분포는 이항 \((K, p)\) 분포에 수렴한다.
5.1 왜 수렴하는가
\(N\) 이 충분히 크면 한 개체를 뽑아도 모집단 구성이 거의 변하지 않는다. 따라서 비복원 추출이 사실상 복원 추출과 동일해진다.
수학적으로, PMF의 각 항을 분석하면:
\[ \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} = \binom{K}{x} \cdot \frac{M(M-1)\cdots(M-x+1)}{N(N-1)\cdots(N-x+1)} \cdot \frac{(N-M)(N-M-1)\cdots}{(N-x)(N-x-1)\cdots} \]
\(N \to \infty\) , \(M/N \to p\) 이면:
\[ \frac{M}{N} \to p, \quad \frac{M-1}{N-1} \to p, \quad \ldots \]
따라서:
\[ P(X = x) \to \binom{K}{x} p^x (1-p)^{K-x} \]
이것은 이항 \((K, p)\) 의 PMF이다.
5.2 분산의 수렴
FPC에서 직접 확인할 수 있다:
\[ \frac{N-K}{N-1} \xrightarrow{N \to \infty} 1 \]
따라서 \(\text{Var}(X) = Kp(1-p) \cdot \text{FPC} \to Kp(1-p)\) (이항 분포의 분산).
5.3 실무적 근사 기준
| 조건 | 근사 사용 여부 | 근거 |
|---|---|---|
| \(K/N < 0.05\) | 이항 근사 사용 가능 | FPC \(\approx 0.95\) , 오차 5% 미만 |
| \(0.05 \leq K/N < 0.10\) | 주의 필요 | FPC의 영향이 눈에 띄기 시작 |
| \(K/N \geq 0.10\) | 초기하 분포 사용 권장 | 이항 근사 오차가 유의미 |
이항 근사를 사용하면 분산을 과대 추정한다 (FPC \(< 1\) 이므로). 이는 신뢰구간이 실제보다 넓어지고 검정력(power)이 낮아지는 보수적 오류로 이어진다. 반대로, 초기하가 맞는 상황에서 이항을 강제하면 정밀도를 낭비하는 셈이다.
6 대칭성
초기하 분포는 흥미로운 대칭성을 가진다.
\[ P(X = x \mid N, M, K) = P(X = x \mid N, K, M) \]
즉, \(M\) 과 \(K\) 의 역할을 바꿔도 분포가 동일하다. 조합론적으로, “관심 범주 \(M\) 개 중에서 표본에 포함된 개수”와 “표본 \(K\) 개 중에서 관심 범주에 속하는 개수”는 같은 사건이다. 이 대칭성은 \(\binom{M}{x}\binom{N-M}{K-x} = \binom{K}{x}\binom{N-K}{M-x}\) (반데르몽드 항등식의 변형)에서 확인된다.
7 피셔 정확검정 (Fisher’s Exact Test)
초기하 분포의 가장 유명한 통계적 응용은 피셔의 정확검정이다.
7.1 검정의 구조
\(2 \times 2\) 분할표에서 행 합계와 열 합계가 고정되었을 때, 특정 셀의 빈도 \(x\) 는 초기하 분포를 따른다.
| 성공 | 실패 | 합계 | |
|---|---|---|---|
| 처리군 | \(x\) | \(K - x\) | \(K\) |
| 대조군 | \(M - x\) | \((N-M)-(K-x)\) | \(N - K\) |
| 합계 | \(M\) | \(N - M\) | \(N\) |
귀무가설 “처리 효과 없음” 하에서 \(x\) 의 분포는:
\[ P(X = x \mid N, M, K) = \frac{\binom{M}{x}\binom{N-M}{K-x}}{\binom{N}{K}} \]
7.2 왜 “정확”검정인가
카이제곱 검정은 기대 빈도가 충분히 클 때의 근사 검정이지만, 피셔 정확검정은 표본 크기에 관계없이 정확한 \(p\) -값을 계산한다. 기대 빈도가 5 미만인 셀이 있으면 카이제곱 근사가 부정확해지므로, 이때 피셔 정확검정을 사용해야 한다.
신약 임상시험에서 20명 중 처리군 10명, 대조군 10명이다. 부작용이 총 4건 발생했는데, 처리군에서 3건, 대조군에서 1건이었다. 처리군의 부작용 비율이 유의하게 높은가?
\(N = 20\) , \(M = 4\) (부작용 총 건수), \(K = 10\) (처리군 크기)에서, \(X \geq 3\) 의 확률:
\[ P(X \geq 3) = P(X=3) + P(X=4) = \frac{\binom{4}{3}\binom{16}{7}}{\binom{20}{10}} + \frac{\binom{4}{4}\binom{16}{6}}{\binom{20}{10}} \]
이 값이 유의수준보다 작으면 처리 효과(부작용 증가)를 주장할 수 있다.
8 다변량 초기하 분포
2개 범주를 넘어 \(k\) 개 범주로 일반화할 수 있다.
모집단 \(N\) 개가 \(k\) 개 범주로 나뉘어 각각 \(M_1, M_2, \ldots, M_k\) 개씩 있다 ( \(\sum M_i = N\) ). \(K\) 개를 비복원 추출할 때, 각 범주에서 뽑힌 개수 \((X_1, \ldots, X_k)\) 의 결합 PMF는:
\[ P(X_1 = x_1, \ldots, X_k = x_k) = \frac{\binom{M_1}{x_1}\binom{M_2}{x_2}\cdots\binom{M_k}{x_k}}{\binom{N}{K}} \]
단, \(\sum x_i = K\) 이다.
이 분포는 다항 분포(multinomial distribution)의 비복원 추출 버전이다. \(N \to \infty\) 이면 다항 분포에 수렴한다.
9 응용 분야
| 분야 | 활용 | 구체적 예시 |
|---|---|---|
| 품질 관리 | 수용 표본 추출 | 로트 \(N\) 개 중 \(K\) 개 검사, 불량 \(x\) 개 발견 시 합격/불합격 판정 |
| 임상시험 | 피셔 정확검정 | 소규모 시험에서 처리 효과의 정확한 \(p\) -값 계산 |
| 생태학 | 포획-재포획법 | 총 \(N\) 마리, 표지 \(M\) 마리, 재포획 \(K\) 마리 중 표지 \(x\) 마리 → \(N\) 추정 |
| 카드 게임 | 핸드 확률 | 52장 중 5장 뽑기에서 특정 조합 확률 |
| 데이터 과학 | 피처 선택 | 전체 \(N\) 개 피처 중 상위 \(M\) 개가 선택된 \(K\) 개 부분집합에 \(x\) 개 포함될 확률 |
| 법의학 | DNA 데이터베이스 매칭 | 유한 데이터베이스에서의 우연 일치 확률 |
| 선거 감사 | 표본 감사 | 전체 투표 용지 중 표본에서 오류 검출 확률 |
9.1 수용 표본 추출 (Acceptance Sampling)
Casella & Berger의 예시를 확장한다. 로트 25개 부품 중 불량이 \(M\) 개일 때, 10개를 검사하여 불량이 0개인 확률:
| 불량 수 \(M\) | \(P(X = 0)\) | 해석 |
|---|---|---|
| 0 | 1.000 | 불량 없으면 당연히 불량 안 나옴 |
| 1 | 0.600 | 불량 1개여도 표본에서 못 잡을 확률 60% |
| 3 | 0.163 | 비교적 드물지만 가능 |
| 6 | 0.028 | 매우 드묾 — 불량 없다는 강한 증거 |
| 10 | 0.000 | 불량 10개인데 못 잡는 건 사실상 불가능 |
\(P(X = 0 \mid M = 6) = 0.028\) 이라는 결과는, “표본에서 불량이 없었다”는 관측이 “로트에 불량이 6개 이상”이라는 가설 하에서 매우 드문 사건임을 보여준다. 이 논리가 통계적 가설검정의 핵심이다.
9.2 포획-재포획법 (Capture-Recapture)
생태학에서 동물 개체 수를 추정하는 고전적 방법이다:
- 1차 포획: \(M\) 마리를 잡아 표지하고 놓아줌
- 2차 포획: \(K\) 마리를 재포획, 그 중 \(x\) 마리에 표지가 있음
- 추정: \(E[X] = KM/N\) 에서 \(\hat{N} = KM/x\)
이 추정량은 \(x/K \approx M/N\) (표본 비율 \(\approx\) 모집단 비율)이라는 직관에 기반한다. 단, \(x = 0\) 이면 추정 불가능하다는 한계가 있다.
10 코드 예시
10.1 Step 1: 순수 Python 구현 (원리 이해)
import math
# ----- 초기하 PMF 직접 구현 -----
def hypergeom_pmf(x, N, M, K):
"""P(X = x | N, M, K) = C(M,x)*C(N-M,K-x) / C(N,K)"""
def comb(n, r):
if r < 0 or r > n:
return 0
return math.comb(n, r)
return comb(M, x) * comb(N - M, K - x) / comb(N, K)
# ----- 예시: 품질 검사 (Casella & Berger Example 3.2.1) -----
N, M, K = 25, 6, 10
print(f"로트 {N}개, 불량 {M}개, 검사 {K}개")
print(f"{'x':>3} | {'P(X=x)':>10} | {'P(X<=x)':>10}")
print("-" * 35)
cum = 0.0
for x in range(min(K, M) + 1):
p = hypergeom_pmf(x, N, M, K)
cum += p
print(f"{x:3d} | {p:10.6f} | {cum:10.6f}")
# ----- 평균과 분산 검증 -----
mean_formula = K * M / N
var_formula = K * M * (N - M) * (N - K) / (N**2 * (N - 1))
mean_direct = sum(x * hypergeom_pmf(x, N, M, K) for x in range(min(K, M) + 1))
var_direct = sum(
(x - mean_formula)**2 * hypergeom_pmf(x, N, M, K)
for x in range(min(K, M) + 1)
)
print(f"\n평균: 공식 = {mean_formula:.4f}, 직접 = {mean_direct:.4f}")
print(f"분산: 공식 = {var_formula:.4f}, 직접 = {var_direct:.4f}")
# ----- FPC 효과 -----
p = M / N
fpc = (N - K) / (N - 1)
binom_var = K * p * (1 - p)
print(f"\n이항 분산 (FPC 없음): {binom_var:.4f}")
print(f"FPC = {fpc:.4f}")
print(f"초기하 분산 = 이항 분산 × FPC = {binom_var * fpc:.4f}")10.2 Step 2: scipy 구현 (실무 활용)
import numpy as np
from scipy import stats
# ----- scipy 초기하 분포 -----
# scipy: hypergeom(M_total, n_success, n_draw) = hypergeom(N, M, K)
N, M, K = 25, 6, 10
dist = stats.hypergeom(N, M, K)
print(f"E[X] = {dist.mean():.4f} (이론값: {K*M/N:.4f})")
print(f"Var(X) = {dist.var():.4f}")
print(f"P(X = 0) = {dist.pmf(0):.4f}")
# ----- 이항 근사와 비교 -----
p = M / N
binom_dist = stats.binom(K, p)
print(f"\n{'x':>3} | {'Hypergeom':>12} | {'Binomial':>12} | {'차이':>10}")
print("-" * 50)
for x in range(7):
h = dist.pmf(x)
b = binom_dist.pmf(x)
print(f"{x:3d} | {h:12.6f} | {b:12.6f} | {abs(h-b):10.2e}")# ----- 피셔 정확검정 -----
from scipy import stats
# 예시: 약물 부작용
# 처리군: 부작용 3/10, 대조군: 부작용 1/10
table = [[3, 7], [1, 9]] # [[처리-부작용, 처리-정상], [대조-부작용, 대조-정상]]
odds_ratio, p_value = stats.fisher_exact(table, alternative='greater')
print(f"오즈비: {odds_ratio:.3f}")
print(f"p-value (단측): {p_value:.4f}")
# 카이제곱 검정과 비교
chi2, p_chi2, dof, expected = stats.chi2_contingency(table, correction=False)
print(f"\n카이제곱 검정 p-value: {p_chi2:.4f}")
print(f"기대 빈도:\n{expected}")
print("(기대 빈도 < 5인 셀이 있으면 피셔 정확검정이 더 신뢰할 수 있다)")# ----- 포획-재포획 시뮬레이션 -----
import numpy as np
np.random.seed(42)
N_true = 500 # 실제 개체 수 (미지)
M_marked = 50 # 1차 포획 표지 수
K_recapture = 60 # 2차 포획 수
n_sim = 10000
estimates = []
for _ in range(n_sim):
# 2차 포획에서 표지 개체 수 (초기하 분포)
x = stats.hypergeom(N_true, M_marked, K_recapture).rvs()
if x > 0: # x=0이면 추정 불가
N_hat = K_recapture * M_marked / x
estimates.append(N_hat)
estimates = np.array(estimates)
print(f"실제 N = {N_true}")
print(f"추정값 중앙값: {np.median(estimates):.1f}")
print(f"추정값 평균: {np.mean(estimates):.1f}")
print(f"추정값 표준편차: {np.std(estimates):.1f}")
print(f"x=0으로 추정 불가 비율: {1 - len(estimates)/n_sim:.4f}")10.3 R 코드
# R에서의 초기하 분포
N <- 25; M <- 6; K <- 10
# 기본 함수: dhyper, phyper, qhyper, rhyper
# R 매개변수: dhyper(x, m, n, k) = dhyper(x, M, N-M, K)
cat("P(X=0):", dhyper(0, M, N-M, K), "\n")
cat("E[X]:", K * M / N, "\n")
# 피셔 정확검정
table <- matrix(c(3, 1, 7, 9), nrow=2)
fisher.test(table, alternative="greater")
# 포획-재포획 추정
set.seed(42)
N_true <- 500; M_marked <- 50; K_recap <- 60
x_obs <- rhyper(10000, M_marked, N_true - M_marked, K_recap)
N_hat <- ifelse(x_obs > 0, K_recap * M_marked / x_obs, NA)
cat("추정값 중앙값:", median(N_hat, na.rm=TRUE), "\n")11 관련 분포 비교
| 성질 | 초기하 | 이항 | 다항 |
|---|---|---|---|
| 추출 방식 | 비복원 | 복원 (독립) | 복원 (독립) |
| 모집단 | 유한 \(N\) | 무한 (또는 복원) | 무한 (또는 복원) |
| 범주 수 | 2 | 2 | \(k \geq 2\) |
| 시행 간 독립 | 아니오 | 예 | 예 |
| 분산 보정 | FPC 필요 | 불필요 | 불필요 |
| 극한 관계 | \(N \to \infty\) 이면 이항 | — | — |
12 관련 주제
선행 지식
후속 주제
관련 개념
- 이산균등 분포 — 초기하 분포의 기저 가정
- Maximum Likelihood Estimation — 포획-재포획에서의 \(N\) 추정
- 데이터 축소의 원리 — 충분통계량