1 개요
검정을 도출하는 방법(LRT, UIT, IUT, 베이즈 검정)을 배웠다면, 이제 “어떤 검정이 더 좋은가?”를 평가해야 한다. Casella & Berger (2002, Ch.8) §8.3은 이 질문에 답하는 기준을 체계적으로 제시한다.
핵심 아이디어는 단순하다. 검정의 품질은 오류 확률로 평가한다. 그리고 오류 확률 전체를 하나의 함수, 즉 검정력 함수(power function) 로 요약한다.
이 포스트에서 다루는 내용은 다음과 같다.
| 개념 | 역할 |
|---|---|
| Type I / II Error | 두 종류의 실수 정의 |
| 검정력 함수 \(\beta(\theta)\) | 모든 \(\theta\) 에서 오류 확률을 하나로 통합 |
| Size와 Level | Type I Error를 제어하는 두 기준 |
| 불편 검정 | 최소한의 합리성 조건 |
| UMP 검정 | 최강력(최적) 검정 |
| Neyman-Pearson 보조정리 | UMP 검정의 존재·구성 조건 |
| MLR과 Karlin-Rubin 정리 | 단측 복합 가설에서 UMP의 존재 보장 |
2 두 종류의 오류
\(H_0: \theta \in \Theta_0\) vs \(H_1: \theta \in \Theta_0^c\) 검정에서 기각 영역을 \(R\) 이라 하면 두 종류의 실수가 가능하다.
| \(H_0\) 채택 | \(H_0\) 기각 | |
|---|---|---|
| \(H_0\) 참 (\(\theta \in \Theta_0\)) | 옳은 결정 | Type I Error (거짓 양성) |
| \(H_1\) 참 (\(\theta \in \Theta_0^c\)) | Type II Error (거짓 음성) | 옳은 결정 |
Type I Error (1종 오류): \(H_0\) 가 참인데 기각하는 오류. 유죄가 아닌 사람을 유죄 선고하는 것. 확률: \(P_\theta(X \in R)\) for \(\theta \in \Theta_0\)
Type II Error (2종 오류): \(H_1\) 이 참인데 \(H_0\) 를 채택하는 오류. 실제 유죄인 사람을 무죄 방면하는 것. 확률: \(P_\theta(X \in R^c) = 1 - P_\theta(X \in R)\) for \(\theta \in \Theta_0^c\)
고정된 표본 크기 \(n\) 에서 기각 영역 \(R\) 을 크게 하면(더 자주 기각) Type I Error가 증가하고 Type II Error가 감소한다. 반대로 \(R\) 을 작게 하면 Type I Error가 감소하고 Type II Error가 증가한다. 두 오류는 트레이드오프 관계에 있다.
해결책은 두 가지다:
- \(n\) 을 늘린다 → 두 오류 모두 감소 가능
- Type I Error를 먼저 제어하고, 그 안에서 Type II Error를 최소화한다 (고전적 접근)
\(P_\theta(X \in R)\) 하나의 함수가 모든 정보를 담는다.
- \(\theta \in \Theta_0\) 이면: Type I Error 확률
- \(\theta \in \Theta_0^c\) 이면: $1 - $ (Type II Error 확률) = 검정력(Power)
3 검정력 함수
기각 영역 \(R\) 을 갖는 가설검정의 검정력 함수(power function) 는
\[\beta(\theta) = P_\theta(X \in R)\]
이상적인 검정력 함수는 \(\theta \in \Theta_0\) 에서 0, \(\theta \in \Theta_0^c\) 에서 1이다. 현실에서 이 이상은 달성 불가능하다.
직관: \(\beta(\theta)\) 는 “파라미터가 \(\theta\) 일 때 이 검정이 얼마나 잘 기각하는가”를 나타낸다.
- \(\theta \in \Theta_0\) (귀무가설 영역): \(\beta(\theta)\) 가 작아야 한다 (잘못된 기각을 피해야 함)
- \(\theta \in \Theta_0^c\) (대립가설 영역): \(\beta(\theta)\) 가 커야 한다 (옳은 기각을 잘 해야 함)
좋은 검정의 검정력 함수: \(\Theta_0\) 에서 낮고, \(\Theta_0^c\) 에서 높으며, 경계에서 날카롭게 전환된다.
3.1 예시 1: 이항 검정력 함수 (Example 8.3.2)
\(X \sim \text{Binomial}(5, \theta)\), \(H_0: \theta \leq 1/2\) vs \(H_1: \theta > 1/2\)
검정 1: \(X = 5\) 이면 기각 (매우 엄격)
\[\beta_1(\theta) = P_\theta(X = 5) = \theta^5\]
- \(\theta = 1/2\) 에서 \(\beta_1(1/2) = 1/32 \approx 0.031\) → Type I Error 매우 작음
- \(\theta = 0.7\) 에서 \(\beta_1(0.7) = 0.168\) → 0.7이어도 16.8%만 기각 → Type II Error 크다
검정 2: \(X \geq 3\) 이면 기각 (덜 엄격)
\[\beta_2(\theta) = \binom{5}{3}\theta^3(1-\theta)^2 + \binom{5}{4}\theta^4(1-\theta) + \theta^5\]
- \(\theta = 1/2\) 에서 \(\beta_2(1/2) = 0.5\) → Type I Error가 크다
- \(\theta = 0.7\) 에서 \(\beta_2(0.7) \approx 0.84\) → 84% 기각 → Type II Error 작다
해석: 검정 2가 \(\theta > 1/2\) 에서 기각을 더 잘 하지만(\(\beta_2 > \beta_1\)), \(\theta \leq 1/2\) 에서도 더 자주 잘못 기각한다(\(\beta_2 > \beta_1\)). 어느 검정이 더 나은지는 연구자가 어떤 오류를 더 심각하게 여기는지에 달려 있다.
3.2 예시 2: 정규분포 검정력 함수 (Example 8.3.3)
\(X_1, \ldots, X_n \sim N(\theta, \sigma^2)\), \(\sigma^2\) 알려짐, \(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\)
LRT: \((\bar{X} - \theta_0)/(\sigma/\sqrt{n}) > c\) 이면 기각. 검정력 함수:
\[\beta(\theta) = P_\theta\left(\frac{\bar{X} - \theta_0}{\sigma/\sqrt{n}} > c\right) = P\left(Z > c + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right)\]
여기서 \(Z \sim N(0,1)\).
- \(\theta \to -\infty\): \(c + (\theta_0 - \theta)/(\sigma/\sqrt{n}) \to \infty\) → \(\beta(\theta) \to 0\) (옳게 채택)
- \(\theta = \theta_0\): \(\beta(\theta_0) = P(Z > c) = \alpha\) (Size가 정확히 \(\alpha\))
- \(\theta \to \infty\): \(\beta(\theta) \to 1\) (옳게 기각)
직관: \(\theta\) 가 \(\theta_0\) 보다 클수록 \(\bar{X}\) 의 분포가 오른쪽으로 이동하고, 기각 영역에 들어올 확률이 높아진다. S자 형태의 증가 함수.
3.3 예시 3: 표본 크기 결정 (Example 8.3.4)
위 정규분포 검정에서 두 가지 요구사항을 동시에 만족시키고 싶다:
- Type I Error: \(\beta(\theta_0) \leq 0.1\)
- \(\theta \geq \theta_0 + \sigma\) 에서 검정력: \(\beta(\theta_0 + \sigma) \geq 0.8\)
\[\beta(\theta_0) = P(Z > c) = 0.1 \implies c = z_{0.1} = 1.28\]
\[\beta(\theta_0 + \sigma) = P\left(Z > 1.28 - \sqrt{n}\right) = 0.8 \implies 1.28 - \sqrt{n} = -z_{0.8} = -0.84\]
\[\sqrt{n} = 1.28 + 0.84 = 2.12 \implies n = 4.49 \implies n = 5\]
해석: \(c = 1.28\), \(n = 5\) 로 설정하면 두 오류 요구를 동시에 충족한다. 표본 크기는 두 오류를 동시에 제어하는 설계 변수다.
4 크기(Size)와 수준(Level)
Section 8.2의 방법들(LRT 등)은 기각 영역의 형태를 주지만, 임계값 \(c\) 를 특정하지 않는다. Type I Error를 \(\alpha\) 이하로 제한한다는 조건이 \(c\) 를 결정한다.
검정력 함수 \(\beta(\theta)\) 를 갖는 검정이 크기 \(\alpha\) 검정(size \(\alpha\) test) 이면
\[\sup_{\theta \in \Theta_0} \beta(\theta) = \alpha\]
검정력 함수 \(\beta(\theta)\) 를 갖는 검정이 수준 \(\alpha\) 검정(level \(\alpha\) test) 이면
\[\sup_{\theta \in \Theta_0} \beta(\theta) \leq \alpha\]
차이: 크기 \(\alpha\) 검정은 \(\Theta_0\) 에서 Type I Error의 최댓값이 정확히 \(\alpha\). 수준 \(\alpha\) 검정은 최댓값이 \(\alpha\) 이하. 수준 \(\alpha\) 검정 집합 \(\supset\) 크기 \(\alpha\) 검정 집합.
복잡한 모델에서는 크기가 정확히 \(\alpha\) 인 검정을 구성하기 어려운 경우가 많다. 이때 “\(\alpha\) 이하면 충분하다”는 수준 \(\alpha\) 조건이 실용적이다. UI/IU 검정이 대표적 사례다(→ UI/IU 검정 포스트 참조).
실무: 연구자는 수준(보통 \(\alpha = 0.05\))을 먼저 지정하고, 이 조건 안에서 Type II Error를 최소화하는 검정을 찾는다. Type I Error(귀무가설이 참인데 기각하는 오류)를 엄격히 제어하는 것이 우선이다.
5 불편 검정 (Unbiased Test)
검정력 함수 \(\beta(\theta)\) 를 갖는 검정이 불편(unbiased) 이면 모든 \(\theta' \in \Theta_0^c\) 와 \(\theta'' \in \Theta_0\) 에 대해
\[\beta(\theta') \geq \beta(\theta'')\]
직관: “대립가설 영역에서의 기각 확률 \(\geq\) 귀무가설 영역에서의 기각 확률”. 즉, 진짜로 기각해야 할 때 기각할 확률이, 잘못 기각하는 확률보다 항상 높다. 불편 검정은 최소한의 합리성 조건이다.
왜 편향 검정(biased test)이 나쁜가: \(\theta \in \Theta_0^c\) 인데도 \(\beta(\theta') < \beta(\theta_0)\) 라면, 이 검정은 실제 대립이 맞을 때 귀무가설이 맞을 때보다 더 낮은 확률로 기각한다. 거꾸로 된 검정이다.
예시: 정규 단측 LRT에서 \(\beta(\theta)\) 는 \(\theta\) 의 순증가 함수이므로 \(\theta > \theta_0\) 이면 항상 \(\beta(\theta) > \beta(\theta_0)\). 따라서 이 검정은 불편이다.
6 최강력 검정 (UMP Test)
검정 평가의 최종 목표: Type I Error를 level \(\alpha\) 로 제한하면서 Type II Error를 최소화하는 검정 = 검정력을 최대화하는 검정.
클래스 \(\mathcal{C}\) 에 속하는 검정 중, 검정력 함수 \(\beta(\theta)\) 가 모든 \(\theta \in \Theta_0^c\) 와 \(\mathcal{C}\) 에 속하는 모든 검정의 검정력 함수 \(\beta'(\theta)\) 에 대해
\[\beta(\theta) \geq \beta'(\theta)\]
를 만족하는 검정을 균일 최강력(Uniformly Most Powerful, UMP) 클래스 \(\mathcal{C}\) 검정이라 한다.
\(\mathcal{C}\) = (모든 level \(\alpha\) 검정)이면, 이를 UMP level \(\alpha\) 검정이라 한다.
직관: “어떤 \(\theta \in \Theta_0^c\) 를 가정하더라도 다른 검정보다 더 잘 기각한다.” UMP 검정이 존재하면 최적 검정이다. 그러나 현실에서는 UMP가 존재하지 않는 경우도 많다.
7 Neyman-Pearson 보조정리
단순 가설 vs 단순 가설(\(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\))에서 UMP 검정의 존재와 구성 방법을 완전히 해결한다.
\(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\) 에서 다음을 만족하는 기각 영역 \(R\) 을 갖는 검정을 고려한다:
\[\mathbf{x} \in R \text{ if } f(\mathbf{x}|\theta_1) > k f(\mathbf{x}|\theta_0) \tag{8.3.1}\] \[\mathbf{x} \in R^c \text{ if } f(\mathbf{x}|\theta_1) < k f(\mathbf{x}|\theta_0)\]
for some \(k \geq 0\), and
\[\alpha = P_{\theta_0}(X \in R) \tag{8.3.2}\]
그러면:
(a) 충분성: (8.3.1)과 (8.3.2)를 만족하는 모든 검정은 UMP level \(\alpha\) 검정이다.
(b) 필요성: \(k > 0\) 으로 (8.3.1)과 (8.3.2)를 만족하는 검정이 존재하면, 모든 UMP level \(\alpha\) 검정은 size \(\alpha\) 검정이고 (8.3.1)을 (거의) 만족한다.
7.1 직관: 왜 우도비가 기준인가
“\(H_1\) 하에서의 가능도가 \(H_0\) 하에서보다 \(k\) 배 이상 크면 기각한다.” 이 기준이 최적인 이유는 다음과 같다.
같은 Type I Error(\(\alpha\))를 쓰면서 Type II Error를 최소화하려면, 기각 영역을 \(H_1\) 의 우도가 \(H_0\) 에 비해 높은 데이터 점들로 채워야 한다. 어떤 데이터가 \(H_1\) 을 더 강하게 지지하는지를 우도비가 정확히 측정하기 때문이다.
비유: 한정된 예산(\(\alpha\))으로 범죄 수사에서 유죄 증거를 최대한 확보하려면, 무죄 가능성이 낮고 유죄 가능성이 높은 단서에 자원을 집중해야 한다. 우도비는 “이 단서가 유죄(\(\theta_1\))를 얼마나 무죄(\(\theta_0\))보다 더 강하게 가리키는가”를 수치화한다.
7.2 증명 직관
임의의 level \(\alpha\) 검정 \(\phi'\) 와 NP 검정 \(\phi\) 에 대해:
\[0 \leq \int [\phi(\mathbf{x}) - \phi'(\mathbf{x})][f(\mathbf{x}|\theta_1) - k f(\mathbf{x}|\theta_0)] d\mathbf{x}\]
왜 이 피적분 함수가 비음(非負)인가? \(f(\mathbf{x}|\theta_1) > kf(\mathbf{x}|\theta_0)\) 이면 \(\phi = 1 \geq \phi'\) 이므로 두 인수의 부호가 같다. 반대 경우도 마찬가지. 전개하면:
\[0 \leq \beta(\theta_1) - \beta'(\theta_1) - k(\underbrace{\beta(\theta_0) - \beta'(\theta_0)}_{\geq 0, \text{ since both} \leq \alpha})\]
\(k \geq 0\) 이고 괄호 안이 \(\geq 0\) 이므로 \(\beta(\theta_1) \geq \beta'(\theta_1)\). NP 검정이 임의의 level \(\alpha\) 검정보다 검정력이 크다.
7.3 예시: 이항 UMP 검정 (Example 8.3.14)
\(X \sim \text{Binomial}(2, \theta)\), \(H_0: \theta = 1/2\) vs \(H_1: \theta = 3/4\)
\[\frac{f(x|\theta = 3/4)}{f(x|\theta = 1/2)} = \begin{cases} 1/4 & x = 0 \\ 3/4 & x = 1 \\ 9/4 & x = 2 \end{cases}\]
- \(3/4 < k < 9/4\) 이면: \(x = 2\) 일 때만 기각 → UMP level \(\alpha = P(X=2|1/2) = 1/4\)
- \(1/4 < k < 3/4\) 이면: \(x = 1, 2\) 이면 기각 → UMP level \(\alpha = 3/4\)
해석: \(k\) 를 조절하면 다양한 \(\alpha\) 수준에서의 UMP를 구성할 수 있다. 이산 분포에서는 원하는 \(\alpha\) 를 정확히 달성하지 못할 수 있다.
8 단조 우도비 (MLR)와 Karlin-Rubin 정리
단순 vs 단순 가설에서 NP 보조정리는 완전한 해답을 준다. 실무에서는 복합 가설(특히 단측 가설)이 더 흔하다. 이를 위해 MLR이 핵심 역할을 한다.
일변량 확률변수 \(T\) 의 분포족 \(\{g(t|\theta)\}\) 이 단조 우도비(monotone likelihood ratio, MLR) 를 가지면, 모든 \(\theta_2 > \theta_1\) 에 대해 \(g(t|\theta_2)/g(t|\theta_1)\) 이 \(t\) 의 단조함수이다.
직관: \(\theta\) 가 커질수록 \(T\) 가 커지는 경향이 강해진다는 의미다. 정규분포(알려진 분산), 포아송, 이항 분포 등 지수족은 모두 MLR을 가진다.
\(T\) 가 \(\theta\) 의 충분통계량이고, \(\{g(t|\theta)\}\) 가 MLR을 가지면, \(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\) 에서
\[\text{기각}: T > t_0 \quad \text{(어떤 }t_0\text{에 대해)}\]
인 검정은 UMP level \(\alpha = P_{\theta_0}(T > t_0)\) 검정이다.
직관: MLR 조건 덕분에 단측 복합 가설에서도 “충분통계량이 임계값을 넘으면 기각”이라는 단순한 형태의 UMP가 존재한다.
왜 MLR이 충분한가: 검정 대상을 \(H_0: \theta \leq \theta_0\) vs \(H_1: \theta = \theta'\) (임의의 \(\theta' > \theta_0\))로 축소하면, MLR로 인해 NP 보조정리의 기각 조건이 항상 \(T > t_0\) 와 동치가 된다. 따라서 하나의 검정이 모든 \(\theta' > \theta_0\) 에서 동시에 UMP가 된다.
8.1 예시: 정규분포 단측 UMP
\(X_1, \ldots, X_n \sim N(\theta, \sigma^2)\), \(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\)
\(\bar{X}\) 는 충분통계량이고 \(N(\theta, \sigma^2/n)\) 분포족은 MLR을 가진다. 따라서 Karlin-Rubin 정리에 의해
\[\text{기각}: \bar{X} > \frac{\sigma z_\alpha}{\sqrt{n}} + \theta_0\]
이 UMP level \(\alpha\) 검정이다.
검정력 함수:
\[\beta(\theta) = P\left(Z > z_\alpha + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right)\]
이 함수는 \(\theta\) 의 순증가 함수이고, \(\beta(\theta_0) = \alpha\), \(\theta > \theta_0\) 에서 \(\beta(\theta) > \alpha\) 이므로 불편 검정이기도 하다.
9 UMP가 존재하지 않는 경우
양측 복합 가설 \(H_0: \theta = \theta_0\) vs \(H_1: \theta \neq \theta_0\) 에서는 UMP level \(\alpha\) 검정이 존재하지 않는다.
이유: NP 보조정리의 필요성 조건에 의해, \(\theta_1 < \theta_0\) 에서 UMP가 되려면 좌측 단측 검정이어야 하고, \(\theta_2 > \theta_0\) 에서는 우측 단측 검정이어야 하다. 두 조건을 동시에 만족하는 단일 검정은 존재하지 않는다.
대안: 클래스를 불편 검정으로 제한하면 UMP 불편(UMPU) 검정이 존재한다. 양측 t 검정:
\[\text{기각}: |\bar{X} - \theta_0| > \frac{\sigma z_{\alpha/2}}{\sqrt{n}}\]
은 UMPU level \(\alpha\) 검정이다.
검정력 비교:
- 좌측 단측 검정 \(\beta_1\): \(\theta < \theta_0\) 에서 최강, \(\theta > \theta_0\) 에서 매우 낮음
- 우측 단측 검정 \(\beta_2\): \(\theta > \theta_0\) 에서 최강, \(\theta < \theta_0\) 에서 매우 낮음
- 양측 검정 \(\beta_3\) (UMPU): 양쪽 모두에서 균형 잡힌 검정력
양쪽 대립이 모두 관심 대상일 때는 \(\beta_3\) 이 전반적으로 우수하다.
10 코드 구현
10.1 Python
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
def power_function_normal(
theta_values: np.ndarray,
theta0: float,
sigma: float,
n: int,
alpha: float = 0.05,
alternative: str = "greater",
) -> np.ndarray:
"""
H0: theta <= theta0 (단측) 또는 H0: theta = theta0 (양측)의 검정력 함수 계산
"""
z_crit = stats.norm.ppf(1 - alpha)
if alternative == "greater":
# 단측 (우측): 기각 = Xbar > theta0 + sigma*z_alpha/sqrt(n)
c = theta0 + sigma * z_crit / np.sqrt(n)
return stats.norm.sf(c, loc=theta_values, scale=sigma / np.sqrt(n))
elif alternative == "two-sided":
# 양측: 기각 = |Xbar - theta0| > sigma*z_{alpha/2}/sqrt(n)
z_half = stats.norm.ppf(1 - alpha / 2)
c_upper = theta0 + sigma * z_half / np.sqrt(n)
c_lower = theta0 - sigma * z_half / np.sqrt(n)
p_upper = stats.norm.sf(c_upper, loc=theta_values, scale=sigma / np.sqrt(n))
p_lower = stats.norm.cdf(c_lower, loc=theta_values, scale=sigma / np.sqrt(n))
return p_upper + p_lower
else:
raise ValueError("alternative must be 'greater' or 'two-sided'")
def power_function_binomial(
theta_values: np.ndarray,
n_trials: int,
threshold: int,
direction: str = "upper",
) -> np.ndarray:
"""
이항 검정의 검정력 함수
direction='upper': X >= threshold 이면 기각
"""
powers = []
for theta in theta_values:
if direction == "upper":
# P(X >= threshold | theta)
power = stats.binom.sf(threshold - 1, n_trials, theta)
else:
power = stats.binom.cdf(threshold, n_trials, theta)
powers.append(power)
return np.array(powers)
def sample_size_for_power(
theta0: float,
theta1: float,
sigma: float,
alpha: float = 0.05,
target_power: float = 0.80,
) -> dict:
"""
단측 정규 검정에서 목표 검정력을 달성하는 최소 표본 크기 계산
H0: theta <= theta0, 관심 대립: theta = theta1 > theta0
"""
z_alpha = stats.norm.ppf(1 - alpha)
z_beta = stats.norm.ppf(target_power)
n_exact = ((z_alpha + z_beta) * sigma / (theta1 - theta0)) ** 2
n = int(np.ceil(n_exact))
# 확인: n에서의 실제 검정력
actual_power = stats.norm.sf(
theta0 + sigma * z_alpha / np.sqrt(n),
loc=theta1,
scale=sigma / np.sqrt(n),
)
return {
"n (이론)": n_exact,
"n (정수)": n,
"목표 검정력": target_power,
"실제 검정력 (n에서)": actual_power,
"alpha": alpha,
"임계값 c = z_alpha + z_beta": z_alpha + z_beta,
}
# 검정력 함수 시각화
theta_range = np.linspace(-3, 3, 300)
theta0 = 0.0
sigma = 1.0
for n in [5, 20, 50]:
beta_one = power_function_normal(theta_range, theta0, sigma, n, alpha=0.05,
alternative="greater")
beta_two = power_function_normal(theta_range, theta0, sigma, n, alpha=0.05,
alternative="two-sided")
print(f"n={n}: beta_one(theta0+0.5)={beta_one[np.argmin(np.abs(theta_range-0.5))]:.3f}, "
f"beta_two(theta0+0.5)={beta_two[np.argmin(np.abs(theta_range-0.5))]:.3f}")
print()
print("=== 표본 크기 결정 (alpha=0.1, power=0.8 at theta0+sigma) ===")
result = sample_size_for_power(0.0, 1.0, 1.0, alpha=0.1, target_power=0.8)
for k, v in result.items():
print(f" {k}: {v:.4f}" if isinstance(v, float) else f" {k}: {v}")10.2 Python: NP 보조정리 기각 영역 시각화
import numpy as np
from scipy import stats
def neyman_pearson_binomial(
n_trials: int,
theta0: float,
theta1: float,
target_alpha: float = 0.25,
) -> dict:
"""
이항 분포에서 NP 보조정리로 UMP 검정 구성
H0: theta = theta0 vs H1: theta = theta1 (theta1 > theta0)
"""
x_values = np.arange(n_trials + 1)
pmf0 = stats.binom.pmf(x_values, n_trials, theta0)
pmf1 = stats.binom.pmf(x_values, n_trials, theta1)
likelihood_ratio = pmf1 / pmf0
# 우도비 내림차순으로 기각 영역 구성
sorted_idx = np.argsort(-likelihood_ratio)
cumulative_alpha = 0
rejection_set = []
for idx in sorted_idx:
cumulative_alpha += pmf0[idx]
rejection_set.append(x_values[idx])
if cumulative_alpha >= target_alpha:
break
actual_alpha = sum(pmf0[x] for x in rejection_set)
power = sum(pmf1[x] for x in rejection_set)
return {
"우도비 테이블": {x: lr for x, lr in zip(x_values, likelihood_ratio)},
"기각 영역": sorted(rejection_set),
"실제 alpha (Type I Error)": actual_alpha,
"검정력 (1 - Type II Error)": power,
}
result = neyman_pearson_binomial(n_trials=2, theta0=0.5, theta1=0.75, target_alpha=0.25)
print("우도비:")
for x, lr in result["우도비 테이블"].items():
print(f" f({x}|theta=3/4) / f({x}|theta=1/2) = {lr:.4f}")
print(f"기각 영역: {result['기각 영역']}")
print(f"실제 alpha: {result['실제 alpha (Type I Error)']:.4f}")
print(f"검정력: {result['검정력 (1 - Type II Error)']:.4f}")10.3 R
library(stats)
# 검정력 함수 계산 — 정규분포 단측 검정
power_normal_one_sided <- function(theta, theta0, sigma, n, alpha = 0.05) {
z_alpha <- qnorm(1 - alpha)
c <- theta0 + sigma * z_alpha / sqrt(n)
pnorm(c, mean = theta, sd = sigma / sqrt(n), lower.tail = FALSE)
}
# 검정력 함수 계산 — 정규분포 양측 검정
power_normal_two_sided <- function(theta, theta0, sigma, n, alpha = 0.05) {
z_half <- qnorm(1 - alpha / 2)
c_upper <- theta0 + sigma * z_half / sqrt(n)
c_lower <- theta0 - sigma * z_half / sqrt(n)
pnorm(c_lower, mean = theta, sd = sigma / sqrt(n)) +
pnorm(c_upper, mean = theta, sd = sigma / sqrt(n), lower.tail = FALSE)
}
# 이항 검정력 함수 (검정 1: X=5, 검정 2: X>=3)
theta_vals <- seq(0, 1, by = 0.01)
beta1 <- theta_vals^5
beta2 <- pbinom(2, 5, theta_vals, lower.tail = FALSE)
cat("이항 검정력 비교 (theta = 0.7):\n")
cat(sprintf(" beta1(0.7) = %.4f\n", 0.7^5))
cat(sprintf(" beta2(0.7) = %.4f\n", pbinom(2, 5, 0.7, lower.tail = FALSE)))
# 표본 크기 결정 (power.t.test 활용)
cat("\n표본 크기 결정 (alpha=0.1, power=0.8, delta=sigma):\n")
result <- power.t.test(
delta = 1, # theta1 - theta0 = sigma
sd = 1,
sig.level = 0.1,
power = 0.8,
alternative = "one.sided",
type = "one.sample"
)
print(result)
# NP 보조정리: X~Binomial(2, theta)
cat("\nNP 보조정리 우도비 (n=2, theta0=1/2, theta1=3/4):\n")
x_vals <- 0:2
lr <- dbinom(x_vals, 2, 3/4) / dbinom(x_vals, 2, 1/2)
for (i in seq_along(x_vals)) {
cat(sprintf(" f(%d|3/4)/f(%d|1/2) = %.4f\n", x_vals[i], x_vals[i], lr[i]))
}
cat(sprintf(" 기각 영역 {2}: alpha=%.4f, power=%.4f\n",
dbinom(2, 2, 1/2), dbinom(2, 2, 3/4)))11 핵심 정리
검정력 함수 \(\beta(\theta) = P_\theta(X \in R)\) 은 가설검정의 핵심 평가 도구다.
\[\beta(\theta) = \begin{cases} \text{Type I Error 확률} & \theta \in \Theta_0 \\ 1 - \text{Type II Error 확률} & \theta \in \Theta_0^c \end{cases}\]
좋은 검정의 조건은 위계적으로 다음과 같다.
- Level \(\alpha\) 조건: \(\sup_{\theta \in \Theta_0} \beta(\theta) \leq \alpha\) (Type I Error 제어)
- 불편 조건: \(\beta(\theta') \geq \beta(\theta'')\) for \(\theta' \in \Theta_0^c\), \(\theta'' \in \Theta_0\)
- UMP 조건: 모든 \(\theta \in \Theta_0^c\) 에서 검정력 최대화
단순 가설에서는 NP 보조정리(우도비 기반)로 UMP를 구성한다. 단측 복합 가설에서는 MLR + Karlin-Rubin 정리가 보장한다. 양측 복합 가설에서는 UMP가 존재하지 않으며, UMPU(불편 UMP)로 대체한다.
12 관련 주제
- 가설검정 개요 — 가설검정의 기본 구조
- 우도비 검정 — 검정 도출 방법
- 합집합-교집합 검정 — 복합 귀무가설의 크기 보정
- 베이즈 검정 — 손실함수 기반 최적 검정
(Casella & Berger, 2002, Ch.8)