-
Python 데이터분석 기초 39 - Two-way ANOVA(이원분산분석)Python 데이터 분석 2022. 11. 9. 18:00
Two-way ANOVA(이원분산분석)
요인 복수 - 각 요인의 데이터(그룹)도 복수이다.
# Two-way ANOVA(이원분산분석) : 요인 복수 - 각 요인의 데이터(그룹)도 복수 import pandas as pd import urllib.request import matplotlib.pyplot as plt from statsmodels.formula.api import ols from statsmodels.stats.anova import anova_lm import statsmodels.api as sm plt.rc('font', family = 'malgun gothic') url = "https://raw.githubusercontent.com/pykwon/python/master/testdata_utf8/group3_2.txt" data = pd.read_csv(urllib.request.urlopen(url), delimiter = ',') # delimiter는 컴마이다(컴마로 구분한다). print(data.head(3), data.shape) print() # data.boxplot(column = '머리둘레', by = '태아수') # plt.show() # data.boxplot(column = '머리둘레', by = '관측자수') # plt.show() # 귀무 : 태아수와 관측자수는 태아의 머리둘레와 관련이 없다. # 대립 : 태아수와 관측자수는 태아의 머리둘레와 관련이 있다. # 상호 작용을 빼고 한 경우 reg = ols("data['머리둘레'] ~ C(data['태아수']) + C(data['관측자수'])", data = data).fit() # 학습을 위해 fit 함수 사용 result = anova_lm(reg, type = 2) print(result) print() # 상호 작용(교호작용, Interaction이란 한 요인의 효과가 다른 요인의 수준에 의존하는 경우를 말한다.)을 적용한 경우 reg2 = ols("머리둘레 ~ C(태아수) + C(관측자수) + C(태아수):C(관측자수)", data = data).fit() # 학습을 위해 fit 함수 사용 result2 = anova_lm(reg2, type = 2) print(result2) # 해석 : p-value = 0.3295509 > 0.05 이므로 귀무가설 채택 # 태아수와 관측자수는 태아의 머리둘레와 관련이 없다. <console> 머리둘레 태아수 관측자수 0 14.3 1 1 1 14.0 1 1 2 14.8 1 1 (36, 3) df sum_sq mean_sq F PR(>F) C(data['태아수']) 2.0 324.008889 162.004444 2023.182239 1.006291e-32 C(data['관측자수']) 3.0 1.198611 0.399537 4.989593 6.316641e-03 Residual 30.0 2.402222 0.080074 NaN NaN df sum_sq mean_sq F PR(>F) C(태아수) 2.0 324.008889 162.004444 2113.101449 1.051039e-27 C(관측자수) 3.0 1.198611 0.399537 5.211353 6.497055e-03 C(태아수):C(관측자수) 6.0 0.562222 0.093704 1.222222 3.295509e-01 Residual 24.0 1.840000 0.076667 NaN NaN
column = '머리둘레', by = '태아수' column = '머리둘레', by = '관측자수' 'Python 데이터 분석' 카테고리의 다른 글
Python 데이터분석 기초 41 - 이항검정(양측검정, 단측검정) (0) 2022.11.10 Python 데이터분석 기초 40 - 추론통계 분석 중 비율(value)검정 (0) 2022.11.10 ANOVA 예제 1, 2(정규성, 등분산성 검정, 사후 검정) 귀무 vs 대립 (1) 2022.11.09 Python 데이터분석 기초 38 - 어느 음식점 매출 자료와 날씨 자료를 활용하여 온도(추움, 보통, 더움)에 따른 매출액 평균에 차이를 검정 + 웹 (0) 2022.11.09 Python 데이터분석 기초 37 - 일원분산분석으로 평균차이 검정(웹에서 데이터 가져오기) (0) 2022.11.09