94년생 스피노자

[코드 블록] ANOVA (Analysis of Variance) 본문

철기시대 석공 벗어나기/코딩 조각

[코드 블록] ANOVA (Analysis of Variance)

94년생 스피노자 2021. 5. 15. 12:12
728x90

집단 비교

이전에는 t-test를 다루었다.

t-test를 통해 우리는 다음 2가지 경우를 연구할 수 있다.

  • 1개 그룹의 평균이 특정 수와 같은지
  • 2개 그룹의 평균이 서로 같은지

오늘 소개할 ANOVA는 2개 이상의 그룹의 평균이 서로 같은지를 검정한다.

 

 

0. ANOVA의 필요성

 

왜 ANOVA를 써야하는 것일까?

집단이 늘어나면 t-test를 여러번하면 되지 않나 싶다.

 

예를 들어 집단이 3개가 있다고 하자.

그러면 다음과 같은 조합으로 t-test가 가능하다.

  • 집단 1 & 집단 2
  • 집단 1 & 집단 3
  • 집단 2 & 집단 3

이렇게 하면 모든 집단 간에 t-test가 이루어진다.

그럼 ANOVA는 필요 없지 않은가.

 

우리는 신뢰수준에 대해 명심해야 한다.

여러번의 t-test는 각각 95%의 신뢰수준으로 진행되었다.

그리고 각 t-test는 독립사건이다.

 

따라서 각 t-test는 95%의 신뢰수준이더라도 전체로 보면 신뢰수준이 낮아진다.

신뢰수준 = 0.95 * 0.95 * 0.95 = 0.857

위와 같이 신뢰수준이 85.7%로 급감하는 것을 볼 수 있다.

 

이러한 현상을 막기 위해 ANOVA를 활용하는 것이다.

ANOVA는 한꺼번에 분석을 진행하기 때문에 신뢰수준 95%가 유지된다.

 

 

1. ANOVA를 위한 코드

 

ANOVA를 위한 코드는 극도로 간단하다.

from scipy.stats import f_oneway

f_oneway(group1, group2, group3)

위와 같은 코드로 ANOVA를 진행할 수 있다.

 

<결과해석>

F_onewayResult(statistic=2.6009238802972483, pvalue=0.11524892355706169)

결과값은 위와 같은 형태로 출력이 될 것이다.

statistic은 F 값을 뜻한다.

 

예시 결과에서는 p 값이 0.11로 95% 신뢰수준을 충족하지 못한다.

따라서 세 집단의 평균이 같다는 귀무가설을 기각하지 못한다.

 

 

모두 행복하길

 

-끝-

728x90