더북(TheBook)

피셔의 정확 검정

분할표를 그린 뒤 카이 제곱을 적용할 때 표본 수가 적거나 표본이 분할표의 셀에 매우 치우치게 분포되어 있다면 카이 제곱 검정의 결과가 부정확할 수 있다. 표본 수가 적다는 기준은 특정 짓기 어렵지만 기대 빈도가 5 이하인 셀이 전체의 20% 이상인 경우 등이 이에 해당한다. chisq.test( )는 이런 경우 경고 메시지를 출력하여 카이 제곱 검정이 부정확할 수 있음을 알린다.

카이 제곱 검정이 부정확한 경우에는 피셔의 정확 검정Fisher’s Exact Test을 사용한다. 통계적인 계산식에 대한 설명은 피셔의 정확한 검정에 대한 참고자료[7], [8]를 보기 바란다. 이 절에서는 R에서 피셔의 정확 검정을 수행하는 방법에 대해 설명할 것이다. 피셔의 정확 검정에는 fisher.test( ) 함수를 사용한다.

표 7-12 피셔의 정확 검정

fisher.test : 피셔의 정확 검정을 수행한다.

fisher.test(
  x,      # 행렬 형태의 이차원 분할표 또는 팩터
  y=NULL, # 팩터. x가 행렬이면 무시된다.
  alternative="two.sided" # 대립가설로 two.sided는 양측 검정, less는 작다, greater는 크다를 의미
)

MASS::survey 데이터에서 손 글씨를 어느 손으로 쓰는지와 박수를 칠 때 어느 손이 위로 가는지 사이의 경우에 대해 피셔의 정확 검정을 수행해보자. 분할표를 xtab( )으로 구한 뒤 카이 제곱 검정을 수행하면 카이 제곱 검정이 정확하지 않다는 경고 메시지가 나온다.

> xtabs(~ W.Hnd + Clap, data=survey)
      Clap
W.Hnd  Left Neither Right
  Left    9       5     4
  Right  29      45   143

> chisq.test(xtabs(~ W.Hnd + Clap, data=survey))

  Pearson's Chi-squared test

data:   xtabs(~ W.Hnd + Clap, data = survey)
X-squared = 19.2524, df = 2, p-value = 6.598e-05

Warning message:
In chisq.test(xtabs(~ W.Hnd + Clap, data = survey)) :
  Chi-squared approximation may be incorrect

이 경우 fisher.test( ) 함수를 사용해야 한다.

> fisher.test(xtabs(~ W.Hnd + Clap, data=survey))

  Fisher's Exact Test for Count Data

data: xtabs(~W.Hnd + Clap, data = survey)
p-value = 0.0001413
alternative hypothesis: two.sided

p-value가 0.05보다 작으므로 글씨를 쓰는 손과 박수를 칠 때 위에 오는 손이 독립이라는 귀무가설을 기각하고 둘 사이에 관계가 있다는 대립가설을 채택한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.