
통계 검정(t-test, ANOVA)를 검정하기전에 등분산 가정을 만족해야 한다는 가정이 들어가는 것을 볼 수 있습니다.
A반과 B반의 시험 성적 평균을 비교한다고 가정해 봅시다.
A반: 난이도 조절 실패로 엄청난 '불시험'이었습니다. (점수 편차가 큼, 분산 큼)
B반: 변별력 없는 '물시험'이었습니다. (점수가 다들 비슷비슷함, 분산 작음)
이때 단순히 두 반의 평균만 비교해서 "B반이 더 공부를 잘한다"라고 결론 내릴 수 있을까요?
직관적으로도 결과가 왜곡될 수 있음이 느껴집니다. 통계적으로 두 집단을 비교하려면 '비교를 위한 공통된 잣대(Scale)'가 필요합니다. A반은 촘촘하게 모여 있고, B반은 넓게 퍼져 있다면 서로 다른 자를 대고 길이를 재는 것과 같습니다.
즉, 등분산 가정은 "두 집단의 퍼짐 정도가 비슷하니, 동일한 기준으로 평균 차이를 비교해도 안전하다"는 것을 보장하는 장치입니다.
등분산 검정은 우리가 흔히 접하는 가설 검정과는 '원하는 바'가 반대라 처음에는 헷갈릴 수 있습니다.
보통 연구자들은 p-value가 0.05보다 작게 나와서 귀무가설을 기각하고 싶어 하지만, 등분산 검정에서는 반대입니다.
"p-value가 0.05보다 커야(기각되지 않아야) 등분산 가정을 만족한다고 보고, 안심하고 다음 분석(t-test 등)을 진행할 수 있다."
등분산성을 확인하는 대표적인 방법으로 Bartlett 검정(Bartlett's Test)이 있습니다.
k개의 서로 다른 집단이 동일한 분산을 가지고 있는지 통계적으로 검정하는 기법입니다. 각 집단의 표본 분산()에 로그를 취한 값들의 가중 평군을 이용합니다.
Tip: 데이터가 정규분포가 아니라면 'Levene 검정(Levene's Test)'을 사용하는 것이 좋습니다.

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid")
np.random.seed(42)
# A반 (불시험)
group_a = np.random.normal(loc=60, scale=5, size=100)
# B반 (물시험)
group_b = np.random.normal(loc=63, scale=7, size=100)
stat, p_value = stats.bartlett(group_a, group_b)
print(f"Bartlett 검정 통계량: {stat:.4f}")
print(f"p-value: {p_value:.10f}") # 매우 작은 값이 나올 것임
# equal_var=False 로 설정 (Welch's t-test)
# t_stat, t_p = stats.ttest_ind(group_a, group_b, equal_var=False)
# equal_var=True 로 설정 (Student's t-test)
# t_stat, t_p = stats.ttest_ind(group_a, group_b, equal_var=True)