Python에서 양방향 anova를 수행하는 방법


양방향 ANOVA는 두 요인으로 분할 된 3개 이상의 독립 그룹 평균 간에 통계적으로 유의미한 차이가 있는지 여부를 확인하는 데 사용됩니다.

양방향 분산 분석의 목적은 두 요인이 반응 변수에 미치는 영향을 확인하고 두 요인 사이에 반응 변수에 대한 상호 작용이 있는지 여부를 확인하는 것입니다.

이 튜토리얼에서는 Python에서 양방향 ANOVA를 수행하는 방법을 설명합니다.

예: Python의 양방향 ANOVA

한 식물학자는 햇빛 노출과 물주기 빈도가 식물 성장에 영향을 미치는지 알고 싶어합니다. 그녀는 30개의 씨앗을 심고 햇빛 노출과 물 주기 등 다양한 조건에서 두 달 동안 씨앗이 자라게 합니다. 두 달 후에 그녀는 각 식물의 높이를 인치 단위로 기록했습니다.

다음 단계를 사용하여 양방향 ANOVA를 수행하여 물 주는 빈도와 태양 노출이 식물 성장에 중요한 영향을 미치는지 확인하고 물 빈도와 태양 노출 사이에 상호 작용 효과가 있는지 여부를 확인합니다. 물주기 및 햇빛 노출.

1단계: 데이터를 입력합니다.

먼저 다음 세 가지 변수를 포함하는 pandas DataFrame을 만듭니다.

  • 물: 각 식물에 물을 주는 빈도: 매일 또는 매주
  • 태양: 각 식물이 받는 태양 노출의 양: 낮음, 중간, 높음
  • 높이: 2개월 후 각 식물의 높이(인치)
 import numpy as np
import pandas as pd

#create data
df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15),
                   'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2),
                   'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5,
                              6, 6, 7, 8, 7, 3, 4, 4, 4, 5,
                              4, 4, 4, 4, 4, 5, 6, 6, 7, 8]})

#view first ten rows of data 
df[:10]

	water sun height
0 daily low 6
1 daily low 6
2 daily low 6
3 daily low 5
4 daily low 6
5 daily med 5
6 daily med 5
7 daily med 6
8 daily med 4
9 daily med 5

2단계: 양방향 ANOVA를 수행합니다.

다음으로 statsmodels 라이브러리의 anova_lm() 함수를 사용하여 양방향 ANOVA를 수행합니다.

 import statsmodels.api as sm
from statsmodels.formula.api import ols

#perform two-way ANOVA
model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit()
sm.stats.anova_lm(model, typ=2)

	           sum_sq df F PR(>F)
C(water) 8.533333 1.0 16.0000 0.000527
C(sun) 24.866667 2.0 23.3125 0.000002
C(water):C(sun) 2.466667 2.0 2.3125 0.120667
Residual 12.800000 24.0 NaN NaN

3단계: 결과를 해석합니다.

표의 각 요인에 대해 다음과 같은 p-값을 볼 수 있습니다.

  • 물: p-값 = 0.000527
  • 태양: p-값 = 0.0000002
  • 물*태양: p-값 = 0.120667

물과 태양에 대한 p-값이 모두 0.05 미만이므로 이는 두 요소 모두 식물 키에 통계적으로 유의미한 영향을 미친다는 것을 의미합니다.

그리고 상호작용 효과에 대한 p-값(0.120667)이 0.05 이상이므로 이는 태양 노출과 물주기 빈도 사이에 유의미한 상호작용 효과가 없음을 나타냅니다.

참고: ANOVA 결과에 따르면 물 주는 빈도와 햇빛 노출이 식물 높이에 통계적으로 유의미한 영향을 미친다는 사실이 밝혀졌지만, 물과 햇빛 수준이 식물 높이에 어떻게 영향을 미치는지 정확하게 확인하려면 사후 테스트를 수행해야 합니다.

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Python에서 일원 분산 분석을 수행하는 방법
Python에서 3원 ANOVA를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다