EDUCATION/DSS Online 6기

DAY36 - 이항검정, 카이제곱검정

Kululu_ 2021. 3. 7. 20:00

파이썬에서는 scipy 패키지를 이용해 다양한 검정을 진행할 수 있습니다.

 

먼저 베르누이 확률변수의 모수를 추정하고 이를 검정할 때 하는 "이항검정"에 대해 알아보겠습니다.

 

이항검정

- 데이터가 베르누이 확률변수라고 모형화할 경우, 1이 나온 횟수를 검정통계량으로 사용합니다.

- 1이 나온 횟수는 이항분포를 따르게 되므로 검정통계량 확률분포는 "이항분포"가 됩니다.

- 이를 이용해 베르누이 확률분포의 모수에 대해 검정하는 것을 "이항검정"이라고 합니다.

- scipy.stats의 binom_test를 이용해 파이썬에서 구현 가능합니다.

ex) 동전을 15번 던졌는데 앞면이 12번 나왔을 경우, 동전이 공평한 동전이라고 할 수 있을까?

양측검정 유의확률이 0.035로 3.5%가 나왔습니다.

만약 사전에 설정했던 유의수준이 5%였다면, 유의확률이 유의수준보다 작으므로 "동전이 공평하다"는 귀무가설을 기각하하고 "동전이 공평하지 않다"는 대립가설을 채택하게 됩니다.

 

 

다음으로는 카테고리 확률변수의 모수를 추정하고 검정할 때 하는 "카이제곱검정"에 대해 알아보겠습니다.

 

카이제곱검정

- 베르누이 확률변수의 모수를 추정할 때처럼 각 카테고리가 나온 횟수를 검정통계량으로 사용하는 것이 불가능합니다. 각 카테고리가 나온 횟수는 스칼라 값이 아니라 벡터이기 때문입니다.

- 이 때는 검정통계량을 다음과 같이 정의해 카이제곱검정을 실행합니다.

$$ \sum_{k=1}^K \frac{(x_k - \mu_k)^2}{\mu_k} $$

$$ x_k : k번째 카테고리가 나온 횟수 $$

$$ \mu_k : 귀무가설을 따를 시 k번째 카테고리가 나오는 이상적인 횟수 $$

- 정의한 검정통계량이 제곱들의 합이므로 카이제곱분포를 사용하는 것입니다.

- scipy.stats의 chisquare 함수를 사용해서 구현할 수 있습니다.

 

 

ex) 정육면체 주사위를 30번 던졌을 때

1 : 3번

2 : 5번

3 : 7번

4 : 8번

5 : 4번

6 : 3번

나왔을 때, 이 주사위가 공정하다고 할 수 있을까?

유의확률에 해당하는 pvalue가 0.4933으로 약 49.3%가 나왔습니다.

이는 매우 높은 유의확률로 일반적으로 설정하는 최대 유의수준인 10%를 훨씬 상회하므로 귀무가설을 채택합니다.

=> 주사위가 공정하다.