Analysis of variance (ANOVA, 분산 분석) is a collection of statistical models and their associated procedures (such as "variation" among and between groups) used to analyze the differences among group means. (https://en.wikipedia.org/wiki/Analysis_of_variance)
두 개 이상 다수의 집단을 비교하고자 할 때 집단 내의 분산, 총평균과 각 집단의 평균의 차이에 의해 생긴 집단 간 분산의 비교를 통해 만들어진 F-distribution을 이용하여 가설 검정을 하는 방법이다.
ANOVA로 그룹간 차이가 유의하다고 알려지면, 그 가운데 어떤 그룹들이 차이가 있는지 사후 검정(Post-Hoc test, Multiple Comparison)할 수 있다. 다음과 같은 방법들이 알려져 있다.
- Tukey: 공학분야에서 가장 많이 사용 (Python StatsModels 모듈에서 제공)
- Duncan: 사회과학, 설문조사에서 많이 사용
- Scheffe
- LSD
- Bonferroni
- Sidak
StatsModels로 TukeyHSD 구현시 p-value가 출력되지 않는다. 함께 제공되는 psturng 함수를 이용하여 구할 수 있다. R의 계산 값과 거의 차이가 없다. (Multiple Comparison and Tukey HSD or why statsmodels is awful)
#!python
from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.stats.libqsturng import psturng
tukey = pairwise_tukeyhsd(endog=endog, groups=groups, alpha=0.05)
tukey_data = tukey.summary().data
tukey_p = psturng(np.abs(tukey.meandiffs / tukey.std_pairs),
len(tukey.groupsunique), tukey.df_total)
tukey_df = pd.DataFrame(tukey_data[1:], columns=tukey_data[0])
tukey_df['p-value'] = tukey_p