ANOVA란?


ANOVA

Summary

  • 3개 이상의 집단(표본)이 동일한 모집단에서 샘플링된 것인지 확인할 수 있는 확률적 가이드라인을 잡아주는 기법
  • t-test는 2개의 집단에서만 본 것과 차별점.
  • F-stat을 결과값으로 하고 해석은 ‘적어도 한 집단은 모집단에서 추출되었을 확률이 낮다.‘로 할 수 있음.
  • 그렇다면 모집단에서 나오지 않은 것으로 추정되는 표본을 찾을 수 있냐? Post-hoc(사후 검정)

Implementation

import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
import pandas as pd
 
df = pd.DataFrame({ # Data sample
	'score': [10, 12, 13, 15, 20, 21, 19, 25, 28],
	'group': ['A','A','A','B','B','B','C','C','C']
})
 
# OLS(Ordinary Least Square) model fit.
# C means categorical value
# score: dependent var
# group: independent var
model = ols('score ~ C(group)', data=df).fit() 
 
# generate ANOVA table 
anova_table = sm.stats.anova_lm(model, typ=2) 
print(anova_table)

Relationship between ANOVA and OLS


NOTE

ANOVA는 OLS 의 일종. 아래와 같이 수식적으로 표현 가능.

  • : 전체 평균
  • : 그룹 i의 효과
  • : 오차항

조금 더 자세히 알아보자.

Example

아래와 같은 데이터 셋이 있다 가정하자.

idxfeature1y
1A5
2A7
3B9
4B11
5C13
6C15

Recap: ANOVA는 기본적으로 categorical independent var를 위한 regression!

ANOVA는 matrix form으로 다음과 같이 써질 수 있는데,

관례 상 회귀 시 한 group을 baseline으로 잡고, 나머지 그룹 간 차를 변수로 두는 경우가 많은데 여기선 A를 baseline으로 set.

그렇다면, Dummy는 이렇게 잡을 수 있음.

그렇다면, 이제 데이터와 기울기는

물론 위의 는 baseline 대비 임.

model이 fitting하는 건, 위 식을 통해 예측한 각 y 값과 ground_truth 간 RSS 혹은 LS를 minimizing 함.

원본 링크

Post-hoc 이란?


  • ANOVA가 말해주는 건 ‘적어도 한 쌍에대해 통계적으로 모집단이 유의미하게 다르다.‘인데, 궁금한 건 ‘그래서 어떠한 쌍이 다른 건데?‘일 떄 답을 줌.
  • 방법이 여러 개 있는데 아래 표를 참고.

  • 붉은 표시: 자주 사용되는 method.

Post-hoc method 별 특징