내용
비모수적 검정(nonparametic test)
t-검정 또는 ANOVA의 정규분포를 따르다는 등의 모수적 가정을 충족할 수 없는 경우 비모수적 접근 방식으로 전환할 수 있습니다. 예를 들어, 결과 변수가 본질적으로 심하게 치우치거나 순서가 있는 경우 Wilcoxon-Tesst과 같은 비모수적 검정 방법을 사용할 수 있습니다.
구분 | 모수검정(parametic Test) | 비모수검정(nonparametic test) |
---|---|---|
가정 | 정규분포 (0) | 정규분포(x), 집단의 분포를 모름 |
통계량 | 평균 (mean) | 중앙값 (median) |
1 sample | 1 sample t-test | 1 sample Wilcoxon signed rank test |
2 samples | 2 sample t-test | Wilcoxon rank sum test, Mann-Whitney U-test |
paired 2-sample t-test | Wilcoxon signed rank test | |
more than 2 samples | one-way ANOVA | Kruskal-Wallis test |
Wilcoxon test(두 그룹의 비교)
Wilcoxon 검정은 모집단의 데이터들이 정규분포를 따른다고 가정할 수 없거나 분포를 알수 없을 경우 중간값(median)의 유의성을 검정하기 위해 실시합니다. 또한 t-test의 짝비교와 같이 두 그룹의 중간값의 차이가 통계적으로 유의한가를 결정하기 위해 사용합니다. 이 비모수분석 방법이므로 t-test에 비해 전제 조건이 작지만 각 데이터의 독립성은 가정됩니다.
중심극한 정리에 의해 Wilcoxon test의 통계량 w는 정규분포에 부합한다고 가정할 수 있습니다. 이 가정은 통계량의 유의성 검정을 가능하게 합니다. 통계량 w는 평균이 0이고 샘플 크기 n을 기준으로 계산하는 분산은 n(n+1)(2n+1)/6이므로 귀무가설에서 제시한 중간값을 z score로 변환하여 확률을 계산할 수 있습니다. 이 검정의 귀무가설과 대립가설은 다음과 같습니다.
- 귀무가설: median=a
- 대립가설: median ≠ a
예를 들어 다음 데이터들의 중간값이 160이라는 귀무가설에 대한 Wilcoxon 검정을 실시합니다.
da<-c(176.9, 158.3, 152.1, 158.8, 172.4, 169.8, 159.7, 162.7, 156.6, 174.5, 184.4, 165.2, 147.8, 177.8, 160.1, 160.5 ) med<-160
- 각 값과 중간값과의 차이를 계산합니다.
- dif의 절대값에 대한 순위를 결정하고 각값의 부호와 그 순위의 곱의 합을 계산합니다.
- w의 평균 0, 분산은 다음과 같습니다.
- z score 계산
- 양쪽검정을 기준으로 표준정규분포에서의 유의수준 0.05에서의 z0.05값은 1.96이며 신뢰구간은 [-1.96, 1.96]이 됩니다. 위에서 계산한 z은 이 구간내에 포함되므로 귀무가설을 기각할 수 없습니다.
- p-value=2p(z>1.55)가 됩니다. 다음의 결과와 같이 p-value는 유의수준 0.05보다 크므로 역시 귀무가설을 기각할 수 없습니다.
dif<-da-med; dif
[1] 16.9 -1.7 -7.9 -1.2 12.4 9.8 -0.3 2.7 -3.4 14.5 24.4 5.2 [13] -12.2 17.8 0.1 0.5
difRank<-rank(abs(dif)); difRank
[1] 14 5 9 4 12 10 2 6 7 13 16 8 11 15 1 3
difSign<-sign(dif); difSign
[1] 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1
w<-sum(difRank*difSign); w
[1] 60
n<-length(da) sigma<-sqrt(n*(n+1)*(2*n+1)/6); sigma
[1] 38.67816
z<-(w-0)/sigma; z
[1] 1.551263
qnorm(1-0.025)
[1] 1.959964
p<-2*(1-pnorm(z));p
[1] 0.1208387
R에서 Wilcoxon test는 다음 함수를 사용합니다. 기본적으로(exact가 지정되지 않은 경우) 표본의 크기가 50개 미만이고 동률이 없는 경우 정확한 p-값이 계산됩니다. 그렇지 않으면 정규 근사가 사용됩니다. 샘플이 작으면 매우 높은 신뢰 구간 범위를 달성하지 못할 수 있습니다.
- wilcox.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), mu = 0, paired = FALSE, conf.int = FALSE, conf.level = 0.95, ...)
- x, y: 변수이고 두 객체가 전달되면 paried 비교가 실시됩니다.
- y~x: y는 수치형벡터, x는 2개의 group을 구분하기 위한 변수
- 두개의 그룹이 전달되고 paried=FALSE인 경우 Mann-Whitney test라고 합니다.
위 데이터 da에 대해 wilcox.test()함수를 적용하면 다음과 같습니다. 여러가지 원인에 의해 위에서 계산한 결과와 약간의 수치적 차이가 발생할 수 있습니다. 그러나 분석 결과는 같습니다.
wilcox.test(da, mu=160, conf.int=TRUE)
Wilcoxon signed rank exact test data: da V = 98, p-value = 0.1297 alternative hypothesis: true location is not equal to 160 95 percent confidence interval: 159.0 170.5 sample estimates: (pseudo)median 164.85
MASS 라이브러리의 데이터 UScrime의 변수 So, Prob에 대한 Mann-Whitney test를 적용합니다.
library(MASS)
with(UScrime, by(Prob, So, median))
So: 0 [1] 0.038201 ------------------------------------------------------------ So: 1 [1] 0.055552 wilcox.test(Prob~So, data=UScrime) Wilcoxon rank sum exact test data: Prob by So W = 81, p-value = 8.488e-05 alternative hypothesis: true location shift is not equal to 0
위 결과의 p값은 유의확률 0.01보다 작으므로 Prob(수감율)이 So 변수의 두 그룹(남부 주와 비남부 주)에서 동일하다는 가설을 기각할 수 있습니다.
Wilcoxon 부호 있는 순위 검정은 종속 표본 t-검정에 대한 비모수적 대안을 제공합니다. 그룹이 쌍을 이루고 정규성 가정이 타당하지 않은 상황에 적합합니다. 형식은 Mann-Whitney U 테스트와 동일하지만 paired=TRUE 옵션을 추가합니다. 데이터 셋 UScrime의 실업에 대한 두 변수 U1, U2에 대한 두 방법을 적용합니다.
sapply(UScrime[c("U1", "U2")], median)
U1 U2 92 34Wilcoxon 부호 검정
with(UScrime, wilcox.test(U1, U2, paired=TRUE))
Wilcoxon signed rank test with continuity correction data: U1 and U2 V = 1128, p-value = 2.464e-09 alternative hypothesis: true location shift is not equal to 0 경고메시지(들): wilcox.test.default(U1, U2, paired = TRUE)에서: tie가 있어 정확한 p값을 계산할 수 없습니다Mann-Whitney 검정
with(UScrime, wilcox.test(U1, U2))
Wilcoxon rank sum test with continuity correction data: U1 and U2 W = 2209, p-value < 2.2e-16 alternative hypothesis: true location shift is not equal to 0 경고메시지(들): wilcox.test.default(U1, U2)에서: tie가 있어 정확한 p값을 계산할 수 없습니다 일반적으로 짝비교일 경우 Mann-Whitney 검정이 우선됩니다.
3 그룹 이상의 비교
비교할 그룹이 2개 이상일 경우에는 모수적 접근 방식으로 분산분석(ANOVA)을 고려할 수 있지만 이 분석의 가정을 충족할 수 없는 경우 비모수적 접근 방식을 사용하여 그룹 차이를 평가할 수 있습니다. 그룹이 독립적인 경우 Kruskal-Wallis 테스트는 유용한 접근 방식을 제공합니다. 그룹간의 연관성이 존재하는 경우(예: 반복 측정 또는 무작위 블록 설계) Friedman 검정이 더 적합합니다.
- kruskal.test(y~A, data)
- y: 수치형 데이터, A: 두개이상의 수준(level)을 가진 변수
- friedman.test(y~A|B, data)
- y: 수치형 데이터, A: 그룹화 변수, B: 대응하는 관찰치들을 식별하는 블럭화 변수
state.region | Population | Income | Illiteracy | Life Exp | Murder | HS Grad | Frost | Area | |
---|---|---|---|---|---|---|---|---|---|
Alabama | 2 | 3615 | 3624 | 2.1 | 69.05 | 15.1 | 41.3 | 20 | 50708 |
kruskal.test(Illiteracy~state.region, data=states)
Kruskal-Wallis rank sum test data: Illiteracy by state.region Kruskal-Wallis chi-squared = 22.672, df = 3, p-value = 4.726e-05
위 결과는 4개의 그룹간의 유의한 차이가 있음을 나타냅니다. 그러나 위 결과는 어느 그룹들간의 차이가 유의한지에 대한 답은 없습니다. 이러한 질문을 위한 평가는 Mann-Whitney의 두 그룹 검정으로 평가할 수 있습니다. 위와 같이 4개의 그룹이 존재하는 경우 Mann-Whitney 검정은 6번을 실시해야 합니다. pairwise.wilcox.test()
함수를 각 그룹간의 p 값을 확인할 수 있습니다.
pairwise.wilcox.test(states$Illiteracy, states$state.region)
Pairwise comparisons using Wilcoxon rank sum test with continuity correction data: states$Illiteracy and states$state.region 1 2 3 2 0.012 - - 3 0.054 8.1e-05 - 4 0.867 0.018 0.867 P value adjustment method: holm 경고메시지(들): 1: wilcox.test.default(xi, xj, paired = paired, ...)에서: tie가 있어 정확한 p값을 계산할 수 없습니다 ...
그러나 다중비교 내에서 위와 같이 2그룹간의 비교를 사용하는 경우 Type I error(차이가 없는 상황에서 차이가 존재한다고 결정할 수 있는 에러)가 증가하는 위험을 가집니다. 대안으로 2개 이상의 그룹들에 대한 비모수 분석을 제공하는 nparcomp 패키지를 적용합니다. 이 패키지의 nparcomp()
함수는 kruscal.test()와 같은 식(formular)으로 데이터들을 전달합니다. 이 함수는 분석결과와 data에 대한 전반적인 사항들을 모두 반환하므로 summary()함수를 사용하여 그 결과를 요약하거나 다음과 같이 각 비교군의 p-value만을 출력할 수 있습니다.
library(nparcomp)
hoc<-nparcomp(Illiteracy~state.region, data=states) attributes(hoc)
$names [1] "Data.Info" "Contrast" "Analysis" "Overall" "input" [6] "text.Output" "connames" "AsyMethod" $class [1] "nparcomp"
hoc$Analysis
Comparison | Estimator | Lower | Upper | Statistic | p.Value | |
---|---|---|---|---|---|---|
1 | p( 1 , 2 ) | 0.875 | 0.581 | 0.972 | 3.09276981039184 | 0.0106956764325296 |
2 | p( 1 , 3 ) | 0.19 | 0.038 | 0.578 | -2.1124888425669 | 0.156276994260242 |
3 | p( 1 , 4 ) | 0.397 | 0.14 | 0.727 | -0.767342614794812 | 0.925735874250196 |
4 | p( 2 , 3 ) | 0.01 | 0.001 | 0.113 | -4.69519718592438 | 3.32226687898007e-05 |
5 | p( 2 , 4 ) | 0.188 | 0.051 | 0.496 | -2.59853058333293 | 0.0464818222669201 |
6 | p( 3 , 4 ) | 0.564 | 0.267 | 0.822 | 0.522167524915548 | 0.985318332838074 |
위 결과는 그룹 2와 3 사이에 유의한 차이를 보이는 것을 알 수 있습니다.
댓글
댓글 쓰기