iBetter Books
수정

가장 흔한 오해부터 바로잡기

95% 신뢰구간을 구하면 많은 사람들이 이렇게 말합니다.

"모수가 이 구간 안에 있을 확률이 95%다."

이 해석은 틀렸습니다. 왜 틀렸는지 이해하려면 확률의 의미를 다시 생각해야 합니다.

모수 μ는 고정된 값입니다. 예를 들어 모평균이 정확히 52.3이라고 합시다. 이미 52.3으로 고정되어 있는 값이 어떤 구간 안에 "있을 확률"을 따지는 것은 의미가 없습니다. 52.3이 (50, 55) 안에 있는 것은 "확률이 100%"가 아니라 그냥 "있다"이고, (60, 65) 안에 있는 것은 "확률이 0%"가 아니라 그냥 "없다"입니다.

올바른 해석

95% 신뢰구간의 정확한 의미는 이렇습니다.

"같은 방법으로 표본을 100번 추출해서 신뢰구간을 100번 만들면, 그 중 약 95개의 구간이 모수를 포함한다."

즉, "확률 95%"는 모수에 붙는 것이 아니라 구간을 만드는 방법(절차)에 붙는 겁니다. 특정 구간 하나가 모수를 포함하는지는 알 수 없습니다. 그냥 포함하거나, 포함하지 않거나 둘 중 하나입니다.

이것이 추론통계에서 가장 많이 오해되는 개념 중 하나입니다.

시뮬레이션으로 직접 확인하기

말로 이해하기 어렵다면 시뮬레이션으로 눈으로 봅시다. 모평균이 50인 모집단에서 표본을 100번 뽑고, 매번 95% 신뢰구간을 구합니다.

set.seed(123)

# 모수: 진짜 모평균
true_mean <- 50
n_simulations <- 100
n_per_sample <- 30

# 100번 표본 추출 및 신뢰구간 계산
results <- data.frame(
  sim = 1:n_simulations,
  lower = NA,
  upper = NA,
  contains = NA
)

for (i in 1:n_simulations) {
  x <- rnorm(n_per_sample, mean = true_mean, sd = 10)
  ci <- t.test(x)$conf.int
  results$lower[i] <- ci[1]
  results$upper[i] <- ci[2]
  results$contains[i] <- (ci[1] <= true_mean & true_mean <= ci[2])
}

# 모수를 포함한 구간의 비율
cat("모수를 포함한 구간:", sum(results$contains), "/ 100\n")
모수를 포함한 구간: 95 / 100

100개 중 95개가 모수를 포함했습니다. 95% 신뢰구간의 의미가 바로 이것입니다.

시뮬레이션 시각화

library(ggplot2)

# 시각화용 데이터 준비
results$color <- ifelse(results$contains, "포함", "불포함")
results$sim_factor <- factor(results$sim)

ggplot(results, aes(x = sim, y = (lower + upper) / 2,
                    ymin = lower, ymax = upper, color = color)) +
  geom_pointrange(size = 0.3) +
  geom_hline(yintercept = true_mean, color = "red", linewidth = 1,
             linetype = "dashed") +
  scale_color_manual(values = c("포함" = "steelblue", "불포함" = "tomato")) +
  labs(
    title = "95% 신뢰구간 100회 시뮬레이션",
    subtitle = "빨간 점선 = 진짜 모수(μ = 50), 빨간 구간 = 모수를 놓친 경우",
    x = "시뮬레이션 번호",
    y = "구간",
    color = "모수 포함 여부"
  ) +
  coord_flip() +
  theme_minimal()

그래프를 보면 대부분의 파란 구간이 빨간 점선(모수)을 가로지르고, 빨간 구간 몇 개가 모수를 비껴갑니다. 특정 구간 하나를 봤을 때 그것이 파란지 빨간지는 알 수 없습니다. 하지만 이 방법을 반복하면 약 95%는 맞춥니다.

신뢰구간이 0을 포함하는지가 중요한 이유

두 집단의 평균 차이에 대한 신뢰구간이 0을 포함하면 어떤 의미일까요.

data(sleep)

# 두 그룹의 차이에 대한 신뢰구간
result <- t.test(extra ~ group, data = sleep)
cat("평균 차이:", diff(result$estimate), "\n")
cat("95% 신뢰구간:", result$conf.int[1], "~", result$conf.int[2], "\n")
평균 차이: -1.58 
95% 신뢰구간: -3.365826 ~ 0.205826

95% 신뢰구간이 (-3.37, 0.21)로 0을 포함합니다. "두 그룹 간 차이가 0일 가능성을 배제할 수 없다"는 뜻입니다. 이 신뢰구간 해석이 다음 장에서 배울 가설검정과 직접 연결됩니다.

신뢰구간 vs p-값

신뢰구간과 p-값은 동전의 양면입니다. 95% 신뢰구간이 0을 포함하지 않는 것은 유의수준 5%에서 귀무가설을 기각하는 것과 동일합니다.

신뢰구간이 0 포함 p-값 비교 해석
포함하지 않음 p < 0.05 유의한 차이 있음
포함함 p ≥ 0.05 유의한 차이 없음

하지만 신뢰구간은 p-값보다 더 많은 정보를 줍니다. p-값은 "유의한가, 아닌가"만 알려주지만, 신뢰구간은 효과의 범위와 방향까지 보여줍니다. 논문에서 p-값만 보고하기보다 신뢰구간을 함께 보고하는 것이 좋은 이유가 여기에 있습니다.

구간이 좁을수록 좋은가

좁은 신뢰구간은 정밀한 추정을 의미합니다. 하지만 구간을 좁히려면 표본 크기를 늘리거나 신뢰수준을 낮춰야 합니다.

# ToothGrowth: 전체 vs 절반 표본에서의 신뢰구간 비교
data(ToothGrowth)

ci_full <- t.test(ToothGrowth$len)$conf.int
ci_half <- t.test(ToothGrowth$len[1:30])$conf.int

cat("전체 표본(n=60) CI:", round(ci_full, 2), "\n")
cat("절반 표본(n=30) CI:", round(ci_half, 2), "\n")
cat("전체 CI 너비:", round(diff(ci_full), 2), "\n")
cat("절반 CI 너비:", round(diff(ci_half), 2), "\n")
전체 표본(n=60) CI: 16.84 20.79 
절반 표본(n=30) CI: 15.49 21.08 
전체 CI 너비: 3.95 
절반 CI 너비: 5.59

표본이 절반으로 줄었을 때 신뢰구간 너비가 3.95에서 5.59로 넓어졌습니다. 정밀한 추정을 원한다면 충분한 표본이 필요합니다.