검정 평가 방법 — 손실함수 최적성 (Loss Function Optimality)

0-1 손실, 일반화 손실, 위험함수와 검정력 함수의 관계, 의사결정 이론으로 검정 비교하기

가설검정을 의사결정 이론(Ch.7.3.4)의 틀로 재해석한다. 행동 공간 {a₀, a₁}, 0-1 손실, 일반화 0-1 손실을 정의하고, 위험함수가 검정력 함수의 선형 결합으로 표현됨을 보인다. UMP 검정의 위험함수 예시, 비대칭 손실의 실무 해석, 그리고 검정에서 손실함수 선택이 최적성 기준을 어떻게 바꾸는지 직관적으로 설명한다.

Statistics
저자

Kwangmin Kim

공개

2026년 04월 09일

1 개요

검정 도출 방법최강력 검정에서는 검정을 검정력 함수 \(\beta(\theta)\) 로 평가했다. 이 포스트에서는 같은 문제를 의사결정 이론의 시각으로 바라본다 (Casella & Berger, 2002, Ch.8 §8.3.5).

Ch.7.3.4에서 점추정량을 손실함수로 평가했던 것처럼, 가설검정도 손실함수와 위험함수로 평가할 수 있다. 핵심 발견은 단순하다: 검정의 위험함수는 검정력 함수의 선형 결합이다. 이 구조 덕분에 의사결정 이론이 기존 빈도주의 검정 이론을 흡수하면서 더 풍부한 평가 기준을 제공한다.


2 검정을 의사결정 문제로 바라보기

2.1 행동 공간

점추정에서는 \(\mathcal{A} = \Theta\) (모수 공간 전체가 행동 공간)였다. 가설검정은 훨씬 단순하다 — 선택 가능한 행동이 딱 두 가지이다.

가설검정의 행동 공간

\[ \mathcal{A} = \{a_0, a_1\} \]

  • \(a_0\): \(H_0\) 채택 (귀무가설을 기각하지 않는다)
  • \(a_1\): \(H_0\) 기각 (대립가설을 채택한다)

결정 규칙 \(\delta(\mathbf{x})\)\(\mathcal{X} \to \{a_0, a_1\}\) 인 함수이다.

  • 채택 영역: \(\{\mathbf{x} : \delta(\mathbf{x}) = a_0\}\)
  • 기각 영역: \(\{\mathbf{x} : \delta(\mathbf{x}) = a_1\}\)

직관: 행동 공간이 두 점으로 줄어든 것이 검정을 추정보다 단순하게 만드는 이유이다. 어떤 추정량의 위험함수는 \(\theta\) 마다 다른 값을 취하는 복잡한 함수이지만, 검정의 위험함수는 오직 두 종류의 오류(1종, 2종)의 가중합으로 완전히 표현된다.


3 손실함수의 구조

3.1 오류의 분류

검정에서 발생 가능한 결과는 네 가지이다.

참값 결정 결과 손실
\(\theta \in \Theta_0\) (\(H_0\) 참) \(a_0\) (채택) 올바른 결정 0
\(\theta \in \Theta_0\) (\(H_0\) 참) \(a_1\) (기각) 1종 오류 (Type I) \(c_I > 0\)
\(\theta \in \Theta_0^c\) (\(H_1\) 참) \(a_0\) (채택) 2종 오류 (Type II) \(c_{II} > 0\)
\(\theta \in \Theta_0^c\) (\(H_1\) 참) \(a_1\) (기각) 올바른 결정 0

3.2 0-1 손실 (0-1 Loss)

가장 단순한 손실함수는 맞으면 0, 틀리면 1을 부여한다.

\[ L(\theta, a_0) = \begin{cases} 0 & \theta \in \Theta_0 \\ 1 & \theta \in \Theta_0^c \end{cases} \quad \text{및} \quad L(\theta, a_1) = \begin{cases} 1 & \theta \in \Theta_0 \\ 0 & \theta \in \Theta_0^c \end{cases} \]

직관: 0-1 손실은 “오류인가 아닌가”만 따진다. 1종 오류와 2종 오류를 동등하게 취급하며, 오류의 심각성 차이를 무시한다. 현실 문제에서는 두 오류의 비용이 매우 다른 경우가 많으므로, 0-1 손실은 이상화된 출발점이다.

3.3 일반화 0-1 손실 (Generalized 0-1 Loss)

두 오류의 비용을 다르게 설정한다.

일반화 0-1 손실 (식 8.3.11)

\[ L(\theta, a_0) = \begin{cases} 0 & \theta \in \Theta_0 \\ c_{II} & \theta \in \Theta_0^c \end{cases} \quad \text{및} \quad L(\theta, a_1) = \begin{cases} c_I & \theta \in \Theta_0 \\ 0 & \theta \in \Theta_0^c \end{cases} \]

  • \(c_I > 0\): 1종 오류(귀무 기각 오류)의 비용
  • \(c_{II} > 0\): 2종 오류(귀무 채택 오류)의 비용

핵심 관찰: 절대적 비용 \(c_I\), \(c_{II}\) 가 아닌 비율 \(c_{II}/c_I\) 만이 결정에 실질적 영향을 미친다. \(c_I = c_{II}\) 이면 0-1 손실로 환원된다.

직관 — 왜 비율만 중요한가? 모든 비용을 두 배로 늘려도 최적 행동은 바뀌지 않는다. 예를 들어, “1종 오류 비용 = 신약 허가 취소 비용, 2종 오류 비용 = 효과 없는 신약 허가 비용”에서 비율이 중요한 것은 이 때문이다. 1종 오류가 10배 더 비싸면( \(c_I/c_{II} = 10\) ), 검정은 유의수준을 매우 낮게 설정해야 합리적이다.


4 위험함수 — 검정력 함수와의 관계

4.1 위험함수 도출

검정의 위험함수 (식 8.3.12)

일반화 0-1 손실 하에서, 검정 \(\delta\) 의 위험함수는

\[ R(\theta, \delta) = \begin{cases} c_I \, \beta(\theta) & \theta \in \Theta_0 \\ c_{II} \left(1 - \beta(\theta)\right) & \theta \in \Theta_0^c \end{cases} \]

여기서 \(\beta(\theta) = P_\theta(\mathbf{X} \in R)\) 는 검정력 함수이다.

유도: 임의의 \(\theta\) 에서 손실은 \(L(\theta, a_0)\) 또는 \(L(\theta, a_1)\) 두 값만 가능하다. 따라서

\[ R(\theta, \delta) = L(\theta, a_0) P_\theta(\delta(\mathbf{X}) = a_0) + L(\theta, a_1) P_\theta(\delta(\mathbf{X}) = a_1) \]

\(\theta \in \Theta_0\) 이면 \(L(\theta, a_0) = 0\), \(L(\theta, a_1) = c_I\) 이고 \(P_\theta(\delta = a_1) = \beta(\theta)\) 이므로:

\[ R(\theta, \delta) = 0 \cdot (1-\beta(\theta)) + c_I \cdot \beta(\theta) = c_I \beta(\theta) \]

\(\theta \in \Theta_0^c\) 이면 \(L(\theta, a_0) = c_{II}\), \(L(\theta, a_1) = 0\) 이고 \(P_\theta(\delta = a_0) = 1-\beta(\theta)\) 이므로:

\[ R(\theta, \delta) = c_{II} \cdot (1-\beta(\theta)) + 0 \cdot \beta(\theta) = c_{II}(1-\beta(\theta)) \]

4.2 직관: 위험함수의 의미

이 공식이 말하는 것을 해석하면:

  • \(H_0\) 영역 \((\theta \in \Theta_0)\): 위험 \(= c_I \times\)(1종 오류율). \(c_I\) 가 클수록 기각을 신중하게 해야 한다.
  • \(H_1\) 영역 \((\theta \in \Theta_0^c)\): 위험 \(= c_{II} \times\)(2종 오류율 $= 1 - $ 검정력). \(c_{II}\) 가 클수록 검정력을 높여야 한다.

왜 위험함수가 \(\theta = \theta_0\) 에서 불연속인가?
\(\theta\)\(\Theta_0\) 에서 \(\Theta_0^c\) 로 넘어가는 경계에서 위험 공식이 \(c_I \beta(\theta)\) 에서 \(c_{II}(1-\beta(\theta))\) 로 바뀐다. 두 식은 \(\theta = \theta_0\) 에서 일반적으로 다른 값을 가지므로, 위험함수는 이 지점에서 점프(불연속) 를 가진다 — 심지어 검정력 함수 \(\beta(\theta)\)\(\theta_0\) 에서 연속이더라도.


5 일반 손실함수로의 확장

5.1 비대칭 연속 손실

0-1 손실은 오류의 심각성이 \(\theta\) 위치에 무관하다고 가정한다. 하지만 \(H_0: \theta \geq \theta_0\) vs \(H_1: \theta < \theta_0\) 에서, \(\theta\)\(\theta_0\) 보다 훨씬 클 때 \(H_0\) 를 기각하는 것(1종 오류)은 \(\theta\)\(\theta_0\) 에 아주 가까울 때보다 훨씬 더 큰 실수이다.

이를 반영하는 손실함수 (식 8.3.13):

\[ L(\theta, a_0) = \begin{cases} 0 & \theta \geq \theta_0 \\ b(\theta_0 - \theta) & \theta < \theta_0 \end{cases} \quad \text{및} \quad L(\theta, a_1) = \begin{cases} c(\theta - \theta_0) & \theta \geq \theta_0 \\ 0 & \theta < \theta_0 \end{cases} \]

여기서 \(b, c > 0\) 는 양의 상수이다.

직관: \(|\theta - \theta_0|\) 이 클수록 손실이 커진다. \(\theta\)\(\theta_0\) 에서 멀리 떨어진 방향으로 잘못된 결정을 내리는 것이 더 비싼 실수임을 자동으로 반영한다.

실무 예시 — 콜레스테롤 임상시험

\(H_0\): 신약이 콜레스테롤을 낮추지 않는다 (\(\theta \geq \theta_0\))
\(H_1\): 신약이 콜레스테롤을 낮춘다 (\(\theta < \theta_0\))

\(\theta\)\(\theta_0\) 보다 훨씬 크면 (콜레스테롤이 매우 높은 상태), 이 약을 허가하는 것(1종 오류)은 심장병 위험이 높은 환자들에게 무효 약을 투여하는 결과를 낳는다. 손실이 \(\theta\) 에 비례해야 하는 이유가 여기 있다.

5.2 일반 손실의 위험함수

어떤 손실함수 \(L(\theta, a_0)\), \(L(\theta, a_1)\) 에 대해서도 위험함수는 동일한 구조를 유지한다 (식 8.3.14):

\[ R(\theta, \delta) = L(\theta, a_0)(1 - \beta(\theta)) + L(\theta, a_1)\beta(\theta) \]

결론: 손실함수가 아무리 복잡해도, 검정의 위험은 검정력 함수 \(\beta(\theta)\) 를 통해서만 나타난다. 즉, 검정력 함수를 완전히 알면 임의의 손실 하에서의 위험을 계산할 수 있다.


6 예시: UMP 검정의 위험함수

설정: \(X_1, \ldots, X_n \overset{\text{iid}}{\sim} N(\mu, \sigma^2)\), \(\sigma^2\) 알려짐.
\(H_0: \theta \geq \theta_0\) vs \(H_1: \theta < \theta_0\).

UMP 수준 \(\alpha\) 검정: \((\bar{X} - \theta_0)/(\sigma/\sqrt{n}) < -z_\alpha\) 이면 \(H_0\) 기각.

검정력 함수:

\[ \beta(\theta) = P_\theta\!\left(Z < -z_\alpha - \frac{\theta - \theta_0}{\sigma/\sqrt{n}}\right), \quad Z \sim N(0,1) \]

일반화 0-1 손실 \(c_I = 8\), \(c_{II} = 3\), \(\alpha = 0.10\) 하에서의 위험함수:

\[ R(\theta, \delta) = \begin{cases} 8 \cdot \beta(\theta) & \theta \geq \theta_0 \\ 3 \cdot (1 - \beta(\theta)) & \theta < \theta_0 \end{cases} \]

위험함수의 형태 해석:

  • \(\theta \gg \theta_0\): \(H_0\) 가 명백히 참인 상황. \(\beta(\theta) \approx 0\) 이므로 위험 \(\approx 0\). 검정이 \(H_0\) 를 거의 기각하지 않는다.
  • \(\theta = \theta_0\): 경계. \(\beta(\theta_0) = P(Z < -z_\alpha) = \alpha = 0.10\) 이므로 \(H_0\) 영역에서 위험 \(= 8 \times 0.10 = 0.8\).
  • \(\theta \ll \theta_0\): \(H_1\) 이 명백히 참인 상황. \(\beta(\theta) \approx 1\) 이므로 \(H_1\) 영역에서 위험 \(= 3 \times (1-1) \approx 0\).
  • \(\theta = \theta_0\) 에서 불연속: \(H_0\) 영역 극한값 \(8 \times \alpha = 0.8\) vs \(H_1\) 영역 극한값 \(3 \times (1-\alpha) = 2.7\). \(c_I \neq c_{II}\) 이기 때문에 점프가 발생한다.

7 Ch.7.3.4 vs Ch.8.3.5 비교

Ch.7.3.4 (점추정 손실함수 최적성)와 Ch.8.3.5 (검정 손실함수 최적성)를 나란히 비교하면 공통 구조와 차이가 명확히 드러난다.

항목 Ch.7 (점추정) Ch.8 (가설검정)
행동 공간 \(\mathcal{A}\) \(\Theta\) (연속) \(\{a_0, a_1\}\) (이산)
대표 손실 제곱 오차 \((a-\theta)^2\) 0-1 손실, 일반화 0-1 손실
위험함수 형태 \(E_\theta[L(\theta, \delta(\mathbf{X}))]\) — 복잡한 함수 \(\beta(\theta)\) 의 선형 결합 — 단순한 구조
최적성 개념 허용성, 미니맥스, 베이즈 위험 동일하게 적용 가능
주된 평가 도구 MSE (제곱 손실) / Cramer-Rao 검정력 함수 \(\beta(\theta)\)

7.1 직관: 왜 검정이 더 단순한가

점추정에서는 행동 공간이 실수 전체이므로 어떤 \(a\) 를 선택하느냐에 따라 손실이 연속적으로 변한다. 반면, 검정에서는 행동이 “기각” 또는 “채택” 둘 뿐이다. 이 이진 구조 덕분에 위험함수가 \(\beta(\theta)\) 로 완전히 요약된다.

바꿔 말하면: 검정을 잘 한다는 것 = 검정력 함수를 잘 설계한다는 것. 이것이 Neyman-Pearson 보조정리와 UMP 검정이 검정력 함수를 핵심 도구로 쓰는 이유를 의사결정 이론이 사후적으로 정당화한다.


8 손실 가중치와 최적 유의수준

일반화 0-1 손실은 “어떤 \(\alpha\) 를 선택해야 하는가”라는 오래된 질문에도 답을 준다.

베이즈 위험을 최소화하는 최적 검정은 사전분포 \(\pi(\theta)\) 와 손실 비율 \(c_{II}/c_I\) 에 의존한다. 이를 직관적으로 보면:

  • \(c_{II}/c_I\) 가 크면 (2종 오류가 더 비싸다): 검정력을 높이기 위해 \(\alpha\) 를 크게 설정하는 것이 합리적이다.
  • \(c_{II}/c_I\) 가 작으면 (1종 오류가 더 비싸다): \(\alpha\) 를 작게 설정해 1종 오류를 억제해야 한다.
  • 규제 기관의 관행 \(\alpha = 0.05\) 는 이 비율을 암묵적으로 가정하는 것이다.

\(\alpha = 0.05\) 의 의사결정 이론적 해석: 이것은 “1종 오류의 비용이 2종 오류 비용보다 약 19배 크다는 암묵적 가정”에 해당한다 (특정 균등 사전 하에서). 이 가정이 내 문제에 맞는지 항상 점검해야 한다.


9 코드 예시

9.1 Step 1: 위험함수 계산 — 일반화 0-1 손실

import math

def power_function(theta, theta_0, sigma, n, alpha):
    """단측 정규 검정의 검정력: H0: theta >= theta_0 vs H1: theta < theta_0"""
    z_alpha = 1.2816  # z_{0.10}
    z = -z_alpha - (theta - theta_0) / (sigma / math.sqrt(n))
    # 표준정규 CDF 근사
    return normal_cdf(z)

def normal_cdf(x):
    """표준정규 누적분포함수 (근사)"""
    return 0.5 * (1 + math.erf(x / math.sqrt(2)))

def risk_function(theta, theta_0, sigma, n, alpha, c_I, c_II):
    """일반화 0-1 손실 하에서의 위험함수"""
    beta = power_function(theta, theta_0, sigma, n, alpha)
    if theta >= theta_0:
        return c_I * beta
    else:
        return c_II * (1 - beta)

# 설정
theta_0 = 0.0
sigma = 1.0
n = 10
alpha = 0.10
c_I = 8
c_II = 3

print(f"=== 위험함수: c_I={c_I}, c_II={c_II}, alpha={alpha} ===\n")
print(f"{'theta':>8s} | {'beta(theta)':>12s} | {'R(theta, delta)':>16s} | {'영역':>10s}")
print("-" * 56)

for theta in [-3, -2, -1, -0.5, 0, 0.5, 1, 2, 3]:
    beta = power_function(theta, theta_0, sigma, n, alpha)
    risk = risk_function(theta, theta_0, sigma, n, alpha, c_I, c_II)
    region = "H0 영역" if theta >= theta_0 else "H1 영역"
    print(f"  {theta:6.1f}   | {beta:12.4f} | {risk:16.4f} | {region:>10s}")

print(f"\n--- theta=0 경계에서의 불연속 ---")
eps = 1e-6
theta_left  = theta_0 - eps
theta_right = theta_0 + eps
r_left  = risk_function(theta_left,  theta_0, sigma, n, alpha, c_I, c_II)
r_right = risk_function(theta_right, theta_0, sigma, n, alpha, c_I, c_II)
print(f"  H1 극한 (theta→0-): {r_left:.4f}")
print(f"  H0 극한 (theta→0+): {r_right:.4f}")
print(f"  점프 크기: {abs(r_right - r_left):.4f}")
print(f"  이론값 H0: c_I * alpha = {c_I * alpha:.4f}")
print(f"  이론값 H1: c_II * (1-alpha) = {c_II * (1-alpha):.4f}")

9.2 Step 2: 비율 \(c_{II}/c_I\) 에 따른 최적 유의수준 탐색

import numpy as np
from scipy.stats import norm
from scipy.optimize import minimize_scalar

def bayes_risk(alpha, theta_0, sigma, n, c_I, c_II, prior_mean=0, prior_std=2):
    """
    균등 사전 근사: N(theta_0, prior_std^2) 하에서 베이즈 위험
    H0: theta >= theta_0, H1: theta < theta_0
    """
    # 수치 적분 (이산화)
    thetas = np.linspace(theta_0 - 4*prior_std, theta_0 + 4*prior_std, 500)
    d_theta = thetas[1] - thetas[0]
    prior = norm.pdf(thetas, prior_mean, prior_std)
    prior /= prior.sum() * d_theta  # 정규화

    z_alpha = norm.ppf(1 - alpha)

    total_risk = 0
    for th, p in zip(thetas, prior):
        beta = norm.cdf(-z_alpha - (th - theta_0) / (sigma / np.sqrt(n)))
        if th >= theta_0:
            risk = c_I * beta
        else:
            risk = c_II * (1 - beta)
        total_risk += risk * p * d_theta

    return total_risk

sigma, n = 1.0, 10

print("=== 비율 c_II/c_I에 따른 최적 유의수준 ===\n")
print(f"{'c_I':>5s} | {'c_II':>5s} | {'c_II/c_I':>10s} | {'최적 alpha':>12s} | {'해석':>20s}")
print("-" * 65)

ratios = [(1, 1), (1, 5), (1, 10), (1, 19), (5, 1), (10, 1)]
for c_I, c_II in ratios:
    res = minimize_scalar(
        lambda a: bayes_risk(a, 0, sigma, n, c_I, c_II),
        bounds=(0.001, 0.5), method='bounded'
    )
    opt_alpha = res.x
    ratio = c_II / c_I
    if ratio > 1:
        interpretation = "2종 오류 비쌈 → alpha 높임"
    elif ratio < 1:
        interpretation = "1종 오류 비쌈 → alpha 낮춤"
    else:
        interpretation = "동등 → 중간 alpha"
    print(f"  {c_I:3d}  | {c_II:3d}  | {ratio:10.1f} | {opt_alpha:12.4f} | {interpretation:>20s}")

print(f"\n관행적 alpha=0.05는 암묵적으로 c_I >> c_II를 가정")

10 Ch.7 손실함수 최적성과의 연결

Ch.7 손실함수 최적성에서 점추정의 의사결정 이론 전반을 다루었다. 두 장의 관계를 정리하면:

  • 공통 구조: 손실함수 → 위험함수 → 허용성/미니맥스/베이즈 기준으로 추정량(검정) 평가
  • Ch.7 고유: 연속 행동 공간, MSE = 제곱 손실의 위험, 편향-분산 트레이드오프, Stein 손실
  • Ch.8 고유: 이진 행동 공간, 위험 = \(\beta(\theta)\) 의 선형 결합, 유의수준의 의사결정 이론적 해석

11 관련 주제

선행 지식

상위 주제

관련 개념


12 참고 문헌

  • Casella, G. & Berger, R. L. (2002). Statistical Inference (2nd ed.). Duxbury. Chapter 8, Section 8.3.5.
  • Berger, J. O. (1985). Statistical Decision Theory and Bayesian Analysis (2nd ed.). Springer.
  • Vardeman, S. B. (1987). Comment. Journal of the American Statistical Association, 82, 130-131.

Subscribe

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