이전 포스트: https://blog.naver.com/jjy0501/222611469016
윌콕슨 부호 순위 검정의 예제들은 약 복용 직후 혹은 수술 직후 체중 변화 등을 소재로 삼는 경우가 많습니다. 여기서도 비슷한 예제를 만들어 보겠습니다. 정신과 약물 A를 복용한 환자에서 복용후 체중이 감소했다는 이야기를 들은 의료진은 우선 이 약물을 6개월 이상 복용했고 병원에서 체중을 직접 기록해서 데이터 정확성을 확보할 수 있는 19명의 환자를 대상으로 6개월 전후의 체중을 비교했습니다.
우선 데이터를 만드는 데 전후 비교이므로 변수명은 before와 after로 하겠습니다. 약물 복용 전 평균 체중은 60kg 이었고 복용 후에는 5% 감소한 57kg인데 통계적으로 유의한 차이가 있는지 검증하는 것입니다.
#paired sample
set.seed(1234)
A<-rnorm(19,60,4)
set.seed(1234)
B<-rnorm(19,57,4)
A<-data.frame(A)
names(A)<- c("before")
B<-data.frame(B)
names(B)<- c("after")
data<-cbind(A, B)
코드를 실행하고 data를 보면 아래와 같은 모습이 되어 있을 것입니다. 만약 더 깔끔하게 보이고 싶다면 round를 이용해 소수점 아래 한 자리에서 정리하면 됩니다.
귀무가설 H0는 약물 복용 전후의 몸무게 차이가 없다는 것입니다. wilcox.test ()에 비교하고자 하는 변수 두 가지를 넣어 주고 paired = T를 넣어 줍니다.
wilcox.test(data$before, data$after, paired = T)
결과는
> wilcox.test(data$before, data$after, paired = T)
Wilcoxon signed rank test with continuity correction
data: data$before and data$after
V = 190, p-value = 2.22e-05
alternative hypothesis: true location shift is not equal to 0
Warning message:
In wilcox.test.default(data$before, data$after, paired = T) :
cannot compute exact p-value with ties
으로 P<0.05를 만족시켜 차이가 없다는 귀무 가설을 기각하고 유의한 차이가 있다는 결론을 내립니다. 다만 더 확실한 결론을 내리기 위해서는 더 많은 데이터가 필요하므로 후속 연구는 필요합니다. 샘플 숫자가 적은 경우 비모수 통계 방법을 활용할 순 있지만, 역시 샘플 숫자가 많은 편이 검정력이 더 높고 모수적인 방법을 사용할 수 있어 더 강력한 증거를 제시합니다.
그런데 앞서 cannot compute exact p-value with ties라는 경고 메세지가 짝지은 표본이 없어서 인줄 알았는데, 그게 아닌 것 같습니다. 검색해 보니 같은 값이 존재하면 순서를 정하는데 문제가 있어 디폴트인 exact test로 P값을 구하지 못해 생기는 오류입니다. exact = FALSE를 옵션으로 추가해주면 이 방법을 시도하지 않으므로 문제를 해결할 수 있습니다. 결과는 어차피 동일합니다.
wilcox.test(data$before, data$after, paired = T, exact= FALSE)
> wilcox.test(data$before, data$after, paired = T, exact= FALSE)
Wilcoxon signed rank test with continuity correction
data: data$before and data$after
V = 190, p-value = 2.22e-05
alternative hypothesis: true location shift is not equal to 0
윌콕슨 부호 순위 검정을 계산하는 또 다른 방법은 짝지어진 두 값의 차이를 비교하는 것으로 이 경우에는 차이의 중앙값이 0이라는 것이 귀무 가설이됩니다.
data$diff = data$before - data$after
wilcox.test(data$diff, mu = 0, exact= FALSE)
> data$diff = data$before - data$after
> wilcox.test(data$diff, mu = 0, exact= FALSE)
Wilcoxon signed rank test with continuity correction
data: data$diff
V = 190, p-value = 2.22e-05
alternative hypothesis: true location is not equal to 0
결과는 동일합니다.
참고
https://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test
http://www.incodom.kr/R%ED%99%9C%EC%9A%A9/Wilcoxon_Signed-Rank_Test
댓글
댓글 쓰기