AI/Data Science

[ANOVA] 일원 / 이원분산분석 해보기 (상호작용항)

Linuxias 2023. 4. 20. 00:14
반응형

이 글에서는 이론은 다루지 않습니다.

 

일원분산분석 (One-way ANOVA)

일원분산분석에서 등분산 검정은 sklearn에 포함된 $bartlett()$을 이용하여 구할 수 있다. $bartlett()$ 함수의 시그니처는 아래와 같다.

Signature: bartlett(*samples)
Docstring:
Perform Bartlett's test for equal variances.

Bartlett's test tests the null hypothesis that all input samples
are from populations with equal variances.  For samples
from significantly non-normal populations, Levene's test
`levene` is more robust.

$bartlett()$은 t-test 검정을 다룰 때 많이 사용된다. $ttest_ind()$ 사용 시 등분산 여부를 입력하게 되는데 (파라미터 equal_var) 이때 모집단의 등분산 검정을 $bartlett()$의 결과를 해석하여 입력한다.

만약 $bartlett()$ 의 p-value가 유의수준 0.05를 넘지 못한다면, $H_{0}$ 귀무가설이 채택되어 등분산이라 판단할 수 있다. 

 

이원분산분석 (Two-way ANOVA)

요인이 두개 이상이고 그룹이 두개 이상인 경우이다. 요인간의 상호작용이 있는지 확인하고,  상호작용이 없을시 일원분산분석을 각각의 요인에 대해 수행한다. 일원분산분석처럼 statsmodels.formula.api.ols, statsmodels.stats.anova.anova_lm을 통해 측정 가능하다.

  • 독립변수 : C_var1, C_var2 (모두 범주형 변수)
  • 종속변수 : target

아래와 같은 코드를 이용하여 이원분산분석, 그 중에서 상호작용항의 정보를 구할 수 있다. 

from statsmodels.formula.api import ols
from statsmodels.api import stats

model = ols('target ~ C(C_var1) + C(C_var2) + C(C_var1):C(C_var2)', df).fit()
stats.anova_lm(model)

위 코드에서 C_var1과 C_var2 변수를 C로 감싼 것은 범주형 변수라는 것을 알려주는 것이다. 만약 범주형 변수에 C 로 감싸주지 않는다면 잘못된 값을 얻을 것이다.

위 코드를 실행하면 아래와 같은 결과를 얻을 수 있다.

index에 상호작용항 $C(C_var1):C(C_var2)$ 를 확인할 수 있다.

 

반응형