검정 평가 방법 — 최강력 검정과 균일 최강력 검정

Most Powerful Tests: Neyman-Pearson 보조정리, MLR, Karlin-Rubin 정리의 완전한 이해

최강력 검정(UMP)의 구성과 존재 조건을 체계적으로 다룬다. Neyman-Pearson 보조정리의 완전한 증명과 단계별 적용법, 충분통계량 활용, 단조 우도비(MLR)와 Karlin-Rubin 정리, UMP 비존재 조건, 균일 최강력 불편(UMPU) 검정까지 수식과 직관으로 상세히 설명한다.

Statistics
저자

Kwangmin Kim

공개

2026년 04월 09일

1 개요

이전 포스트 (159)에서 검정력 함수 \(\beta(\theta)\), Size/Level, 불편 검정, UMP의 정의를 소개했다. 이 포스트에서는 최강력 검정을 실제로 어떻게 구성하는가에 집중한다.

핵심 질문: “level \(\alpha\) 를 유지하면서 검정력을 최대화하는 검정은 어떻게 찾는가?”

이 질문에 답하는 도구가 Neyman-Pearson (NP) 보조정리다. 단순 가설에서 출발하여, 단측 복합 가설로 확장하는 Karlin-Rubin 정리까지 이어지는 논리 사슬을 따라간다.

전략 개요

단순 vs 단순 (H0: θ=θ0 vs H1: θ=θ1)
    → Neyman-Pearson 보조정리: 우도비 기각이 UMP
        ↓ (충분통계량으로 단순화)
    → Corollary 8.3.13: T(X) 기반 검정으로 환원 가능
        ↓ (복합 가설로 확장)
단측 복합 (H0: θ≤θ0 vs H1: θ>θ0)
    → MLR 조건 확인
    → Karlin-Rubin 정리: T>t₀가 UMP
        ↓ (양측으로?)
양측 복합 (H0: θ=θ0 vs H1: θ≠θ0)
    → UMP 비존재 → UMPU로 대체

2 Neyman-Pearson 보조정리 — 완전한 이해

2.1 문제 설정: 최적 기각 영역이란

\(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\) 에서 level \(\alpha\) 를 만족하면서 검정력을 최대화하려 한다. 기각 영역 \(R\) 의 크기는 고정(\(P_{\theta_0}(X \in R) = \alpha\)), 검정력 \(P_{\theta_1}(X \in R)\) 은 최대화.

기하학적 직관: 확률 분포 \(f(\mathbf{x}|\theta_0)\)\(f(\mathbf{x}|\theta_1)\) 이 겹치는 영역이 있다. Type I Error 예산 \(\alpha\)\(H_0\) 분포에서 \(R\) 에 할당된 확률 질량이다. 이 예산을 가장 효율적으로 써서 \(H_1\) 의 확률 질량을 최대한 포함하려면 어떻게 해야 하는가?

: \(H_1\) 의 pdf가 \(H_0\) 의 pdf에 비해 상대적으로 높은 곳, 즉 우도비 \(f(\mathbf{x}|\theta_1)/f(\mathbf{x}|\theta_0)\) 가 큰 곳을 기각 영역으로 선택해야 한다.

Theorem 8.3.12 (Neyman-Pearson Lemma)

\(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\) 에서, 어떤 \(k \geq 0\) 에 대해

\[\mathbf{x} \in R \iff f(\mathbf{x}|\theta_1) > k f(\mathbf{x}|\theta_0) \tag{8.3.1}\]

이고 \(\alpha = P_{\theta_0}(X \in R)\) 인 검정은:

(a) 충분성: UMP level \(\alpha\) 검정이다.

(b) 필요성: \(k > 0\) 이면 모든 UMP level \(\alpha\) 검정은 (8.3.1)을 거의 모든 곳에서 만족하며, size \(\alpha\) 검정이다.

2.2 증명: 단계별 해설 (a의 증명)

임의의 다른 level \(\alpha\) 검정 \(\phi'\) (test function \(\phi'(\mathbf{x}) \in [0,1]\))와 NP 검정 \(\phi\) (\(\phi = 1_{R}\))를 비교한다.

Step 1: 핵심 부등식 수립

(8.3.1)에 의해, \(\phi(\mathbf{x}) = 1\) 이면 \(f(\mathbf{x}|\theta_1) \geq k f(\mathbf{x}|\theta_0)\) 이고 \(\phi(\mathbf{x}) = 0\) 이면 \(f(\mathbf{x}|\theta_1) \leq k f(\mathbf{x}|\theta_0)\) 이다. 따라서:

\[(\phi(\mathbf{x}) - \phi'(\mathbf{x}))(f(\mathbf{x}|\theta_1) - k f(\mathbf{x}|\theta_0)) \geq 0 \quad \forall \mathbf{x}\]

이 부등식이 핵심이다. \(\phi = 1\) 이고 \(\phi' \leq 1\) 이면 첫 인수 \(\geq 0\), 두 번째 인수 \(\geq 0\). \(\phi = 0\) 이고 \(\phi' \geq 0\) 이면 첫 인수 \(\leq 0\), 두 번째 인수 \(\leq 0\). 어떤 경우든 곱은 \(\geq 0\).

Step 2: 적분

\[0 \leq \int [\phi - \phi'][f(\mathbf{x}|\theta_1) - k f(\mathbf{x}|\theta_0)] d\mathbf{x} = (\beta(\theta_1) - \beta'(\theta_1)) - k(\beta(\theta_0) - \beta'(\theta_0)) \tag{8.3.3}\]

Step 3: 결론

\(\phi\) 는 size \(\alpha\) 검정이므로 \(\beta(\theta_0) = \alpha\). \(\phi'\) 는 level \(\alpha\) 검정이므로 \(\beta'(\theta_0) \leq \alpha\). 따라서 \(\beta(\theta_0) - \beta'(\theta_0) \geq 0\).

\(k \geq 0\) 이고 \(\beta(\theta_0) - \beta'(\theta_0) \geq 0\) 이므로 (8.3.3)에서:

\[\beta(\theta_1) - \beta'(\theta_1) \geq k(\beta(\theta_0) - \beta'(\theta_0)) \geq 0\]

\[\therefore \beta(\theta_1) \geq \beta'(\theta_1)\]

\(\phi'\) 는 임의의 level \(\alpha\) 검정이었으므로 \(\phi\) (NP 검정)가 UMP이다. \(\square\)

왜 이것이 “경계에서 예산을 최대한 효율적으로 쓴다”는 직관과 일치하는가: (8.3.3)의 두 번째 항 \(k(\beta(\theta_0) - \beta'(\theta_0))\)\(\phi\)\(\phi'\) 보다 더 많이 쓴 Type I Error 예산이다. 첫 번째 항 \(\beta(\theta_1) - \beta'(\theta_1)\)\(\phi\) 가 얻은 추가 검정력이다. NP 검정은 이 교환 비율을 최적화한다.


3 단계별 적용: NP 검정 구성법

NP 보조정리를 실제 문제에 적용하는 절차:

  1. 우도비 \(\Lambda(\mathbf{x}) = f(\mathbf{x}|\theta_1) / f(\mathbf{x}|\theta_0)\) 를 계산한다
  2. \(\Lambda(\mathbf{x}) > k\) 를 충분통계량 \(T(\mathbf{x})\) 의 부등식으로 변환한다
  3. \(P_{\theta_0}(T(\mathbf{x}) \in R) = \alpha\) 를 만족하는 임계값 \(c\) 를 결정한다

3.1 예시 1: 이항 분포 UMP (Example 8.3.14)

\(X \sim \text{Binomial}(2, \theta)\), \(H_0: \theta = 1/2\) vs \(H_1: \theta = 3/4\)

Step 1: 우도비 계산

\[\Lambda(x) = \frac{f(x|3/4)}{f(x|1/2)} = \frac{\binom{2}{x}(3/4)^x(1/4)^{2-x}}{\binom{2}{x}(1/2)^x(1/2)^{2-x}} = \left(\frac{3/4}{1/2}\right)^x \left(\frac{1/4}{1/2}\right)^{2-x} = \frac{3^x}{4^2/(4^x)} = \left(\frac{3}{2}\right)^x \cdot \left(\frac{1}{2}\right)^{2-x}\]

계산하면:

\[\Lambda(0) = (1/2)^2 = 1/4, \quad \Lambda(1) = (3/2)(1/2) = 3/4, \quad \Lambda(2) = (3/2)^2 = 9/4\]

Step 2: \(\Lambda(x) > k\) 조건 → \(x\) 의 조건으로

\(\Lambda(x)\)\(x\) 의 순증가 함수. 따라서 \(\Lambda(x) > k\) 는 “\(x > c\) (어떤 임계값)”로 단순화된다.

Step 3: \(\alpha\) 별 UMP

\(k\) 구간 기각 영역 \(\alpha = P_{1/2}(\text{기각})\) 검정력 \(\beta(3/4)\)
\((9/4, \infty)\) \(\emptyset\) 0 0
\((3/4, 9/4)\) \(\{2\}\) \(1/4\) \(9/16\)
\((1/4, 3/4)\) \(\{1, 2\}\) \(3/4\) \(15/16\)
\((0, 1/4)\) \(\{0, 1, 2\}\) \(1\) \(1\)

이산 분포에서는 연속 \(\alpha\) 값을 달성할 수 없다. 예를 들어 \(\alpha = 0.10\) 에 대한 NP 검정을 정확하게 구성하려면 랜덤화 검정이 필요하다.

랜덤화 검정 (Randomized Test)

이산 분포에서 원하는 \(\alpha\) 를 정확히 맞추기 위해, 경계 점 \(x^*\) 에 대해 확률 \(\gamma\) 로 기각하는 검정을 정의한다.

\[\phi(x) = \begin{cases} 1 & \Lambda(x) > k \\ \gamma & \Lambda(x) = k \\ 0 & \Lambda(x) < k \end{cases}\]

여기서 \(\gamma \in [0,1]\)\(E_{\theta_0}[\phi(X)] = \alpha\) 를 만족하도록 결정한다. 이론적으로 완전한 UMP가 존재하지만, 실무에서는 재현 불가능한 랜덤화 때문에 잘 사용되지 않는다.

3.2 예시 2: 정규분포 UMP — 단순 가설 (Example 8.3.15)

\(X_1, \ldots, X_n \sim N(\theta, \sigma^2)\), \(\sigma^2\) 알려짐, \(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\) (\(\theta_1 > \theta_0\))

Step 1: 우도비

\[\Lambda(\mathbf{x}) = \frac{\prod f(x_i|\theta_1)}{\prod f(x_i|\theta_0)} = \exp\left[\frac{n(\theta_1 - \theta_0)}{\sigma^2}\bar{x} - \frac{n(\theta_1^2 - \theta_0^2)}{2\sigma^2}\right]\]

Step 2: \(\Lambda(\mathbf{x}) > k\)\(\bar{x}\) 조건으로

\(\theta_1 > \theta_0\) 이므로 지수 인수 \(n(\theta_1 - \theta_0)/\sigma^2 > 0\). 따라서:

\[\Lambda(\mathbf{x}) > k \iff \bar{x} > c = \frac{\sigma^2 \log k}{n(\theta_1 - \theta_0)} + \frac{\theta_0 + \theta_1}{2}\]

오른쪽의 \(c\)\(k\) 에 따라 \((-\infty, \infty)\) 를 자유롭게 이동한다.

Step 3: 임계값 결정

\(H_0\) 에서 \(\bar{X} \sim N(\theta_0, \sigma^2/n)\) 이므로, size \(\alpha\) 조건:

\[P_{\theta_0}(\bar{X} > c) = \alpha \implies c = \theta_0 + \frac{\sigma z_\alpha}{\sqrt{n}}\]

중요한 관찰: \(c\) 의 값이 \(\theta_1\) 에 의존하지 않는다! 즉, 이 검정은 \(\theta_1 > \theta_0\)모든 \(\theta_1\) 에 대해 동시에 UMP가 된다. 이것이 단순 vs 단순에서 출발하여 단측 복합 가설로 자연스럽게 넘어가는 이유다.


4 충분통계량과 UMP

Corollary 8.3.13 (충분통계량 기반 UMP)

\(T(\mathbf{X})\)\(\theta\) 의 충분통계량이고, \(g(t|\theta_i)\)\(T\) 의 pdf/pmf이면, \(T\) 에 기반한 검정으로서

\[t \in S \iff g(t|\theta_1) > k g(t|\theta_0)\]

이고 \(\alpha = P_{\theta_0}(T \in S)\) 를 만족하는 검정은 UMP level \(\alpha\) 검정이다.

왜 충분통계량으로 충분한가: 인수분해 정리에 의해 \(f(\mathbf{x}|\theta_i) = g(T(\mathbf{x})|\theta_i) h(\mathbf{x})\). \(h(\mathbf{x})\)\(\theta\) 에 무관하므로 우도비에서 상쇄된다:

\[\frac{f(\mathbf{x}|\theta_1)}{f(\mathbf{x}|\theta_0)} = \frac{g(T(\mathbf{x})|\theta_1)}{g(T(\mathbf{x})|\theta_0)}\]

원본 데이터의 우도비 = 충분통계량의 우도비. 따라서 NP 기각 조건도 \(T(\mathbf{x})\) 만으로 결정된다.

실용적 의미: 고차원 데이터 \(\mathbf{x} = (x_1, \ldots, x_n)\) 의 복잡한 우도비 계산 대신, 충분통계량 \(T\) (보통 스칼라)의 우도비만 계산하면 된다.


5 단조 우도비 (MLR) — 심층 분석

5.1 정의와 직관

Definition 8.3.16 (MLR)

분포족 \(\{g(t|\theta)\}\)단조 우도비(Monotone Likelihood Ratio, MLR) 를 가지면, 모든 \(\theta_2 > \theta_1\) 에 대해 \(g(t|\theta_2)/g(t|\theta_1)\)\(t\) 의 단조함수이다.

직관: MLR은 “\(\theta\) 가 커질수록 \(T\) 가 커지는 경향이 강해진다”는 확률론적 정렬(stochastic ordering) 개념이다. 정확히는, \(\theta_2 > \theta_1\) 이면 \(g(t|\theta_2)/g(t|\theta_1)\)\(t\) 에서 비감소이므로, 큰 \(T\) 값이 큰 \(\theta\) 를 더 지지한다.

5.2 지수족에서 MLR 확인

정규 지수족 \(g(t|\theta) = h(t) c(\theta) e^{w(\theta)t}\) 에서:

\[\frac{g(t|\theta_2)}{g(t|\theta_1)} = \frac{c(\theta_2)}{c(\theta_1)} e^{(w(\theta_2) - w(\theta_1))t}\]

\(w(\theta)\)\(\theta\) 의 비감소 함수이면 \(\theta_2 > \theta_1 \implies w(\theta_2) \geq w(\theta_1)\), 따라서 우도비가 \(t\) 의 비감소 함수 → MLR 성립.

MLR을 갖는 주요 분포족:

분포 충분통계량 \(T\) \(w(\theta)\) MLR 방향
\(N(\theta, \sigma^2)\) (\(\sigma^2\) 알려짐) \(\bar{X}\) \(\theta/\sigma^2\) 비감소 → \(T \uparrow\) 로 MLR
\(\text{Poisson}(\lambda)\) \(\sum X_i\) \(\log\lambda\) 비감소
\(\text{Binomial}(n, p)\) \(\sum X_i\) \(\log[p/(1-p)]\) 비감소
\(\text{Exponential}(\lambda)\) \(\sum X_i\) \(-\lambda\) 비감소 (\(T\) 에서)
\(\text{Gamma}(\alpha, \beta)\) (\(\alpha\) 알려짐) \(\sum X_i\) \(-1/\beta\) 비감소

5.3 포아송 분포 MLR 확인

\(X_1, \ldots, X_n \sim \text{Poisson}(\lambda)\), 충분통계량 \(T = \sum X_i \sim \text{Poisson}(n\lambda)\)

\[\frac{g(t|\lambda_2)}{g(t|\lambda_1)} = \frac{e^{-n\lambda_2}(n\lambda_2)^t / t!}{e^{-n\lambda_1}(n\lambda_1)^t / t!} = e^{n(\lambda_1 - \lambda_2)} \left(\frac{\lambda_2}{\lambda_1}\right)^t\]

\(\lambda_2 > \lambda_1\) 이면 \((\lambda_2/\lambda_1)^t\)\(t\) 의 순증가 함수 → MLR 성립.

직관: 포아송 모수 \(\lambda\) 가 클수록 관측 합이 클 가능성이 높다. \(T\) 가 크면 \(\lambda\) 가 크다는 증거.


6 Karlin-Rubin 정리 — 단측 복합 가설의 UMP

Theorem 8.3.17 (Karlin-Rubin)

\(T\)\(\theta\) 의 충분통계량이고, \(\{g(t|\theta)\}\) 가 MLR을 가지면:

\(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\) 에서, 어떤 \(t_0\) 에 대해

\[\text{기각}: T > t_0\]

인 검정은 UMP level \(\alpha = P_{\theta_0}(T > t_0)\) 검정이다.

6.1 증명 전략

임의의 \(\theta' > \theta_0\) 를 고정한다. 복합 귀무 \(H_0: \theta \leq \theta_0\) 대신 단순 귀무 \(H_0': \theta = \theta_0\) 를 고려한다.

  1. MLR로 인해 \(\beta(\theta) = P_\theta(T > t_0)\)\(\theta\) 의 비감소 함수 → \(\sup_{\theta \leq \theta_0} \beta(\theta) = \beta(\theta_0) = \alpha\) → level \(\alpha\) 검정

  2. MLR로 인해 기각 영역 \(\{T > t_0\}\) 는 다음과 동치:

\[T > t_0 \iff \frac{g(t|\theta')}{g(t|\theta_0)} > k'\]

이는 NP 보조정리의 기각 조건 (8.3.1)을 만족한다.

  1. Corollary 8.3.13에 의해 \(T > t_0\)\(H_0': \theta = \theta_0\) vs \(H_1': \theta = \theta'\) 의 UMP level \(\alpha\) 검정이다.

  2. \(H_0\) 의 level \(\alpha\) 검정은 자동으로 \(H_0'\) 의 level \(\alpha\) 검정이다 (\(\Theta_0' \subset \Theta_0\)). 따라서 \(T > t_0\)\(H_0'\) 에서 UMP이면 \(H_0\) 에서도 다른 level \(\alpha\) 검정보다 검정력이 크다.

  3. \(\theta'\) 가 임의적이었으므로 \(T > t_0\) 가 모든 \(\theta' > \theta_0\) 에 대해 동시에 UMP. \(\square\)

핵심 통찰: MLR이 “NP 보조정리의 기각 조건이 \(T > t_0\) 와 동치”라는 것을 보장한다. 이것이 \(\theta_1\) 에 무관한 단일 검정 형태가 가능한 이유다.

6.2 예시 1: 정규분포 단측 UMP

\(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\), \(X_i \sim N(\theta, \sigma^2)\)

\(T = \bar{X}\), 분포족 MLR 가짐. UMP: \(\bar{X} > \theta_0 + \sigma z_\alpha/\sqrt{n}\)

검정력 함수 (단조증가하는 S자 형태):

\[\beta(\theta) = P\left(Z > z_\alpha + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right) = 1 - \Phi\left(z_\alpha + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right)\]

  • \(\theta = \theta_0\): \(\beta(\theta_0) = 1 - \Phi(z_\alpha) = \alpha\) (크기)
  • \(\theta = \theta_0 + \sigma/\sqrt{n}\): \(\beta = 1 - \Phi(0) = 0.5\) (효과 크기 1 표준오차에서 검정력 50%)
  • \(n \to \infty\): \(\beta(\theta) \to 1\) for any \(\theta > \theta_0\) (일치성)

6.3 예시 2: 포아송 단측 UMP

\(X_1, \ldots, X_n \sim \text{Poisson}(\lambda)\), \(H_0: \lambda \leq \lambda_0\) vs \(H_1: \lambda > \lambda_0\)

\(T = \sum X_i \sim \text{Poisson}(n\lambda)\), MLR 가짐. 카를린-루빈 정리에 의해:

\[\text{UMP}: T = \sum_{i=1}^n X_i > c\]

임계값 \(c\): \(P_{\lambda_0}(\sum X_i > c) = \alpha\) 에서 포아송 분포표/정규 근사로 결정.

검정력:

\[\beta(\lambda) = P_\lambda\left(\sum X_i > c\right) = 1 - F_{\text{Pois}(n\lambda)}(c)\]

\(\lambda > \lambda_0\) 에서 \(\beta(\lambda) > \alpha\), \(\lambda \to \infty\) 에서 \(\beta(\lambda) \to 1\).

6.4 예시 3: 이항 분포 단측 UMP

\(X_1, \ldots, X_n \sim \text{Bernoulli}(p)\), \(H_0: p \leq p_0\) vs \(H_1: p > p_0\)

\(T = \sum X_i \sim \text{Binomial}(n, p)\), MLR 가짐:

\[\frac{g(t|p_2)}{g(t|p_1)} = \left(\frac{p_2(1-p_1)}{p_1(1-p_2)}\right)^t \cdot \text{const}\]

\(p_2 > p_1\) 이면 \([p_2(1-p_1)]/[p_1(1-p_2)] > 1\) 이므로 \(t\) 의 순증가 함수.

UMP: \(T = \sum X_i > c\), 임계값은 \(P_{p_0}(T > c) = \alpha\) 에서 결정.


7 좌측 단측 UMP

Karlin-Rubin 정리는 \(H_0: \theta \geq \theta_0\) vs \(H_1: \theta < \theta_0\) 에도 적용된다.

결론: \(T < t_0\) 이면 기각. \(\alpha = P_{\theta_0}(T < t_0)\).

예시: \(H_0: \theta \geq \theta_0\) vs \(H_1: \theta < \theta_0\) (\(N(\theta, \sigma^2)\))

UMP: \(\bar{X} < \theta_0 - \sigma z_\alpha/\sqrt{n}\)

검정력 (단조감소):

\[\beta(\theta) = P\left(Z < -z_\alpha + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right) = \Phi\left(-z_\alpha + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right)\]


8 UMP의 비존재 — 양측 가설

\(H_0: \theta = \theta_0\) vs \(H_1: \theta \neq \theta_0\) (\(N(\theta, \sigma^2)\), \(\sigma^2\) 알려짐)

비존재 증명 (Example 8.3.19):

level \(\alpha\) 검정 중에서 \(\theta_1 < \theta_0\) 에서 최강력인 검정을 구성하면 (NP 보조정리 이용):

\[\text{Test 1 (좌측)}: \bar{X} < \theta_0 - \sigma z_\alpha/\sqrt{n}\]

그런데 \(\theta_2 > \theta_0\) 에서 Test 1의 검정력 \(\beta_1(\theta_2)\) 는 0에 수렴한다. 반면 우측 단측 검정:

\[\text{Test 2 (우측)}: \bar{X} > \theta_0 + \sigma z_\alpha/\sqrt{n}\]

\(\theta_2\) 에서 더 높은 검정력을 갖는다. 즉, Test 1은 \(\theta_1 < \theta_0\) 에서 최강이지만 \(\theta_2 > \theta_0\) 에서 최강이 아니다.

NP 보조정리 필요성 조건에 의해, UMP가 존재한다면 Test 1과 동일해야 하지만 Test 1은 \(\theta_2\) 에서 UMP가 아니므로 UMP는 존재하지 않는다. \(\square\)

근본 이유: 양측 대립에서는 \(\theta < \theta_0\) 를 잘 잡는 검정(좌측 기각)과 \(\theta > \theta_0\) 를 잘 잡는 검정(우측 기각)이 충돌한다. 한 검정이 두 방향을 동시에 최강으로 잡을 수 없다.


9 UMPU — 불편 클래스로의 제한

UMP가 없으면 클래스를 불편 검정으로 제한하여 UMPU를 찾는다.

균일 최강력 불편(UMPU) 검정

불편 level \(\alpha\) 검정 클래스 내에서 모든 \(\theta \in \Theta_0^c\) 에 대해 검정력이 최대인 검정.

9.1 예시: 정규분포 양측 UMPU (Example 8.3.20)

\(H_0: \theta = \theta_0\) vs \(H_1: \theta \neq \theta_0\), \(X_i \sim N(\theta, \sigma^2)\)

양측 검정:

\[\text{Test 3 (UMPU)}: |\bar{X} - \theta_0| > \sigma z_{\alpha/2}/\sqrt{n}\]

검정력 함수:

\[\beta_3(\theta) = 1 - \Phi\left(z_{\alpha/2} + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right) + \Phi\left(-z_{\alpha/2} + \frac{\theta_0 - \theta}{\sigma/\sqrt{n}}\right)\]

비교: Test 1 (좌측), Test 2 (우측), Test 3 (양측, UMPU)

\(\theta\) 위치 Test 1 검정력 Test 2 검정력 Test 3 검정력
\(\theta \ll \theta_0\) 높음 낮음 (~0) 중간 (높음)
\(\theta = \theta_0\) \(\alpha\) \(\alpha\) \(\alpha\)
\(\theta \gg \theta_0\) 낮음 (~0) 높음 중간 (높음)

결론: Test 3가 대립이 양방향일 때 전반적으로 가장 균형 잡혀 있다. \(\theta \gg \theta_0\) 에서 \(\beta_3 \approx 1\) 인 반면 \(\beta_1 \approx 0\).


10 UMP 존재 조건 체계표

가설 구조 분포 조건 UMP 존재? 검정 형태
\(H_0: \theta = \theta_0\) vs \(H_1: \theta = \theta_1\) 임의 항상 존재 (NP 보조정리) 우도비 기반 기각
\(H_0: \theta \leq \theta_0\) vs \(H_1: \theta > \theta_0\) MLR 있음 존재 (Karlin-Rubin) \(T > t_0\)
\(H_0: \theta \geq \theta_0\) vs \(H_1: \theta < \theta_0\) MLR 있음 존재 (Karlin-Rubin) \(T < t_0\)
\(H_0: \theta = \theta_0\) vs \(H_1: \theta \neq \theta_0\) 임의 비존재 UMPU 사용
\(H_0: \theta \leq \theta_1\) or \(\theta \geq \theta_2\) vs \(H_1\) 임의 드물게 존재 문제별 판단

11 코드 구현

11.1 Python: NP 검정 구성 및 검정력 비교

import numpy as np
from scipy import stats


def np_test_binomial(
    n_trials: int,
    theta0: float,
    theta1: float,
    alpha_target: float = 0.05,
) -> dict:
    """
    이항 분포에서 Neyman-Pearson UMP 검정 구성
    H0: theta = theta0 vs H1: theta = theta1 (theta1 > theta0)
    """
    x_vals = np.arange(n_trials + 1)
    pmf0 = stats.binom.pmf(x_vals, n_trials, theta0)
    pmf1 = stats.binom.pmf(x_vals, n_trials, theta1)
    lr = pmf1 / pmf0

    # 우도비 내림차순으로 기각 영역 결정
    sorted_idx = np.argsort(-lr)
    cum_alpha = 0.0
    rejection_region = []

    for idx in sorted_idx:
        if cum_alpha + pmf0[idx] <= alpha_target + 1e-10:
            cum_alpha += pmf0[idx]
            rejection_region.append(int(x_vals[idx]))
        else:
            break

    rejection_region = sorted(rejection_region)
    actual_alpha = sum(pmf0[x] for x in rejection_region)
    power = sum(pmf1[x] for x in rejection_region)

    return {
        "기각 영역": rejection_region,
        "실제 alpha": actual_alpha,
        "검정력 β(θ1)": power,
        "우도비 테이블": {x: round(lr[x], 4) for x in range(n_trials + 1)},
    }


def compare_tests_normal(
    theta_range: np.ndarray,
    theta0: float = 0.0,
    sigma: float = 1.0,
    n: int = 25,
    alpha: float = 0.05,
) -> dict:
    """
    세 가지 검정의 검정력 함수 비교
    Test 1: 좌측 단측 (UMP for theta < theta0)
    Test 2: 우측 단측 (UMP for theta > theta0)
    Test 3: 양측 (UMPU)
    """
    se = sigma / np.sqrt(n)
    z_alpha = stats.norm.ppf(1 - alpha)
    z_half = stats.norm.ppf(1 - alpha / 2)

    # Test 1: 좌측 단측
    c1 = theta0 - sigma * z_alpha / np.sqrt(n)
    beta1 = stats.norm.cdf(c1, loc=theta_range, scale=se)

    # Test 2: 우측 단측
    c2 = theta0 + sigma * z_alpha / np.sqrt(n)
    beta2 = stats.norm.sf(c2, loc=theta_range, scale=se)

    # Test 3: 양측 UMPU
    c_upper = theta0 + sigma * z_half / np.sqrt(n)
    c_lower = theta0 - sigma * z_half / np.sqrt(n)
    beta3 = (stats.norm.cdf(c_lower, loc=theta_range, scale=se) +
             stats.norm.sf(c_upper, loc=theta_range, scale=se))

    return {
        "theta": theta_range,
        "beta1 (좌측)": beta1,
        "beta2 (우측)": beta2,
        "beta3 (양측, UMPU)": beta3,
    }


# 이항 NP 검정
print("=== 이항 NP 검정 (n=10, θ0=0.5, θ1=0.7) ===")
result = np_test_binomial(10, 0.5, 0.7, alpha_target=0.05)
for k, v in result.items():
    if isinstance(v, dict):
        print(f"  {k}: {v}")
    else:
        print(f"  {k}: {v:.4f}" if isinstance(v, float) else f"  {k}: {v}")

print()

# 정규분포 세 검정 비교
print("=== 정규분포 세 검정 검정력 비교 (n=25, theta0=0, sigma=1, alpha=0.05) ===")
thetas = np.array([-1.0, -0.5, 0.0, 0.5, 1.0])
results = compare_tests_normal(thetas)
print(f"{'theta':>8} {'beta1':>10} {'beta2':>10} {'beta3':>10}")
for i, theta in enumerate(thetas):
    print(f"{theta:>8.1f} {results['beta1 (좌측)'][i]:>10.4f} "
          f"{results['beta2 (우측)'][i]:>10.4f} "
          f"{results['beta3 (양측, UMPU)'][i]:>10.4f}")

11.2 Python: Karlin-Rubin — 포아송 UMP 검정력 곡선

import numpy as np
from scipy import stats


def poisson_ump_power(
    lambda_range: np.ndarray,
    lambda0: float,
    n: int,
    alpha: float = 0.05,
) -> dict:
    """
    H0: lambda <= lambda0 vs H1: lambda > lambda0 (포아송)
    Karlin-Rubin: T = sum(Xi) > c 가 UMP
    임계값 c 결정: P_{lambda0}(T > c) = alpha
    """
    # H0 경계에서의 T 분포: Poisson(n * lambda0)
    mu0 = n * lambda0

    # 임계값 c: P(Poisson(mu0) > c) <= alpha 를 만족하는 최소 c
    c = stats.poisson.ppf(1 - alpha, mu0)

    actual_alpha = stats.poisson.sf(c, mu0)  # P(T > c | lambda0)

    # 각 lambda에서의 검정력
    powers = []
    for lam in lambda_range:
        mu = n * lam
        power = stats.poisson.sf(c, mu)
        powers.append(power)

    return {
        "임계값 c": int(c),
        "실제 alpha": actual_alpha,
        "lambda_range": lambda_range,
        "검정력": np.array(powers),
    }


# 포아송 UMP 검정력
n = 10
lambda0 = 5.0
lambda_vals = np.linspace(0.5, 10.0, 100)

result = poisson_ump_power(lambda_vals, lambda0, n, alpha=0.05)
print(f"임계값 c: {result['임계값 c']}")
print(f"실제 alpha: {result['실제 alpha']:.4f}")
print()

# 특정 lambda에서 검정력 출력
for lam in [3.0, 5.0, 6.0, 7.0, 8.0]:
    idx = np.argmin(np.abs(lambda_vals - lam))
    print(f"  lambda={lam:.1f}: beta={result['검정력'][idx]:.4f}")

11.3 Python: MLR 검증

import numpy as np
from scipy import stats


def verify_mlr(
    distribution: str,
    theta1: float,
    theta2: float,
    t_range: np.ndarray,
    n: int = 1,
) -> dict:
    """
    분포족의 MLR 여부를 우도비의 단조성으로 검증
    theta2 > theta1 에서 g(t|theta2)/g(t|theta1) 이 t의 비감소함수인지 확인
    """
    assert theta2 > theta1

    if distribution == "normal":
        # T = Xbar ~ N(theta, sigma^2/n) (sigma=1 가정)
        pmf1 = stats.norm.pdf(t_range, theta1, 1 / np.sqrt(n))
        pmf2 = stats.norm.pdf(t_range, theta2, 1 / np.sqrt(n))
    elif distribution == "poisson":
        # T = sum(Xi) ~ Poisson(n*theta)
        t_int = t_range.astype(int)
        pmf1 = stats.poisson.pmf(t_int, n * theta1)
        pmf2 = stats.poisson.pmf(t_int, n * theta2)
    elif distribution == "binomial":
        # T = sum(Xi) ~ Binomial(n, theta)
        t_int = t_range.astype(int)
        pmf1 = stats.binom.pmf(t_int, n, theta1)
        pmf2 = stats.binom.pmf(t_int, n, theta2)
    else:
        raise ValueError("Unknown distribution")

    lr = np.where(pmf1 > 0, pmf2 / pmf1, np.inf)
    diffs = np.diff(lr)
    is_monotone = np.all(diffs >= -1e-10)

    return {
        "분포": distribution,
        "theta1": theta1,
        "theta2": theta2,
        "MLR 성립": is_monotone,
        "우도비 (처음 5개)": lr[:5].round(4),
    }


print("=== MLR 검증 ===")
for dist, t, n in [("normal", np.linspace(-3, 3, 50), 1),
                    ("poisson", np.arange(0, 30), 1),
                    ("binomial", np.arange(0, 21), 20)]:
    result = verify_mlr(dist, theta1=2.0, theta2=3.0, t_range=t, n=n)
    print(f"  {result['분포']}: MLR 성립 = {result['MLR 성립']}")

11.4 R

library(stats)

# NP 검정: 이항 분포
np_binomial <- function(n_trials, theta0, theta1, alpha_target = 0.05) {
  x_vals <- 0:n_trials
  pmf0 <- dbinom(x_vals, n_trials, theta0)
  pmf1 <- dbinom(x_vals, n_trials, theta1)
  lr <- pmf1 / pmf0

  # 우도비 내림차순 정렬
  ord <- order(-lr)
  cum_alpha <- 0
  rejection <- c()

  for (idx in ord) {
    if (cum_alpha + pmf0[idx] <= alpha_target + 1e-10) {
      cum_alpha <- cum_alpha + pmf0[idx]
      rejection <- c(rejection, x_vals[idx])
    }
  }

  rejection <- sort(rejection)
  actual_alpha <- sum(pmf0[rejection + 1])
  power <- sum(pmf1[rejection + 1])

  cat(sprintf("기각 영역: {%s}\n", paste(rejection, collapse=", ")))
  cat(sprintf("실제 alpha: %.4f\n", actual_alpha))
  cat(sprintf("검정력 beta(theta1=%.2f): %.4f\n", theta1, power))
}

# 정규분포 세 검정 검정력 비교
compare_tests <- function(theta_vals, theta0 = 0, sigma = 1, n = 25, alpha = 0.05) {
  se <- sigma / sqrt(n)
  z_alpha <- qnorm(1 - alpha)
  z_half <- qnorm(1 - alpha / 2)

  beta1 <- pnorm(theta0 - sigma * z_alpha / sqrt(n), mean = theta_vals, sd = se)
  beta2 <- pnorm(theta0 + sigma * z_alpha / sqrt(n), mean = theta_vals, sd = se,
                 lower.tail = FALSE)
  beta3 <- pnorm(theta0 - sigma * z_half / sqrt(n), mean = theta_vals, sd = se) +
           pnorm(theta0 + sigma * z_half / sqrt(n), mean = theta_vals, sd = se,
                 lower.tail = FALSE)

  data.frame(theta = theta_vals, beta1_left = beta1,
             beta2_right = beta2, beta3_UMPU = beta3)
}

# 포아송 UMP 검정력
poisson_ump <- function(lambda_vals, lambda0, n, alpha = 0.05) {
  mu0 <- n * lambda0
  c <- qpois(1 - alpha, mu0)  # 임계값
  actual_alpha <- ppois(c, mu0, lower.tail = FALSE)
  cat(sprintf("임계값 c = %d, 실제 alpha = %.4f\n", c, actual_alpha))

  powers <- sapply(lambda_vals, function(lam) ppois(c, n * lam, lower.tail = FALSE))
  data.frame(lambda = lambda_vals, power = powers)
}

cat("=== NP 검정 (Binomial, n=10, theta0=0.5, theta1=0.7) ===\n")
np_binomial(10, 0.5, 0.7)

cat("\n=== 검정력 비교 (Normal, theta0=0, sigma=1, n=25) ===\n")
theta_grid <- c(-1, -0.5, 0, 0.5, 1)
print(compare_tests(theta_grid))

cat("\n=== 포아송 UMP (lambda0=5, n=10) ===\n")
result_pois <- poisson_ump(c(3, 5, 6, 7, 8), lambda0 = 5, n = 10)
print(result_pois)

12 핵심 요약

최강력 검정의 존재와 구성은 다음 논리 사슬로 완결된다.

단순 vs 단순 → NP 보조정리: \(f(\mathbf{x}|\theta_1)/f(\mathbf{x}|\theta_0) > k\) 이면 기각.

\[\text{UMP 기각 영역} = \left\{\mathbf{x}: \frac{f(\mathbf{x}|\theta_1)}{f(\mathbf{x}|\theta_0)} > k\right\}\]

단측 복합 → MLR + Karlin-Rubin: 충분통계량 \(T\) 의 임계값 기각.

\[\text{UMP 기각 영역} = \{T > t_0\} \quad (H_1: \theta > \theta_0)\]

양측 복합 → UMP 비존재 → 불편 클래스 제한 → UMPU.

\[\text{UMPU 기각 영역} = \{|T - \theta_0| > c'\}\]

이 계층 구조에서 MLR이 핵심 연결 고리다. MLR은 “NP 조건이 단조 임계값과 동치”라는 것을 보장하여, 단순 가설에서 얻은 최적성을 복합 가설로 확장한다.

13 관련 주제

(Casella & Berger, 2002, Ch.8 §8.3.2)

Subscribe

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