Python notes/Statistical Analysis

파이썬-R) 일원분산분석 R과 파이썬 비교 (anova table, Tukey HSD 사후분석)

성실한 나무 2021. 6. 24. 15:27

#1. 파이썬으로 일원분산분석 진행

 

 - 데이터 준비: from pandas import DataFrame

    DataFrame으로 데이터 만든 후, 독립변수 열을 category로 데이터 타입 변경하기

DataFrame

 

 - 아노바 테이블 만들기: from statsmodels.stats.anova import anova_lm, from statsmodels.formula.api import ols

    anova_lm과 ols로 아노바 테이블을 만든다. '종속변수열 ~ C(독립변수열)'

    아래와 같이 독립변수 열의 p값이 0.05 이하로 유의미하게 나온다면 구체적으로 독립변수 열의 수준(level)들 간에

    평균 차이가 있는지를 확인하고자 사후분석을 진행한다.

    사후분석 방법으로는 여러가지가 있지만 그 중에서도 Tukey의 HSD 방식으로 한다.

파이썬 아노바테이블

  

- 사후분석 실시하기: from statsmodels.stats.multicomp import pairwise_tukeyhsd

  pairwise_tukeyhsd함수로 사후 분석을 실시하면 어떤 수준 간의 평균이 유의미한 차이를 보이는지 확인할 수 있다.

파이썬 Tukey HSD

 

 

 

 

#2. R로 일원분산분석 진행

 

 - 데이터 준비: 

    각 열을 하나의 벡터로 각각 만들고 data.frame을 통해 DataFrame을 준비한다

R data.frame

 

  이 중, 독립변수열은 factor()로 변환시켜서 DataFrame에 적용시킨다

 

 

 - 아노바 테이블 만들기:  **파이썬에서 만든 값이랑 동일하다 (값 표현방식이 약간 다른 점은 있음)

    목화함유량 내 수준들 중 적어도 하나가 유의미한 평균 차이를 가지고 있을 것으로 확인되었다. (p값 <0.05)

R 아노바테이블

 

 - 사후분석 실시하기: **파이썬에서 만든 값이랑 동일하다

   위에서 만든 아노바 모델을 TukeyHSD() 함수 안에 넣어준다.

R Tukey HSD

 

 

#3. 결론

당연한 결과이겠지만,

파이썬과 R에서 진행한 일원분산분석과 사후분석 결과 값이 일치한다.