1 개요
구간 추정량을 평가하는 방법 전반은 구간 추정량 평가 방법에서 다루었다. 이 포스트는 그 중 §9.3.1 크기와 피복확률(Size and Coverage Probability) 에 집중하여, 다음 세 가지 질문에 답한다.
- 피복확률은 왜 모수의 함수인가? 어떤 경우에 상수가 되는가?
- 신뢰계수를 infimum으로 정의하는 이유는 무엇인가?
- 지정된 피복확률 하에서 가장 짧은 구간을 보장하는 조건은 무엇인가?
2 피복확률과 신뢰계수
2.1 정의
핵심은 확률 표현의 방향이다. \(\theta\) 가 확률적으로 변하는 것이 아니라, 랜덤 구간 \([L(X), U(X)]\) 가 고정된 \(\theta\) 를 얼마나 자주 포함하는지를 묻는다.
\[P_\theta(\theta \in [L(X), U(X)]) = P_\theta(L(X) \le \theta \text{ and } U(X) \ge \theta)\]
우변은 확률변수 \(X\) 에 관한 진술이다. \(\theta\) 는 모르지만 고정된 값이다.
2.2 왜 피복확률은 모수의 함수인가?
연속 분포에서 피벗을 사용하면 피복확률이 \(\theta\) 에 독립인 경우가 많다. 그러나 이것은 특수한 구조 덕분이며, 일반적으로는 \(\theta\) 에 의존한다.
예시 9.1.6 (균등 분포 두 구간의 비교) \(X_1, \ldots, X_n \overset{\text{iid}}{\sim} \text{Uniform}(0, \theta)\), \(Y = \max\{X_1, \ldots, X_n\}\).
두 종류의 구간을 비교한다:
구간 A: \([aY, bY]\), \(1 \le a < b\)
\[P_\theta(\theta \in [aY, bY]) = P_\theta\!\left(\frac{1}{b} \le \frac{Y}{\theta} \le \frac{1}{a}\right).\]
\(T = Y/\theta\) 의 pdf는 \(f_T(t) = nt^{n-1}\), \(0 \le t \le 1\) (피벗!) 이므로:
\[P_\theta\!\left(\frac{1}{b} \le T \le \frac{1}{a}\right) = \int_{1/b}^{1/a} nt^{n-1}\,dt = \left(\frac{1}{a}\right)^n - \left(\frac{1}{b}\right)^n.\]
피복확률이 \(\theta\) 에 독립이다. 신뢰계수 = \(\left(\frac{1}{a}\right)^n - \left(\frac{1}{b}\right)^n\).
구간 B: \([Y+c, Y+d]\), \(0 \le c < d\)
\[P_\theta(\theta \in [Y+c, Y+d]) = P_\theta(Y+c \le \theta \le Y+d)\]
\[= P_\theta\!\left(1 - \frac{d}{\theta} \le \frac{Y}{\theta} \le 1 - \frac{c}{\theta}\right)\]
\[= \int_{1-d/\theta}^{1-c/\theta} nt^{n-1}\,dt = \left(1 - \frac{c}{\theta}\right)^n - \left(1 - \frac{d}{\theta}\right)^n.\]
피복확률이 \(\theta\) 에 의존한다. 특히 \(\theta \to \infty\) 이면:
\[\lim_{\theta \to \infty} \left[\left(1 - \frac{c}{\theta}\right)^n - \left(1 - \frac{d}{\theta}\right)^n\right] = 1^n - 1^n = 0.\]
신뢰계수 \(= \inf_\theta(\cdots) = 0\). 구간 B는 표면적으로 구간처럼 보이지만 신뢰계수가 0이다.
직관: 구간 A는 척도 구조(\(Y/\theta\) 를 피벗으로 사용)를 활용하여 분포를 \(\theta\) 에서 분리했다. 구간 B는 평행이동 구조(\(Y + c\))를 사용하는데, 이는 \(\theta\) 가 커질수록 \(Y\) 의 분포가 우측으로 이동하므로 정해진 폭 \(d - c\) 는 점점 작아지는 효과를 낸다.
3 피복확률의 모수 의존성 패턴
3.1 연속 vs 이산 분포
연속 분포에서 피벗 기반 구간은 피복확률이 \(\theta\) 에 독립이거나 적어도 \(1-\alpha\) 이상을 보장한다. 이산 분포에서는 CDF의 계단 함수 특성으로 인해 피복확률이 모수에 따라 크게 변동한다.
이항 Wald 구간의 피복확률 실패 예시
\(X \sim \text{Binomial}(n, p)\). Wald 구간:
\[\hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]
이 구간의 피복확률은 \(p\) 의 함수로 심각하게 변동한다. 특히: - \(p\) 가 0 또는 1에 가까울수록 피복확률이 \(1-\alpha\) 아래로 떨어진다. - \(n = 20\), \(\alpha = 0.05\) 일 때 \(p = 0.1\) 근방에서 피복확률이 0.85 수준으로 떨어지는 경우가 있다. - Wald 구간의 신뢰계수는 0에 가깝다 — 즉, 최악의 \(p\) 에서 피복확률이 0 근처가 된다.
이에 비해 Clopper-Pearson 구간은 이산성으로 인해 보수적(conservative): 피복확률이 항상 \(1-\alpha\) 이상이지만, 평균적으로 더 넓은 구간을 만든다.
3.2 위치 모수 vs 척도 모수
| 구조 | 대표 예시 | 피복확률 | 구간 길이 |
|---|---|---|---|
| 위치 모수 | \(N(\mu, \sigma^2)\), \(\sigma\) 알려짐 | \(\theta\) 독립, 정확히 \(1-\alpha\) | 고정 |
| 척도 모수 | \(N(\mu, \sigma^2)\), \(\mu\) 알려짐 | \(\theta\) 독립, 정확히 \(1-\alpha\) | 데이터에 의존 |
| 이산 분포 | \(\text{Binomial}(n,p)\), \(\text{Poisson}(\lambda)\) | \(\theta\) 에 의존, 보수적 | 데이터에 의존 |
| 복합(비피벗) | \(\text{Uniform}(0,\theta)\) 의 구간 B | \(\theta\) 에 의존, 신뢰계수 0 | 고정 |
4 신뢰계수를 infimum으로 정의하는 이유
\(\theta\) 를 모르기 때문에 피복확률의 어떤 특정 값도 보장할 수 없다. 모든 가능한 \(\theta\) 에서 최소한 \(1-\alpha\) 이상의 피복을 보장한다는 의미로 신뢰계수를 \(\inf_\theta P_\theta(\theta \in C(X)) \ge 1-\alpha\) 로 정의한다.
문제점: infimum이 특정 \(\theta\) 에서만 낮고, 다른 \(\theta\) 에서는 훨씬 높을 수 있다. 이런 경우 평균 피복확률(average coverage probability) 기준을 쓰는 것이 더 정보적일 수 있다. 하지만 빈도주의 통계에서 “최소 보장” 관점이 표준이다.
5 크기(Size): 길이와 기댓값 길이
5.1 길이 최소화 문제
지정된 신뢰계수 \(1-\alpha\) 하에서 구간의 길이를 최소화하는 것이 §9.3.1의 핵심이다.
위치 모수 문제: 구간 길이가 데이터 \(X\) 에 독립인 경우, 피복확률 제약 하에 \(b - a\) 를 최소화하는 \((a, b)\) 를 찾으면 된다.
\[\text{길이} = (b - a) \cdot \frac{\sigma}{\sqrt{n}} \quad (\sigma\text{ 알려짐, 정규 분포})\]
척도 모수 문제: 구간 길이가 데이터에 의존하는 경우, 특정 \(X = x\) 에서의 길이 최소화가 다른 \(x\) 에서와 상충할 수 있다. 이때 기댓값 길이 최소화가 합리적 기준이 된다.
\[\text{기댓값 길이} = E_\theta[\text{Length}(C(X))]\]
6 Theorem 9.3.2: 최단 구간의 충분조건
6.1 정리 재확인
6.2 조건 해석
조건 (i): 피벗 분포에서 \(1-\alpha\) 확률을 포함해야 한다.
조건 (ii): 양 끝점에서 밀도가 같아야 한다. 이것이 핵심 조건이다. 만약 한쪽 끝에서 밀도가 더 높다면, 그쪽을 조금 잘라내고 다른 쪽에 더해 확률을 유지하면서 구간을 줄일 수 있다. 조건 (ii) 는 이 개선이 더 이상 가능하지 않다는 일계조건(first-order condition)이다.
조건 (iii): 최빈값이 구간 안에 있어야 한다. 이것이 없으면 반쪽짜리 구간이 될 수 있다.
6.3 대칭 vs 비대칭 단봉에서의 적용
대칭 단봉 pdf: \(f(-x) = f(x)\) 이면 \(f(-z_{\alpha/2}) = f(z_{\alpha/2})\) 가 자동으로 만족되므로, 등꼬리 분할 \(a = -z_{\alpha/2}\), \(b = z_{\alpha/2}\) 가 최단 구간이다.
표준정규, \(t\) 분포, \(\chi^2\) (단, \(\chi^2\) 는 비대칭)에서 상황이 다르다:
| 분포 | 대칭 여부 | 최단 구간 조건 |
|---|---|---|
| \(N(0,1)\) | 대칭 | 등꼬리: \(a = -z_{\alpha/2}\), \(b = z_{\alpha/2}\) |
| \(t_\nu\) | 대칭 | 등꼬리: \(a = -t_{\nu,\alpha/2}\), \(b = t_{\nu,\alpha/2}\) |
| \(\chi^2_k\) | 비대칭 | \(f(a) = f(b)\) 수치 탐색 필요 |
| \(\text{Gamma}(k,1)\) | 비대칭 | \(f(a) = f(b)\) 수치 탐색 필요 |
비대칭 단봉 pdf: 등꼬리 분할이 최단이 아니다. \(\chi^2_{10}\) 분포에서 90% 구간을 예로 들면:
- 등꼬리: \([3.940, 18.307]\), 길이 \(= 14.367\)
- 최단(\(f(a) = f(b)\)): \([4.439, 17.621]\) 부근, 길이 \(< 14.367\)
두 길이의 차이는 작지만, 자유도가 낮을수록(더 비대칭일수록) 차이가 커진다.
6.4 척도 모수에서의 수정 조건
정리 9.3.2는 위치 모수에 직접 적용된다. 척도 모수(\(X/\theta\) 가 피벗인 경우)에서는 구간 길이가 \(b-a\) 가 아니라 \(1/a - 1/b\) 이므로 최적 조건이 달라진다.
예시 9.3.4 (\(\text{Gamma}(k,\beta)\) 최단 피벗 구간) \(Y = X/\beta \sim \text{Gamma}(k,1)\).
\[\text{구간}: \left\{\beta : \frac{x}{b} \le \beta \le \frac{x}{a}\right\}, \quad \text{길이} = \left(\frac{1}{a} - \frac{1}{b}\right)x.\]
라그랑지 최적화로 유도되는 최단 구간 조건:
\[\boxed{f_Y(b) \cdot b^2 = f_Y(a) \cdot a^2}\]
이는 Theorem 9.3.2의 조건 (ii) \(f(a) = f(b)\) 가 아니라, “밀도 × 제곱” 이 같아야 한다는 수정 조건이다. 척도 변환에 의해 최적 조건이 왜곡된다.
정규 분산 구간 (예시 9.2.10) 도 같은 구조다: \(n\hat{\sigma}^2/\sigma^2 \sim \chi^2_{n-1}\) 를 피벗으로 사용하면, 최단 \(\sigma^2\) 구간의 조건은 \(f(b)b^2 = f(a)a^2\)이다.
7 기댓값 길이 최적화 (예시 9.3.3 심화)
\(t_{n-1}\) 피벗 기반 \(\mu\) 구간의 길이는 \(S\) 에 의존한다:
\[\text{Length} = (b - a) \frac{S}{\sqrt{n}}.\]
\(b - a\) 는 \((a,b)\) 에만 의존하는 상수이고, \(E_\sigma[S]\) 는 \(n\) 에만 의존하는 상수 \(c(n)\sigma\) 이므로:
\[E_\sigma[\text{Length}] = (b-a) \cdot c(n) \cdot \frac{\sigma}{\sqrt{n}}.\]
기댓값 길이를 최소화하는 \((a,b)\) 는 Theorem 9.3.2를 \(f = t_{n-1}\) pdf에 적용한 것과 같다. \(t_{n-1}\) 은 대칭 단봉이므로, 등꼬리 분할 \(a = -t_{n-1,\alpha/2}\), \(b = t_{n-1,\alpha/2}\) 가 최단 기댓값 길이 구간이다.
이 결과가 의미하는 것: \(\sigma\) 를 모를 때도 등꼬리 \(t\) 구간이 기댓값 길이 기준으로 최적이다.
8 이산 분포에서의 피복확률 분석
이산 분포에서 피복확률의 모수 의존성과 보수성을 수치로 확인한다.
Binomial Wald 구간 \(n = 30\), 다양한 \(p\) 에서 피복확률:
| \(p\) | 등꼬리 Wald 구간 피복확률 | Clopper-Pearson 피복확률 |
|---|---|---|
| \(0.10\) | \(\approx 0.86\) | \(\approx 0.99\) |
| \(0.30\) | \(\approx 0.92\) | \(\approx 0.97\) |
| \(0.50\) | \(\approx 0.96\) | \(\approx 0.97\) |
| \(0.70\) | \(\approx 0.92\) | \(\approx 0.97\) |
| \(0.90\) | \(\approx 0.86\) | \(\approx 0.99\) |
- Wald 구간: 대칭적인 \(p\) 에서만 명목 수준에 가깝고, 끝값에서 심각하게 미달
- Clopper-Pearson: 모든 \(p\) 에서 \(1-\alpha\) 이상이지만 과도하게 보수적
Poisson 구간 \(n = 10\), \(\alpha = 0.05\) 에서 \(\lambda\) 에 따른 Garwood 구간 피복확률:
Garwood 구간은 \(\chi^2\) 분위수로 구성되어 있고, 이산성으로 인해 피복확률이 \(\lambda\) 에 따라 진동(oscillate)하지만 항상 \(\ge 1-\alpha\) 이다. 이것이 이산 분포의 “보수성(conservatism)”이다.
9 코드 — 피복확률 분석과 최단 구간 탐색
import numpy as np
from scipy import stats, optimize
import matplotlib.pyplot as plt
# ── 1. Binomial Wald vs Clopper-Pearson 피복확률 비교 ────────────
n_obs = 30
alpha = 0.05
p_vals = np.linspace(0.01, 0.99, 200)
wald_coverage = np.zeros(len(p_vals))
cp_coverage = np.zeros(len(p_vals))
for i, p in enumerate(p_vals):
total_wald = 0.0
total_cp = 0.0
for k in range(n_obs + 1):
prob = stats.binom.pmf(k, n_obs, p)
phat = k / n_obs
se = np.sqrt(phat * (1 - phat) / n_obs)
# Wald
lo_w = phat - 1.96 * se
hi_w = phat + 1.96 * se
if lo_w <= p <= hi_w:
total_wald += prob
# Clopper-Pearson
lo_cp = stats.beta.ppf(alpha/2, k, n_obs - k + 1) if k > 0 else 0.0
hi_cp = stats.beta.ppf(1-alpha/2, k + 1, n_obs - k) if k < n_obs else 1.0
if lo_cp <= p <= hi_cp:
total_cp += prob
wald_coverage[i] = total_wald
cp_coverage[i] = total_cp
print("=== Binomial n=30, 95% 구간 ===")
print(f"Wald 최소 피복확률: {wald_coverage.min():.4f}")
print(f"Clopper-Pearson 최소 피복확률: {cp_coverage.min():.4f}")
print(f"Wald 평균 피복확률: {wald_coverage.mean():.4f}")
print(f"Clopper-Pearson 평균 피복확률: {cp_coverage.mean():.4f}")
# ── 2. 균등 분포 두 구간의 피복확률 비교 (예시 9.1.6) ─────────────
n = 5 # 샘플 크기
a, b_A = 1.0, 2.0 # 구간 A: [Y, 2Y] (a=1, b=2)
c, d = 0.5, 1.5 # 구간 B: [Y+0.5, Y+1.5]
theta_vals = np.linspace(1.5, 20, 200)
# 구간 A 피복확률 = (1/a)^n - (1/b)^n (θ 독립)
cov_A = (1/a)**n - (1/b_A)**n
print(f"\n=== 균등 분포 Uniform(0,θ), n={n} ===")
print(f"구간 A [aY, bY]: 피복확률 = {cov_A:.4f} (θ 독립)")
# 구간 B 피복확률 = (1 - c/θ)^n - (1 - d/θ)^n (θ 의존)
cov_B = [(1 - c/t)**n - (1 - d/t)**n for t in theta_vals]
print(f"구간 B [Y+c, Y+d]: 피복확률 범위 [{min(cov_B):.4f}, {max(cov_B):.4f}] → 신뢰계수 = 0")
# ── 3. Chi-squared 최단 90% 구간 탐색 (비대칭 → f(a)=f(b) 조건) ──
df = 10
alpha_test = 0.10
def chisq_interval_length(a_val, df=10, alpha=0.10):
"""f(a) = f(b) 조건으로 b를 찾아 길이 반환"""
fa = stats.chi2.pdf(a_val, df)
# f(b) = f(a) 이고 b > 최빈값 (df-2) 인 b 탐색
mode = max(df - 2, 0.01)
if a_val >= mode:
return np.inf
try:
b_val = optimize.brentq(
lambda b: stats.chi2.pdf(b, df) - fa,
mode + 1e-6, 100
)
prob = stats.chi2.cdf(b_val, df) - stats.chi2.cdf(a_val, df)
if abs(prob - (1 - alpha)) > 0.05:
return np.inf
return b_val - a_val
except ValueError:
return np.inf
# 등꼬리 구간
lo_eq = stats.chi2.ppf(alpha_test/2, df)
hi_eq = stats.chi2.ppf(1 - alpha_test/2, df)
len_equal = hi_eq - lo_eq
# f(a) = f(b) 최단 구간 수치 탐색
a_vals = np.linspace(0.1, df - 2 - 0.1, 300)
lengths = [chisq_interval_length(a, df=df, alpha=alpha_test) for a in a_vals]
valid_idx = [i for i, l in enumerate(lengths) if not np.isinf(l)]
if valid_idx:
best_i = valid_idx[np.argmin([lengths[i] for i in valid_idx])]
a_opt = a_vals[best_i]
fa_opt = stats.chi2.pdf(a_opt, df)
b_opt = optimize.brentq(
lambda b: stats.chi2.pdf(b, df) - fa_opt,
df - 2, 100
)
len_shortest = b_opt - a_opt
print(f"\n=== Chi-squared({df}) 90% 구간 ===")
print(f"등꼬리: [{lo_eq:.3f}, {hi_eq:.3f}], 길이 = {len_equal:.3f}")
print(f"최단(f(a)=f(b)): [{a_opt:.3f}, {b_opt:.3f}], 길이 = {len_shortest:.3f}")
print(f"길이 감소: {len_equal - len_shortest:.3f} ({(len_equal-len_shortest)/len_equal*100:.1f}%)")library(tidyverse)
# ── 1. Binomial Wald vs Clopper-Pearson 피복확률 ─────────────────
n_obs <- 30
alpha <- 0.05
p_grid <- seq(0.01, 0.99, length.out = 200)
coverage_wald <- numeric(length(p_grid))
coverage_cp <- numeric(length(p_grid))
for (i in seq_along(p_grid)) {
p <- p_grid[i]
ks <- 0:n_obs
probs <- dbinom(ks, n_obs, p)
phat <- ks / n_obs
se <- sqrt(phat * (1 - phat) / n_obs)
# Wald
in_wald <- (phat - 1.96*se <= p) & (p <= phat + 1.96*se)
coverage_wald[i] <- sum(probs[in_wald])
# Clopper-Pearson
lo_cp <- ifelse(ks > 0, qbeta(alpha/2, ks, n_obs - ks + 1), 0)
hi_cp <- ifelse(ks < n_obs, qbeta(1-alpha/2, ks + 1, n_obs - ks), 1)
in_cp <- (lo_cp <= p) & (p <= hi_cp)
coverage_cp[i] <- sum(probs[in_cp])
}
cat(sprintf("Wald 최소 피복확률: %.4f\n", min(coverage_wald)))
cat(sprintf("Clopper-Pearson 최소 피복확률: %.4f\n", min(coverage_cp)))
# ── 2. Chi-squared 최단 구간 탐색 ───────────────────────────────
df_k <- 10
alpha_test <- 0.10
# 등꼬리 구간
lo_eq <- qchisq(alpha_test/2, df_k)
hi_eq <- qchisq(1 - alpha_test/2, df_k)
cat(sprintf("\nChi-sq(%d) 90%% 등꼬리: [%.3f, %.3f], 길이 = %.3f\n",
df_k, lo_eq, hi_eq, hi_eq - lo_eq))
# f(a) = f(b) 조건 탐색
mode_k <- df_k - 2
find_b_from_a <- function(a_val) {
fa <- dchisq(a_val, df_k)
tryCatch(
uniroot(function(b) dchisq(b, df_k) - fa,
interval = c(mode_k + 0.01, 100))$root,
error = function(e) NA_real_
)
}
a_seq <- seq(0.1, mode_k - 0.01, length.out = 300)
b_seq <- sapply(a_seq, find_b_from_a)
probs <- pchisq(b_seq, df_k) - pchisq(a_seq, df_k)
# 피복확률이 1-alpha 에 가장 가까운 쌍
target_idx <- which.min(abs(probs - (1 - alpha_test)))
a_opt <- a_seq[target_idx]
b_opt <- b_seq[target_idx]
cat(sprintf("최단(f(a)=f(b)): [%.3f, %.3f], 길이 = %.3f\n",
a_opt, b_opt, b_opt - a_opt))
cat(sprintf("길이 감소: %.3f (%.1f%%)\n",
(hi_eq - lo_eq) - (b_opt - a_opt),
((hi_eq - lo_eq) - (b_opt - a_opt)) / (hi_eq - lo_eq) * 100))
# ── 3. 균등 분포 피복확률 비교 ───────────────────────────────────
n_u <- 5
theta_vals <- seq(1.5, 20, length.out = 200)
a_u <- 1; b_u <- 2 # 구간 A: [aY, bY]
c_u <- 0.5; d_u <- 1.5 # 구간 B: [Y+c, Y+d]
cov_A <- (1/a_u)^n_u - (1/b_u)^n_u
cov_B <- (1 - c_u/theta_vals)^n_u - (1 - d_u/theta_vals)^n_u
cat(sprintf("\n구간 A 피복확률 (θ 독립): %.4f\n", cov_A))
cat(sprintf("구간 B 피복확률 범위: [%.4f, %.4f]\n", min(cov_B), max(cov_B)))
cat(sprintf("구간 B 신뢰계수: %.4f (→ 0 as θ → ∞)\n", min(cov_B)))10 요약
| 개념 | 내용 |
|---|---|
| 피복확률 | \(P_\theta(\theta \in C(X))\) — \(\theta\) 의 함수, 랜덤 구간에 대한 진술 |
| 신뢰계수 | \(\inf_\theta P_\theta(\theta \in C(X))\) — 최악 시나리오 보장 |
| \(\theta\) 독립성 | 피벗 \(T(X,\theta)\) 의 분포가 \(\theta\) 에 무관할 때 달성 |
| 이산 분포 | 피복확률이 \(\theta\) 에 따라 진동, 항상 보수적(신뢰계수 \(\ge 1-\alpha\)) |
| 최단 구간 조건 | 단봉 pdf: \(f(a) = f(b)\) 및 최빈값이 \([a,b]\) 내부 |
| 척도 모수 수정 | \(f(b)b^2 = f(a)a^2\) — 길이 기준이 \(1/a - 1/b\) 로 달라짐 |
| 비대칭 단봉 | 등꼬리 분할이 최단이 아님 (\(\chi^2\), \(\text{Gamma}\) 등) |
11 관련 주제
- 구간 추정량 평가 방법 개요 — §9.3 전체 (UMA, Pratt, 손실함수)
- 피벗 양 (Pivotal Quantities) — 피복확률 \(\theta\) 독립성의 근거
- CDF 피벗팅 (Pivoting the CDF) — 이산 분포의 보수성 심화
12 참고 문헌
- Casella, G. & Berger, R. L. (2002). Statistical Inference (2nd ed.), §9.1.3, §9.3.1.
- Brown, L. D., Cai, T. T., & DasGupta, A. (2001). Interval estimation for a binomial proportion. Statistical Science, 16(2), 101–133.