t-검정 선택법: 단일표본·대응표본·Welch 검정의 적용 기준

단일표본, 대응표본, Welch t-검정의 가정과 자유도, 신뢰구간, 효과크기, 검정력 해석 및 실무 적용 기준을 정리한다.

2026-08-14 · 최초 발행 2024-04-29

t-검정은 모분산 σ를 알 수 없는 상황에서 평균 또는 평균 차이를 다루는 추론 통계 기법이다. 작은 표본에도 적용할 수 있지만, 데이터가 독립인지, 같은 대상에서 반복 측정한 값인지, 두 집단의 분산이 다른지가 검정 선택을 좌우한다.

데이터 구조에 따라 달라지는 검정

단일표본 t-검정은 표본평균 x̄가 가설 모평균 μ0와 다른지를 확인한다. 검정통계량은 t = (x̄ − μ0) / (s / √n)이고 자유도는 df = n − 1이다. 정규성 가정이 충족되거나 중심극한정리에 따른 근사가 가능한 경우에 사용한다.

대응표본 t-검정은 동일 개체의 전·후 측정값이나 사전에 연결된 쌍을 비교한다. 각 쌍의 차이 di = Xi − Yi를 만들고 이를 단일표본 t-검정처럼 처리한다. 통계량은 t = d̄ / (sd / √n), 자유도는 df = n − 1이며, 핵심 가정은 원자료가 아니라 차이분포의 정규성이다.

Welch t-검정은 서로 독립인 두 집단의 평균 차이를 비교할 때 등분산 가정을 요구하지 않는다. t = (x̄1 − x̄2) / sqrt(s1²/n1 + s2²/n2)를 사용하고, 자유도는 Welch–Satterthwaite 근사로 구한다. 표본 크기가 불균형하거나 분산이 다른 환경에서 Type I error를 제어하는 데 견고하다.

검정의 기본 흐름은 영가설과 대립가설을 세운 뒤 검정통계량과 자유도를 계산하고, p값 및 신뢰구간을 확인해 의사결정으로 이어가는 방식이다. 실무 보고에는 Cohen’s d와 95% 신뢰구간을 함께 두는 편이 낫다.

가정을 확인한 뒤 검정을 고른다

독립성 및 정규성은 세 검정 모두에서 점검해야 한다. 단일표본과 대응표본에서는 Shapiro–Wilk로 정규성을 확인할 수 있다. Welch 검정은 등분산 가정이 필요 없지만 정규성의 중요성까지 사라지는 것은 아니다.

중간 규모 표본에서 정규성 위반이 확인되면 Wilcoxon signed-rank 또는 Mann–Whitney U 같은 비모수 대안을 고려한다. 이상치에도 민감하므로 Trimmed mean t-test, Yuen’s test 같은 로버스트 대안이나 부트스트랩 CI 병행 보고가 가능하다. 반복 측정 설계라면 작은 n의 반복측정까지 다루는 혼합모형으로 확장할 수 있다.

단일표본 및 대응표본 검정은 df = n − 1로 자유도가 명확하다. 반면 Welch 검정은 가중분산 구조를 반영한 근사 자유도를 사용한다. 소표본, 이분산, 불균형 표본에서는 검정력의 보수성보다 오류율 통제가 우선될 수 있다.

신뢰구간·효과크기·검정력을 함께 본다

평균 차이의 95% 신뢰구간은 결과의 실질적 해석 범위를 보여 준다. 단일표본과 대응표본의 Cohen’s d는 d = (차이평균)/표준편차로 나타낼 수 있고, 독립 2표본에서는 소표본 보정이 가능한 Hedges’ g를 권장한다.

p값만으로 판단하지 않고 효과크기와 신뢰구간을 함께 보고하면 통계적 유의성과 실질적 중요도를 동시에 검토할 수 있다. 사전 설계에서는 목표 효과크기, 유의수준(α), 원하는 검정력(1−β)을 기준으로 표본 크기를 산출한다. Welch 검정은 이분산 상황에서 보수적일 수 있어 같은 효과크기에서 더 큰 표본이 필요할 가능성이 있다.

비교 항목 모평균 t-검정(σ 미지) 대응표본 t-검정 Welch t-검정
검정력 가정 충족 시 높음 차이변수 변동 축소로 상대적 우수 등분산 위반에서 오류율 제어, 검정력은 보수적
적용 범위 단일 집단 평균 검정 사전-사후, 매칭쌍 데이터 이분산·불균형 표본 독립 2집단
Type I error 정규성 위반 시 저하 차이분포 정규성 위반 시 저하 이분산에서도 일관성 유지
이상치 영향 이상치 민감 쌍 내 이상치 영향 큼 이상치 민감, 분산 불균형에 견고
구현·해석 매우 용이 쌍 매칭 검증 필요 옵션 설정만으로 용이, df 해석 주의

입력부터 결과 해석까지의 흐름

대응/쌍 데이터독립 1표본독립 2표본YesNo/불확실정규성 위반/표본작음입력: 데이터셋 X,(Y)전처리: 결측/이상치 점검가정 점검: 독립성,Shapiro-Wilk 정규성설계 유형대응표본 t-검정: d = X-Y단일표본 t-검정: μ0와 비교등분산성? LeveneStudent 2표본 t-검정Welch t-검정(equal_var=False)출력: t, df, p, 95% CI,효과크기대안: 비모수/부트스트랩의사결정: α와 사업 맥락 기반실무 판단

평균 비교가 쓰이는 장면

제조 공정에서는 목표 두께 μ0와 일일 샘플 평균의 차이를 단일표본 t-검정으로 확인할 수 있다. 공차 이탈을 조기에 감지하고 라인 교정 의사결정의 근거를 마련하는 용도다.

앱 기능 A/B 테스트 초기에는 트래픽 배분이 불균형하고 분산 차이가 큰 상태에서 평균 체류시간을 비교할 수 있다. 이 경우 Welch 검정은 등분산 가정을 두지 않고 오류율을 통제하면서 실험 반복을 지원한다.

치료 전·후 효과 측정에서는 동일 환자의 개입 전·후 지표 차이를 대응표본 t-검정으로 분석한다. 개인 내 변동을 제거해 작은 표본에서도 효과 검출력을 확보할 수 있다.

성능 벤치마크에서는 반복 실행 시간의 정규성과 이상치를 확인한 뒤 Welch 검정 또는 로버스트 대안을 선택한다. 효과크기와 신뢰구간을 함께 제시하면 성능 개선이 갖는 실질적 의미를 전달할 수 있다.

목표 α=0.05, 검정력 80%를 기준으로 사전 표본 크기를 산출하면 재실험 비용을 줄일 수 있다. Welch 검정을 적용하면 등분산 위반 환경에서도 Type I error를 안정적으로 유지할 수 있다. 가정 적합성에 맞춰 검정을 고르고 p값·신뢰구간·효과크기를 함께 보고하는 방식은 결과 신뢰성과 의사결정 품질을 높인다.

Python으로 검정과 진단 실행하기

환경은 Python 3.10+, scipy >= 1.10, statsmodels >= 0.14를 기준으로 한다.

# pip install scipy statsmodels numpy pandas
import numpy as np
from scipy import stats
from statsmodels.stats.power import TTestIndPower, TTestPower

np.random.seed(7)

# 1) 단일표본 t-검정 (μ0 = 100)
x = np.array([98, 101, 99, 102, 97, 100, 103, 96, 99, 101], dtype=float)
mu0 = 100.0
t1 = stats.ttest_1samp(x, popmean=mu0, alternative='two-sided')
print("One-sample t:", t1)

# 2) 대응표본 t-검정 (전/후)
pre  = np.array([72, 70, 68, 69, 71, 73, 74, 70], dtype=float)
post = np.array([75, 73, 70, 72, 74, 74, 76, 72], dtype=float)
t2 = stats.ttest_rel(pre, post, alternative='greater')  # 개선 여부 검정
print("Paired t:", t2)

# 3) Welch t-검정 (이분산/불균형)
A = np.random.normal(50, 10, size=20)
B = np.random.normal(55, 15, size=35)
t3 = stats.ttest_ind(A, B, equal_var=False, alternative='two-sided')
print("Welch t:", t3)

# 간단 진단: 정규성(Shapiro), 등분산(Levene)
print("Shapiro A:", stats.shapiro(A))
print("Shapiro B:", stats.shapiro(B))
print("Levene A vs B:", stats.levene(A, B, center='median'))

# 효과크기(Cohen's d)
def cohens_d_one_sample(x, mu0):
    return (np.mean(x) - mu0) / np.std(x, ddof=1)

def cohens_d_paired(pre, post):
    d = post - pre
    return np.mean(d) / np.std(d, ddof=1)

def hedges_g_welch(A, B):
    # Hedges' g (pooled) 대략치: 표준화 분모를 두 집단 표준편차의 평균으로 근사
    s = np.sqrt(((np.var(A, ddof=1) + np.var(B, ddof=1)) / 2))
    g = (np.mean(B) - np.mean(A)) / s
    # 소표본 보정
    df = len(A) + len(B) - 2
    J = 1 - (3 / (4*df - 1))
    return J * g

print("Cohen's d (one-sample):", cohens_d_one_sample(x, mu0))
print("Cohen's d (paired):", cohens_d_paired(pre, post))
print("Hedges' g (Welch approx):", hedges_g_welch(A, B))

# 표본 크기 산출 예시: 독립 2표본, 양측, 효과크기 d=0.5, alpha=0.05, power=0.8
power_ind = TTestIndPower()
n_per_group = power_ind.solve_power(effect_size=0.5, alpha=0.05, power=0.8, ratio=1.0, alternative='two-sided')
print("필요 표본(그룹당):", np.ceil(n_per_group))

데이터 독립성 가정 충족 여부를 먼저 확인한다. 정규성이 약하면 비모수 검정 또는 부트스트랩 CI를 병행한다.

R에서 같은 검정 수행하기

R 4.2+와 기본 stats 패키지로 단일표본, 대응표본, Welch 검정을 실행할 수 있다.

# base R stats
x <- c(98,101,99,102,97,100,103,96,99,101)
t.test(x, mu = 100, alternative = "two.sided")  # 단일표본

pre  <- c(72,70,68,69,71,73,74,70)
post <- c(75,73,70,72,74,74,76,72)
t.test(pre, post, paired = TRUE, alternative = "greater")  # 대응표본

A <- rnorm(20, mean = 50, sd = 10)
B <- rnorm(35, mean = 55, sd = 15)
t.test(A, B, var.equal = FALSE)  # Welch

사전 설계 단계에서 효과크기 가정, α와 파워 설정, 표본 크기 산출을 함께 수행한다. 운영 단계에서는 정규성·등분산·이상치·결측치 진단을 표준 절차로 두고, 보고에는 t, df, p, 95% CI, 효과크기를 함께 기록한다.

Welch 검정은 오류율 견고성과 검정력 보수성 사이의 선택이다. 대응표본 검정은 쌍 매칭 정확성을 확보해야 하는 대신 수집 난이도가 커질 수 있다. 소표본에서는 정규성 의존도가 높으므로 비모수 검정이나 부트스트랩 병행으로 보완한다.

데이터 구조와 가정 적합성을 기준으로 단일표본, 대응표본, Welch 검정을 구분해 적용한다. Welch 검정은 이분산·불균형 표본에서 기본값처럼 고려하고, 등분산이 확실할 때만 Student 2표본 검정을 적용한다.

t-검정Welch 검정대응표본통계적 추론효과크기