[TIL] Anova Test

hyewon·2021년 9월 18일
0

TIL

목록 보기
8/59
post-thumbnail

오늘은 평일에 다 풀지 못한 과제들을 마무리한 뒤, 도전과제로 넘어갔다. 넘어갔더니 처음보는 Anova Test를 하라면서 Anova Test 과정에 대한 링크를 첨부해주셨는데 이해가 안가는 부분이 많아서 또 열심히 구글링을 했다.

물론 아직도 100% 이해했다!! 이건 아니고 한 70% 정도는 이해한 것 같은 느낌이다. 와중에 완전 이해를 못 한 부분도 있지만...일단 정리를 시작해보겠습니다!

Anova Test

Anova Test는 2개 이상의 그룹의 평균을 비교하는데 사용된다. T-test와의 차이점은 T-test는 2개 그룹을 비교하는데 사용한다는 점이다.
분산 기반 F Test를 통해서 그룹 평균 동등성을 확인한다. F Test는 옴니버스 테스트라고도 한다.

pd.melt()

우선 Anova Test를 진행하기 위해서는 데이터를 Pandas DataFrame으로 불러온 뒤, melt 함수를 통해서 tidy data로 만들어줘야 한다. melt 함수는 이미 한번 배웠던 함수이기 때문에 비교적 쉽게 사용할 수 있었다.

melt_df = pd.melt(data, id_vars = ['식별자 변수'], value_vars = ['melt 될 columns'])

stats.f_oneway()

melt 메소드를 이용해서 tidy data로 만들었다면 그 다음에는 f_oneway 메소드를 사용할 차례다.
f_oneway 메소드는 일원 분산 분석을 수행하는 메소드다. 일원 분산 분석은 둘 이상의 그룹이 동일한 모집단 평균을 갖는다는 귀무가설을 테스트한다.

stats.f_oneway(인수, 축 = 0 or 1)

f_oneway 메소드에서 축 파라미터는 선택사항이며 따로 지정하지 않는다면 0이 들어가게 된다.

ols()

일원 분산 분석을 해준 다음 차례는 바로 회귀분석이다. 회귀분석을 위한 함수는 ols 메소드다.

from statsmodels.formula.api import ols
res = ols('종속변수명 ~ 독립변수명', data = df)
res.summary() # 회귀 분석 결과 확인

# 위의 코드를 아래처럼 한 줄로 쓸 수도 있다
# res = ols('종속변수명 ~ 독립변수명', data = df).summary() 

anova_lm()

회귀분석까지 완료했다면 그 다음으로는 anova_lm 메소드를 통해서 집단별로 평균이 같은지 일원분산분석으로 검정할 차례이다.

anova_lm(model, typ = 2)

anova_lm의 파라미터 중 model은 바로 하나 이사의 적합 선형모델 즉, ols 메소드의 결과를 저장한 변수 명이 들어가면 된다.

typ는 수행할 anova 테스트의 유형을 넣어주면 되는데, str과 int 타입이 들어갈 수 있다. {“I”,”II”,”III”} 혹은 {1,2,3}이 들어간다 라고 하는데 아직 type에 대한 차이를 잘 모르겠다..😅😅

anova_stat()

이제 마지막 단계인 stat() 메소드이다. 물론, stat 메소드에 대한 정보를 열심히 찾아봤지만 아직 구글링하는 능력이 부족한 것인지 찾기가 어려웠다.. 그래서 Discussion에 질문을 남겼는데 답변이 달릴지 모르겠다 두근두근..

from bioinfokit.analys import stat
res = stat()
res.anova_stat(df = df명, res_var = 값, anova_model = '값 ~ C(treatments)'
res.anova_summary()

위의 코드를 실행하면 다음과 같은 결과가 나온다

profile
우당탕탕 코린이

0개의 댓글