본문 바로가기
내가 하는 데이터분석/내가 하는 통계분석

[이원배치 분산분석, Two-way ANOVA] with Python

by Pymoon 2023. 1. 6.

두 개 이상의 다수 집단 간 평균은 비교하는 분산분석에서 이원배치 분산분석을 복습해 보자.

 

 

 

 

이 전엔 일원배치 분산분석(One-way ANOVA)에 대해서 정리해 보았다.

 

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

두 개 이상의 다수 집단 간 평균은 비교하는 분산분석에서 일원배치 분산분석을 복습해 보자. 기본가정 및 조건 정규성, 독립성을 만족한다 (아닐 시 Kruskal-Wallis test진행) 등분산성을 만족한다 (

py-moon.tistory.com

 

 

 

기본가정

  • 정규성, 독립성을 만족한다 (아닐 시 Friedman test진행)
  • 등분산성을 만족한다 (아닐 시 Welch`s ANOVA진행)
  • 종속변수는 1개 연속형, 독립변수는 2개 범주형
  • 사후검정 진행
  • 교호작용 효과(두 요인이 동시에 미치는 영향)

 


 

이원배치 분산분석은 iris데이터를 활용해서 정리하고자 한다.

 

 

 

1
2
3
4
import pandas as pd
 
mtcars = pd.read_csv('data/mtcars.csv')
mtcars.head()
cs

 

> 분석에 필요한 데이터와 상위데이터를 찍어본다.

 

 

 

mtcars.head()

> head를 사용해서 상위 5개의 데이터들과 변수들을 간략히 확인한다.

 

 

 

> 이번 정리요약에서는 정규성과 등분산성을 만족한다는 가정하에 진행하려 한다.

 

> 정규성과 등분산성을 검정하는 과정을 정리하는 것이 목적이 아니기에 넘어가고자 한다.

 

> 따라서 중간 과정을 생략하고 분산분석을 진행하고자 한다.

 

 


 

 

1
mtcars = mtcars[['mpg''am''cyl']]
cs

 

> 우선, 분석에 사용될 세 변수만을 따로 mtcars변수에 할당시켜 준다.

 

> mpg(주행거리)는 종속변수이고, am(변속기 종류), cyl(실린더 개수)는 독립변수이다.

 

> 아래는 이번 이원배치 분산분석에 검정할 가설들이다.

 

 

교호작용 검정


귀무가설 : am(변속기 종류) 변수와 cyl(실린더 개수) 변수 간에는 상호작용 효과가 없다.


대립가설 : am(변속기 종류)변수와 cyl(실린더 개수)변수 간에는 상호작용 효과가 있다.

 


주효과 검정 1


귀무가설 : cyl(실린더 개수) 변수에 따른 mpg(주행거리) 변수의 차이는 존재하지 않는다.


대립가설 : cyl(실린더 개수) 변수에 따른 mpg(주행거리) 변수의 차이는 존재한다.

 


주효과 검정 2


귀무가설 : am(변속기 종류) 변수에 따른 mpg(주행거리) 변수의 차이는 존재하지 않는다.


대립가설 : am(변속기 종류) 변수에 따른 mpg(주행거리) 변수의 차이는 존재한다.

 

 

 

 

1
2
3
4
5
6
7
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
 
formula = 'mpg ~ C(cyl) + C(am) + C(cyl):C(am)'
model = ols(formula, mtcars).fit()
aov_table = anova_lm(model, typ=2)
aov_table
cs

 

> 이원배치 분산분석을 진행하기 위해 선형회귀방정식을 사용하였다.

 

> 아래에는 위에 대한 결과이다.

 

 

 

 

> 위에서부터 차례로 주행거리와 실린더, 주행거리와 변속기 종류, 실린더와 변속기 종류에 대한 결과이다.

 

> 아래에서 결과에 대한 검정결과를 설명하고자 한다.

 

 

 

교호작용 검정 결과


유의확률이 0.2686으로 유의 수준(0.05) 보다 크므로 귀무가설 채택한다.

 

> 즉, 변속기 종류와 실린더 개수간에는 상호작용 효과가 없다.

 


주효과 검정 1 결과


유의확률이 유의 수준보다 낮으므로 귀무가설을 기각하고 대립가설을 채택한다.

 

> 즉, 실린더 개수에 따른 주행거리의 차이는 존재한다.

 


주효과 검정 2 결과 


유의확률 0.0561로 유의 수준(0.05) 보다 크므로 귀무가설 채택한다.

 

> 즉, 변속기 종류에 따른 주행거리의 차이는 존재하지 않는다.

 

 

 

교호작용 시각화

> 이원배치 분산분석에서 중요하게 다루는 교호작용에 대한 결과를 시각화해본 것이다.

 

> x축은 독립변수인 실린더 개수, y축은 종속변수인 주행거리의 평균, 두 종류로 구분되어 있는 두 선은 독립변수인 변속기 종류를 나타내고 있다.

 

> 일반적으로 교호작용을 시각화한 위와 같은 그래프에선 두 선이 서로 교차할 때 x축의 독립변수와 선으로 시각화된 독립변수 간에 상호작용이 존재한다고 해석한다.

 

 


 

OUTTRO.

 

 

이원배치 분산분석은 일원배치 분산분석보다 봐야 할 것들이 많은 느낌이었다.

 

교호효과와 주효과를 둘 다 다룰 수 있기 때문인 것 같기도 하고, 이원배치 분산분석을 진행하는 코드도 좀 어색한 느낌이 분석하고 정리하는 내내 있었다.

 

그렇지만, 대부분의 통계분석이 그랬듯이 결과를 마주하게 되면 직관으로 본 결과와는 별개로 수치로써 결과가 도출되니 속 시원하고 새로운 인사이트를 마주하는 경험을 하게 된다.

 

이런 게 통계분석의 매력인 것 같다. 다루긴 어색하지만 결과는 깔끔한 분석이다.