iBetter Books
수정

모수와 통계량, 무엇이 다른가

어떤 대학의 전체 학생 1만 명의 평균 통학 시간을 알고 싶습니다. 1만 명 모두에게 물어볼 수 있다면 좋겠지만, 현실에서는 100명을 뽑아 조사합니다. 이때 "1만 명의 진짜 평균"이 모수(parameter)이고, "100명 표본에서 계산한 평균"이 통계량(statistic)입니다.

개념 기호 설명
모평균 μ (뮤) 모집단 전체의 평균. 알 수 없는 값
표본평균 x̄ (엑스바) 표본에서 계산한 평균. 우리가 실제로 구하는 값
모분산 σ² (시그마 제곱) 모집단 전체의 분산. 알 수 없는 값
표본분산 표본에서 계산한 분산. n-1로 나눔
모비율 p 모집단의 비율. 알 수 없는 값
표본비율 p̂ (p-hat) 표본에서 계산한 비율

모수는 고정된 값이지만, 우리는 그 값을 모릅니다. 통계량은 표본마다 달라집니다. 100명을 또 다른 100명으로 교체하면 표본평균도 달라집니다. 추론통계의 목표는 이 달라지는 통계량으로 고정된 모수를 최대한 정확하게 추정하는 것입니다.

점추정이란

점추정(point estimation)은 모수를 하나의 숫자로 추정하는 방법입니다. "이 모집단의 평균은 약 52.3분입니다"처럼 딱 하나의 값을 제시합니다.

표본평균 x̄는 모평균 μ의 좋은 점추정량입니다. 통계학에서 "좋은 추정량"이란 편향이 없고(불편성), 표본이 많을수록 모수에 가까워지는(일치성) 성질을 가집니다.

하지만 점추정에는 치명적인 약점이 있습니다. "52.3분"이라고 했을 때 그 추정이 얼마나 정확한지 알 수 없습니다. 여기서 구간추정이 등장합니다.

표본오차와 표준오차

표본을 다시 추출하면 다른 통계량이 나옵니다. 이 변동성을 수치로 표현한 것이 표준오차(standard error, SE)입니다.

표본평균의 표준오차는 다음과 같이 계산합니다.

SE=snSE = \frac{s}{\sqrt{n}}

여기서 s는 표본표준편차, n은 표본 크기입니다. 표본이 클수록 SE가 작아집니다. 표본 크기가 4배 늘면 SE는 절반으로 줄어듭니다.

# sleep 데이터: 수면 증가량(extra)
data(sleep)

# 그룹 1의 데이터 추출
group1 <- sleep$extra[sleep$group == 1]

# 점추정: 표본평균
x_bar <- mean(group1)
cat("표본평균:", x_bar, "\n")

# 표준오차 계산
n <- length(group1)
s <- sd(group1)
se <- s / sqrt(n)
cat("표준오차:", se, "\n")
표본평균: 0.75
표준오차: 0.5765...

신뢰구간의 개념과 공식

신뢰구간(confidence interval, CI)은 모수가 포함될 것으로 기대되는 범위를 제시합니다. 95% 신뢰구간은 다음 공식으로 계산합니다.

xˉ±t×SE\bar{x} \pm t^* \times SE

여기서 t*는 t-분포의 임계값으로, 자유도(df = n-1)와 신뢰수준에 따라 결정됩니다. 표본 크기가 충분히 크면(n ≥ 30) z-분포의 1.96을 사용하기도 합니다.

# t.test()로 신뢰구간 구하기
result <- t.test(group1)
result
	One Sample t-test

data:  group1
t = 1.3009, df = 9, p-value = 0.2257
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.5297804  2.0297804
sample estimates:
mean of x 
     0.75

95% 신뢰구간이 (-0.53, 2.03)으로 나왔습니다. 점추정값인 0.75 주변으로 불확실성의 범위를 보여줍니다.

confint()로 다양한 신뢰수준 탐색

t.test()는 기본적으로 95% 신뢰구간을 제공합니다. confint() 함수나 conf.level 인자를 조정하면 다른 신뢰수준의 구간을 구할 수 있습니다.

# 신뢰수준 변경
t.test(group1, conf.level = 0.90)$conf.int  # 90% 신뢰구간
t.test(group1, conf.level = 0.95)$conf.int  # 95% 신뢰구간
t.test(group1, conf.level = 0.99)$conf.int  # 99% 신뢰구간
[1] -0.2888... 1.7888...  # 90% CI (좁음)
[1] -0.5297... 2.0297...  # 95% CI
[1] -1.2043... 2.7043...  # 99% CI (넓음)

신뢰수준을 높이면 구간이 넓어집니다. 99% 신뢰구간은 매우 넓어서 모수를 거의 포함하지만, 그만큼 정보 가치가 줄어듭니다. 90% 신뢰구간은 좁지만 틀릴 위험이 높아집니다. 대부분의 연구에서는 95%가 관례입니다.

선형회귀의 신뢰구간

회귀분석에서도 confint() 함수로 계수(coefficient)의 신뢰구간을 구할 수 있습니다.

# ToothGrowth 데이터: 비타민 C 용량과 치아 성장
data(ToothGrowth)

# 선형회귀 모델
model <- lm(len ~ dose, data = ToothGrowth)
summary(model)

# 회귀계수의 95% 신뢰구간
confint(model)
               2.5 %   97.5 %
(Intercept) 8.008...  13.952...
dose        8.007...  11.513...

용량(dose) 계수의 95% 신뢰구간이 (8.01, 11.51)입니다. 0을 포함하지 않으므로 용량과 치아 성장 사이에 유의한 양의 관계가 있다고 판단합니다.

표본 크기가 신뢰구간에 미치는 영향

표본이 클수록 신뢰구간이 좁아집니다. 이를 직접 시뮬레이션으로 확인해봅니다.

set.seed(42)

# 서로 다른 표본 크기에서의 신뢰구간 너비
sample_sizes <- c(10, 30, 100, 500)
ci_widths <- sapply(sample_sizes, function(n) {
  x <- rnorm(n, mean = 50, sd = 10)
  ci <- t.test(x)$conf.int
  ci[2] - ci[1]  # 구간 너비
})

data.frame(
  표본크기 = sample_sizes,
  CI너비 = round(ci_widths, 3)
)
  표본크기 CI너비
1       10 14.234
2       30  7.218
3      100  3.875
4      500  1.743

표본이 10일 때 CI 너비가 약 14.2이지만, 500이 되면 1.7로 줄어듭니다. 정확한 추정을 원한다면 충분한 표본이 필수입니다.