t-test

Seohyeon Park·2025년 4월 25일
0

Intro.

t-test는 두 집단의 평균이 통계적으로 유의미하게 다른지를 검정하기 위한 가설 검정 방법이다. 보통 표본 수가 작고(nn < 30), 모집단의 표준편차를 모를때 사용한다. 정규 분포가 아닌 t-분포를 기반으로 평균 차이를 검정 하는 방법이다.

t-test 가정.

  • 정규성 (Normality) : 표본이 추출된 모집단은 정규분포를 따른다고 가정한다.
  • 등분산성 (Homoscedasticity) - 독립표본 t-test의 경우 : 두 집단의 분산이 동일하다고 가정한다.
  • 독립성 (Independence) : 각 샘플은 독랍적이여야 한다.

t-test 종류.

1. 단일표본 t-test

하나의 표본 평균이 특정 기준값(모평균)과 유의미하게 다른지를 검정한다.

검정 종류H0H_0H1H_1설명
양측 검정μ=μ0\mu=\mu_0μμ0\mu \ne \mu_0평균 차이 여부 일반 검정
단측 (우측)μμ0\mu \le \mu_0μ>μ0\mu > \mu_0실험군이 더 높다고 주장
단측 (좌측)μμ0\mu \ge \mu_0μ<μ0\mu < \mu_0실험군이 더 낮다고 주장
t=xˉμ0s/nt=\frac{\bar{x}-\mu_0}{s/\sqrt{n}}
  • xˉ\bar{x} : 표본 평균
  • μ0\mu_0 : 기준 모평균 (비교 기준이 되는 모평균으로, 이미 알고 있거나 외부 자료 등을 기반으로 한다.)
  • ss : 표본 표준편차
  • nn : 표본 크기
# 예시: 고객 만족도 설문 평균이 3.5 이상인지 검정할 때 사용

from scipy import stats

sample = [3.6, 3.9, 3.4, 3.7, 3.5]

t_stat, p_val = stats.ttest_1samp(sample, popmean=3.5)

2. 독립표본 t-test

서로 독립적인 두 집단의 평균이 유의하게 다른지를 검정한다.

검정 종류H0H_0H1H_1설명
양측 검정μ1=μ2\mu_1=\mu_2μ1μ2\mu_1 \ne \mu_2평균 차이 여부 일반 검정
단측 (우측)μ1μ2\mu_1 \le \mu_2μ1>μ2\mu_1 > \mu_2실험군이 더 높다고 주장
단측 (좌측)μ1μ2\mu_1 \ge \mu_2μ1<μ2\mu_1 < \mu_2실험군이 더 낮다고 주장

보통, 단측 검정은 확실한 근거가 있을 경우 사용하며 특별한 사전 지식이 없다면 양측 검정을 기본으로 하는 것이 좋다. 섣부른 단측 검정에 사용은 검정력 오용에 대한 위험을 가질 수 있기 때문이다.

독립표본 t-test는 등분산을 가정하는 경우와 가정하지 않는 경우로 나눌 수 있다.

  1. 등분산 가정 (Equal Variance Assumption)

    t=x1ˉx2ˉsp1n1+1n2,sp2=(n11)s12+(n21)s22n1+n22t=\frac{\bar{x_1}-\bar{x_2}}{s_p\sqrt{\frac{1}{n_1}+\frac{1}{n_2}}},\quad s_p^2=\frac{(n_1-1)s_1^2+(n_2-1)s_2^2}{n_1+n_2-2}
  2. 등분산 가정 없음 (Welch’s t-test)

    t=x1ˉx2ˉs12n1+s22n2t=\frac{\bar{x_1}-\bar{x_2}}{\sqrt{\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}}}
  • x1ˉ,x2ˉ\bar{x_1},\bar{x_2} : 두 집단의 표본 평균
  • n1,n2n_1, n_2 : 각 집단의 표본 크기
  • sps_p : 두 집단의 pool된 표준편차
  • s12,s22s_1^2,s_2^2 : 각 집단의 표본 분산
# 예시: 남성과 여성 고객의 평균 소비 금액이 다른지 비교

from scipy import stats

group1 = [12, 15, 13, 14, 16]  # 남성 그룹
group2 = [10, 11, 12, 13, 12]  # 여성 그룹

# 등분산 가정 O
t_stat1, p_val1 = stats.ttest_ind(group1, group2, equal_var=True)

# 등분산 가정 X
t_stat2, p_val2 = stats.ttest_ind(group1, group2, equal_var=False)

등분산

등분산의 가정은 두 모집단의 분산이 같다는 가정이다. (H0:σ12=σ22H_0 : \sigma_1^2=\sigma_2^2) 이 가정을 기반으로 pool된 분산 sps_p를 사용하는 것이 가능하며, 등분산을 가정하면 더 간단하고 검정력이 높은 t-통계량을 쓸 수 있지만, 실제로는 모집단 분산이 다를 수 있으므로 사전 확인이 필요하다.

  1. Levene’s Test (르빈 검정) : 분산의 동질성을 검정하며, 정규성에 대한 가정이 없어 실무에서 널리 사용되는 방식이다.
    1. 각 그룹의 중앙값을 구한다.
    2. 각 관측값에서 중앙값의 절대 편차를 구한다. → Zij=XijXjˉZ_{ij}=|X_{ij}-\bar{X_j}|
    3. ZijZ_{ij} 값을 대상으로 ANOVA를 수행하여 FF-valuevalue 값을 도출한다.
    4. p<0.05p<0.05 라면, 등분산이 아니고 p0.05p \ge 0.05 라면, 등분산을 가정할 수 있다.
from scipy.stats import levene

group1 = [12, 15, 13, 14, 16]
group2 = [10, 11, 12, 13, 12]

stat, p_value = levene(group1, group2)
  1. Bartlett’s Test (바틀렛 검정) : 정규분포를 가정한 분산 동질성 검정이므로 정규성에 매우 민감하다.

    X2=(Nlnsp2nilnsi2)1+13(k1)(1ni11Nk),N=niX^2=\frac{(N\ln{s_p^2-\sum{n_i\ln s_i^2}})}{1+\frac{1}{3(k-1)}(\sum{\frac{1}{n_i-1}}-\frac{1}{N-k})}, \quad N=\sum{n_i}
  • sp2s_p^2 : 공통 분산
  • si2s_i^2 : 각 집단의 분산
  • nin_i : 각 집단의 크기
from scipy.stats import bartlett
    
group1 = [12, 15, 13, 14, 16]
group2 = [10, 11, 12, 13, 12]

stat, p_value = bartlett(group1, group2)

3. 대응표본 t-test

같은 대상에 대해 전후 변화를 측정할 때 사용하거나 메칭 된 쌍 간의 차이를 비교하기 위해 사용한다. 즉 같은 대상에 대상의 2가지 시점을 비교 하므로, “운동 전/후 혈압 측정 값을 비교”하거나, “광고 노출 전/후 클릭률 비교” 등에 활용할 수 있다.

H0:μD=0H_0:\mu_D=0 (쌍별 차이의 평균은 0), H1:μD0H_1:\mu_D \ne 0

t=dˉsdnt=\frac{\bar{d}}{s_d\sqrt{n}}
  • dˉ\bar{d} : 차이의 평균
  • sds_d : 차이의 표준 편차
  • nn : 쌍의 수
# 예시: 광고 노출 전/후 클릭률 비교

from scipy import stats

before = [120, 122, 121, 119]
after = [115, 117, 118, 116]

t_stat, p_val = stats.ttest_rel(before, after)
profile
카페에서 한줄 한줄

0개의 댓글