두 개 이상의 다수 집단 간 평균은 비교하는 분산분석에서 이원배치 분산분석을 복습해 보자.
이 전엔 일원배치 분산분석(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 |
> 분석에 필요한 데이터와 상위데이터를 찍어본다.
> 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.
이원배치 분산분석은 일원배치 분산분석보다 봐야 할 것들이 많은 느낌이었다.
교호효과와 주효과를 둘 다 다룰 수 있기 때문인 것 같기도 하고, 이원배치 분산분석을 진행하는 코드도 좀 어색한 느낌이 분석하고 정리하는 내내 있었다.
그렇지만, 대부분의 통계분석이 그랬듯이 결과를 마주하게 되면 직관으로 본 결과와는 별개로 수치로써 결과가 도출되니 속 시원하고 새로운 인사이트를 마주하는 경험을 하게 된다.
이런 게 통계분석의 매력인 것 같다. 다루긴 어색하지만 결과는 깔끔한 분석이다.
'내가 하는 데이터분석 > 내가 하는 통계분석' 카테고리의 다른 글
[다중 회귀분석, Multiple Regression] - 다중공선성 with Python (0) | 2023.01.10 |
---|---|
[선형 회귀분석, Linear Regression] with Python (0) | 2023.01.08 |
[일원배치 분산분석, One-way ANOVA] with Python (0) | 2023.01.02 |
[독립표본 T-검정, Independent Sample T-Test] with Python (0) | 2022.12.29 |
[대응표본 T-검정, Paired Samles T-Test] with Python (2) | 2022.12.27 |