구간 추정량 평가 방법 (Methods of Evaluating Interval Estimators)

크기·피복확률·손실함수를 통한 최적 신뢰집합 탐색

신뢰집합을 파생하는 방법은 여러 가지가 있다. 같은 문제에서 다른 신뢰집합을 얻을 수 있으므로 ’최선’을 고르는 기준이 필요하다. 크기(최단 구간)·피복확률·검정 최적성(UMA)·손실함수 관점에서 구간 추정량을 평가하는 방법을 Casella & Berger §9.3을 중심으로 상세히 정리한다.

Statistics
저자

Kwangmin Kim

공개

2026년 04월 04일

1 개요

구간 추정량을 파생하는 방법(피벗 양, CDF 피벗팅, 베이즈 구간 등)은 이미 살펴보았다. 같은 문제에서 서로 다른 신뢰구간을 구성할 수 있기 때문에, 어느 것이 더 ‘좋은지’ 판단하는 기준이 필요하다.

집합 추정에서는 크기(size)피복확률(coverage probability) 이라는 두 량이 서로 경쟁한다. 피복확률을 높이려면 집합을 크게 만들면 되고, 반대로 집합을 줄이면 피복확률이 낮아진다. \((-\infty, \infty)\) 는 피복확률 1이지만 아무 정보도 없다. 이 긴장 관계를 체계적으로 다루는 것이 §9.3의 핵심이다.

피복확률 은 특수한 경우를 제외하면 모수 \(\theta\)의 함수다. 이를 하나의 수치로 요약하는 표준 방법은 신뢰계수(confidence coefficient) : 피복확률의 하한 \(\inf_\theta P_\theta(\theta \in C(X))\) 를 사용하는 것이다.

크기 는 보통 구간의 길이(length)를 의미한다. 다차원이면 부피로 확장된다.


2 9.3.1 크기와 피복확률 — 최단 구간

2.1 기본 문제 설정

지정된 피복확률 \(1-\alpha\) 하에서 가장 짧은 신뢰구간을 찾는 문제다.

예시 9.3.1 (길이 최적화) \(X_1, \ldots, X_n \overset{\text{iid}}{\sim} N(\mu, \sigma^2)\), \(\sigma\) 알려짐. 피벗 \(Z = (\bar{X} - \mu)/(\sigma/\sqrt{n}) \sim N(0,1)\) 이므로, \(P(a \le Z \le b) = 1-\alpha\) 를 만족하는 모든 \((a, b)\) 쌍이 \(1-\alpha\) 신뢰구간을 만든다:

\[\left\{ \mu : \bar{x} - b \frac{\sigma}{\sqrt{n}} \le \mu \le \bar{x} - a \frac{\sigma}{\sqrt{n}} \right\}.\]

구간 길이는 \((b - a)\sigma/\sqrt{n}\)이므로 \(b - a\) 를 최소화하는 \((a, b)\) 를 찾으면 된다.

\(1-\alpha = 0.90\) 일 때 세 가지 예시:

\(a\) \(b\) \(P(Z < a)\) \(P(Z > b)\) \(b - a\)
\(-1.34\) \(2.33\) \(.09\) \(.01\) \(3.67\)
\(-1.44\) \(1.96\) \(.075\) \(.025\) \(3.40\)
\(-1.65\) \(1.65\) \(.05\) \(.05\) \(3.30\)

등꼬리 분할 \(a = -z_{\alpha/2}\), \(b = z_{\alpha/2}\) 가 가장 짧다. 이는 우연이 아니다.

2.2 정리 9.3.2 (최단 구간 — 단봉 pdf)

Theorem 9.3.2

\(f(x)\) 가 단봉(unimodal) pdf이고, 구간 \([a, b]\) 가 다음 세 조건을 만족하면 \([a, b]\) 는 조건 (i) 를 만족하는 모든 구간 중 가장 짧다:

  1. \(\int_a^b f(x)\,dx = 1 - \alpha\)

  2. \(f(a) = f(b) > 0\)

  3. \(a \le x^* \le b\) (단, \(x^*\) 는 최빈값)

직관: 조건 (ii) 는 양 끝점에서 밀도가 같다는 뜻이다. 어느 한쪽 끝점에서 밀도가 더 높다면, 그쪽을 조금 잘라내고 다른 쪽에 더해 확률을 유지하면서 구간을 줄일 수 있다.

증명 스케치 (\(a' \le a\) 인 경우):

경쟁 구간 \([a', b']\)\(b' - a' < b - a\) 라 하자.

경우 1 \(b' \le a\): \(a' \le b' \le a \le x^*\) 이므로 \(f\) 의 단봉성과 (ii) 에 의해

\[\int_{a'}^{b'} f\,dx \le f(b')(b' - a') \le f(a)(b' - a') < f(a)(b - a) \le \int_a^b f\,dx = 1-\alpha.\]

경우 2 \(b' > a\): \(a' \le a < b' < b\) 로 쓸 수 있고,

\[\int_{a'}^{b'} f\,dx = (1-\alpha) + \left[\int_{a'}^a f\,dx - \int_{b'}^b f\,dx\right].\]

대괄호 안을 추정하면:

\[\int_{a'}^a f\,dx \le f(a)(a - a'), \quad \int_{b'}^b f\,dx \ge f(b)(b - b').\]

\(f(a) = f(b)\) 이므로:

\[\int_{a'}^a f\,dx - \int_{b'}^b f\,dx \le f(a)\left[(a - a') - (b - b')\right] = f(a)\left[(b' - a') - (b - a)\right] < 0.\]

따라서 \(\int_{a'}^{b'} f\,dx < 1-\alpha\). \(\square\)

따름정리: 대칭 단봉 pdf(표준 정규 등)에서는 등꼬리 분할(\(a = -b\))이 최단 구간을 준다 (Exercise 9.39). 정규 피벗 구간 \(\bar{x} \pm z_{\alpha/2}\sigma/\sqrt{n}\) 의 최적성이 이로써 확립된다.

2.3 기댓값 길이 최적화

예시 9.3.3 (기댓값 길이) \(t\) 분포 피벗 \((\bar{X}-\mu)/(S/\sqrt{n})\) 기반 구간의 길이는 \(S\) 에 의존한다:

\[\text{Length}(s) = (b-a)\frac{s}{\sqrt{n}}.\]

기댓값 길이 최소화 기준:

\[E_\sigma[\text{Length}(S)] = (b-a)\frac{E_\sigma S}{\sqrt{n}} = (b-a) \cdot c(n) \frac{\sigma}{\sqrt{n}}.\]

\(c(n)\)\(n\) 에만 의존하는 상수이므로, 이 경우에도 Theorem 9.3.2 가 적용되어 \(a = -t_{n-1,\alpha/2}\), \(b = t_{n-1,\alpha/2}\) 가 최적이다.

2.4 척도 모수: 직접 적용이 안 되는 경우

예시 9.3.4 (최단 피벗 구간) \(X \sim \text{Gamma}(k, \beta)\). 피벗 \(Y = X/\beta \sim \text{Gamma}(k, 1)\). 신뢰구간의 형태는

\[\left\{ \beta : \frac{x}{b} \le \beta \le \frac{x}{a} \right\},\]

길이가 \(\left(\frac{1}{a} - \frac{1}{b}\right)x\) 로, \(b - a\) 가 아니라 \(\frac{1}{a} - \frac{1}{b}\) 를 최소화해야 한다.

라그랑지 최적화(제약: \(\int_a^{b(a)} f_Y\,dy = 1-\alpha\))를 미분하면:

\[\boxed{f(b)\, b^2 = f(a)\, a^2}\]

이 등식이 척도 피벗 최적 구간의 조건이다. 정규 분산 구간(예시 9.2.10)에서도 같은 형태가 나온다.


4 9.3.3 베이즈 최적성 (Bayesian Optimality)

사후 분포 \(\pi(\theta|x)\) 를 갖는 베이즈 틀에서, 지정된 신용확률 \(1-\alpha\) 하에 가장 짧은 신용집합을 찾는 문제는 §9.3.1 과 동일한 구조다.

Corollary 9.3.10 (HPD = 최단 신용구간)

사후 밀도 \(\pi(\theta|x)\) 가 단봉이면, 지정된 \(\alpha\) 에 대해 가장 짧은 \(1-\alpha\) 신용집합

\[\{\theta : \pi(\theta|x) \ge k\}, \quad \text{where } \int_{\{\theta : \pi(\theta|x) \ge k\}} \pi(\theta|x)\,d\theta = 1-\alpha\]

이다. 이 집합을 최고 사후밀도(Highest Posterior Density, HPD) 구간 이라 한다.

이는 Theorem 9.3.2 를 사후 밀도 \(f = \pi(\theta|x)\) 에 직접 적용한 결과다. 조건 (ii) 에 해당하는 것이 “밀도 수평선(density level) \(k\)” 이다.

예시 9.3.11 (포아송 HPD 구간) 예시 9.2.16 의 Poisson-Gamma 사후 분포: \(n=10\), \(\sum x_i = 6\), \(a=b=1\) (사전) → 사후 \(2(n+1)\lambda \sim \chi^2_{2(\sum x+1)}\).

구간 방법 구간 길이
등꼬리 신용집합 \([0.299, 1.077]\) \(0.778\)
HPD 구간 \([0.253, 1.005]\) \(0.752\)
고전 Garwood 구간 \([0.261, 1.184]\) \(0.923\)

HPD 구간이 등꼬리 신용집합보다 짧다. Gamma 사후 분포가 비대칭이기 때문에 등꼬리 분할은 최단이 아니다.

예시 9.3.12 (정규 HPD 구간) 정규-정규 켤레 사후 \(\theta|x \sim N(\delta^B, \tau_1^2)\). 대칭 단봉이므로 \(\{\theta : \pi(\theta|x) \ge k\} = \{\theta : |\theta - \delta^B| \le k'\}\) 가 대칭 구간이 되고, 등꼬리 신용집합이 곧 HPD 구간이다.


5 9.3.4 손실함수 최적성 (Loss Function Optimality)

앞선 두 방법(최단 구간, UMA)은 피복확률을 고정한 뒤 크기를 최소화하는 방식이다. 결정이론 관점에서는 두 기준을 손실함수 하나로 통합할 수 있다.

5.1 손실함수 설정

\[L(\theta, C) = b \cdot \text{Length}(C) - I_C(\theta),\]

여기서

  • \(b > 0\): 길이 대비 피복 실패의 상대적 비중
  • \(I_C(\theta) = \mathbf{1}[\theta \in C]\)

위험함수(risk function):

\[R(\theta, C) = b \cdot E_\theta[\text{Length}(C(X))] - P_\theta(\theta \in C(X)).\]

위험을 최소화하면 기댓값 길이를 줄이면서 피복확률을 높이는 최적 균형을 찾게 된다.

극한 사례: - \(b = 0\): 길이 무관, 피복확률만 중요 → \(C = (-\infty, \infty)\) 가 최적 - \(b \to \infty\): 피복확률 무관, 길이만 중요 → 점 추정량 \(C = \{x\}\) 가 최적

5.2 예시 9.3.13 (정규 구간 추정량)

\(X \sim N(\mu, \sigma^2)\), \(\sigma^2\) 알려짐. 구간 \(C(x) = [x - c\sigma, x + c\sigma]\) (\(c \ge 0\)).

피복확률:

\[P_\mu(\mu \in C(X)) = P\left(-c \le \frac{X-\mu}{\sigma} \le c\right) = 2\Phi(c) - 1.\]

위험함수 (\(\mu\) 에 독립):

\[R(\mu, C) = b(2c\sigma) - [2\Phi(c) - 1].\]

최적 \(c\):

\[\frac{dR}{dc} = 2b\sigma - \frac{2}{\sqrt{2\pi}} e^{-c^2/2} = 0 \implies e^{-c^2/2} = b\sigma\sqrt{2\pi}.\]

  • \(b\sigma > 1/\sqrt{2\pi}\): \(c = 0\) 이 최적(점 추정)
  • \(b\sigma \le 1/\sqrt{2\pi}\): \(c = \sqrt{-2\log(b\sigma\sqrt{2\pi})}\) 이 최적 → 이를 \(z_{\alpha/2}\) 로 표현하면 통상의 \(1-\alpha\) 신뢰구간과 일치

해석: 결정이론은 \(b\) 의 선택을 통해 신뢰계수를 내생화한다. \(b\) 를 바꾸면 다른 신뢰계수의 최적 구간을 얻는다.


6 네 가지 평가 기준 비교

기준 핵심 아이디어 적용 조건 한계
최단 구간 (Thm 9.3.2) 동등밀도 수평선; \(f(a)=f(b)\) 단봉 pdf 척도 모수에 직접 적용 불가
UMA (Thm 9.3.5) 거짓 피복 확률 최소화; UMP 역전 단측 구간 양측 구간에 UMP 없음
Pratt 연결 (Thm 9.3.9) \(E[\text{Length}] = \int P(\text{거짓})\,d\theta\) 단조 끝점 단측에서 길이 최적성 보장 안 됨
HPD (Cor 9.3.10) 사후 밀도 수평선; 베이즈 최단 단봉 사후 비단봉 → 구간 아닌 집합
손실함수 (§9.3.4) 길이 + 피복 통합; \(b\) 로 균형 임의 \(b\) 선택이 주관적

7 요약

  • 최단 구간: 단봉 pdf에서 \(f(a) = f(b)\) 조건이 최단 구간을 보장한다 (Thm 9.3.2). 척도 모수는 변형된 조건 \(f(b)b^2 = f(a)a^2\) 을 사용한다.
  • UMA: UMP 검정의 역전이 UMA 신뢰집합을 낳는다 (Thm 9.3.5). 주로 단측 구간에만 적용 가능하다.
  • Pratt 정리: 기댓값 구간 길이는 거짓 피복 확률의 적분이다 (Thm 9.3.9). 거짓 피복 최소화와 길이 최소화가 연결된다.
  • HPD = 베이즈 최단: 단봉 사후에서 HPD 구간이 가장 짧은 신용집합이다 (Cor 9.3.10). 비대칭 사후(Gamma 등)에서는 등꼬리 분할이 아닌 HPD가 선호된다.
  • 손실함수: 피복확률과 길이를 하나의 위험함수로 통합하면 신뢰계수를 내생적으로 결정할 수 있다. \(b\) 선택의 주관성이 실무 적용의 걸림돌이다.

8 코드 — 최단 구간 수치 계산

import numpy as np
from scipy import stats, optimize

# ── 예시 9.3.1: 표준 정규에서 최단 90% 구간 ──────────────────────
alpha = 0.10

def interval_length(a, alpha=0.10):
    """P(a <= Z <= b) = 1-alpha 를 만족하는 b를 찾아 b-a 반환"""
    b = stats.norm.ppf(stats.norm.cdf(a) + (1 - alpha))
    return b - a

# 다양한 a 값에서 길이 계산
a_vals = np.linspace(-3.0, -0.1, 300)
lengths = [interval_length(a) for a in a_vals]

best_idx = np.argmin(lengths)
a_opt = a_vals[best_idx]
b_opt = stats.norm.ppf(stats.norm.cdf(a_opt) + (1 - alpha))

print(f"최적 a = {a_opt:.4f}, b = {b_opt:.4f}, 길이 = {b_opt - a_opt:.4f}")
print(f"대칭 구간: a = {-stats.norm.ppf(1-alpha/2):.4f}, 길이 = {2*stats.norm.ppf(1-alpha/2):.4f}")

# ── 예시 9.3.4: Gamma(k=3) 척도 파라미터 최단 구간 ────────────────
# 조건: f(b)*b^2 = f(a)*a^2,  P(a <= Y <= b) = 1-alpha
k = 3
x_obs = 5.0   # 관측값

def gamma_interval_condition(a_val, alpha=0.10, k=3):
    """f(b)*b^2 = f(a)*a^2 조건을 이용해 b를 수치적으로 찾음"""
    fa = stats.gamma.pdf(a_val, a=k)

    def eq(b_val):
        return stats.gamma.pdf(b_val, a=k) * b_val**2 - fa * a_val**2

    # b > a 범위에서 b 탐색
    try:
        b_val = optimize.brentq(eq, a_val + 1e-6, 20 * k)
    except ValueError:
        return None, None, np.inf

    prob = stats.gamma.cdf(b_val, a=k) - stats.gamma.cdf(a_val, a=k)
    length = (1/a_val - 1/b_val) * x_obs
    return b_val, prob, length

# a 격자 탐색
best_length = np.inf
best_a = best_b = None
for a_test in np.linspace(0.01, k - 0.1, 500):
    b_test, prob, length = gamma_interval_condition(a_test)
    if b_test is not None and abs(prob - (1 - alpha)) < 0.01 and length < best_length:
        best_length = length
        best_a, best_b = a_test, b_test

if best_a:
    beta_L = x_obs / best_b
    beta_U = x_obs / best_a
    print(f"\nGamma k={k}: 최단 구간 [β_L={beta_L:.3f}, β_U={beta_U:.3f}], 길이={best_length:.3f}")
library(tidyverse)

# ── 표준 정규 최단 90% 구간 ──────────────────────────────────────
alpha <- 0.10

interval_length <- function(a, alpha = 0.10) {
  b <- qnorm(pnorm(a) + (1 - alpha))
  b - a
}

a_vals <- seq(-3.0, -0.1, length.out = 300)
lengths <- sapply(a_vals, interval_length)

best_a <- a_vals[which.min(lengths)]
best_b <- qnorm(pnorm(best_a) + (1 - alpha))

cat(sprintf("최적 a = %.4f, b = %.4f, 길이 = %.4f\n", best_a, best_b, best_b - best_a))
cat(sprintf("대칭 구간: a = %.4f, 길이 = %.4f\n", -qnorm(1 - alpha/2), 2*qnorm(1-alpha/2)))

# ── HPD 구간: Gamma 사후 (Poisson-Gamma) ──────────────────────────
library(bayestestR)

# n=10, sum_x=6, Gamma(a=1,b=1) 사전 → Gamma(a+sum_x, 1/(n+1/b)) 사후
n <- 10; sum_x <- 6; a_prior <- 1; b_prior <- 1
a_post <- a_prior + sum_x
rate_post <- n + 1 / b_prior  # 1/scale 파라미터

# 등꼬리 신용구간
lower_et <- qgamma(alpha/2,  shape = a_post, rate = rate_post)
upper_et <- qgamma(1-alpha/2, shape = a_post, rate = rate_post)
cat(sprintf("\n등꼬리 신용집합: [%.3f, %.3f], 길이 = %.3f\n",
            lower_et, upper_et, upper_et - lower_et))

# HPD 구간 (bayestestR)
samples <- rgamma(1e6, shape = a_post, rate = rate_post)
hpd <- hdi(samples, ci = 1 - alpha)
cat(sprintf("HPD 구간: [%.3f, %.3f], 길이 = %.3f\n",
            hpd$CI_low, hpd$CI_high, hpd$CI_high - hpd$CI_low))

# ── UMA 하한 vs 양측 신뢰구간 피복확률 비교 ──────────────────────
set.seed(42)
n_sim <- 10000; n_obs <- 15; sigma <- 1; mu_true <- 0
alpha_test <- 0.05

# 시뮬레이션
xbar <- replicate(n_sim, mean(rnorm(n_obs, mu_true, sigma)))

# UMA 하한: C = [xbar - z_alpha*sigma/sqrt(n), Inf)
z_a  <- qnorm(1 - alpha_test)
uma_cover <- mean(mu_true >= xbar - z_a * sigma / sqrt(n_obs))

# 양측 구간
z_a2 <- qnorm(1 - alpha_test/2)
two_cover <- mean(abs(xbar - mu_true) <= z_a2 * sigma / sqrt(n_obs))

cat(sprintf("\nUMA 하한 피복확률: %.4f (명목 %.4f)\n", uma_cover, 1 - alpha_test))
cat(sprintf("양측 구간 피복확률: %.4f (명목 %.4f)\n", two_cover, 1 - alpha_test))

9 참고 문헌

  • Casella, G. & Berger, R. L. (2002). Statistical Inference (2nd ed.), §9.3.
  • Pratt, J. W. (1961). Length of confidence intervals. Journal of the American Statistical Association, 56, 549–567.
  • Madansky, A. (1962). More on length of confidence intervals. Journal of the American Statistical Association, 57, 586–589.
  • Lehmann, E. L. & Casella, G. (1998). Theory of Point Estimation (2nd ed.).

Subscribe

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