R 단일 모집단 중심에 대한 비모수 검정 : wilcox.test()
통계적 검정 (statistical testing) 은 모집단의 모수 또는 분포 형태에 대한 추정에 대해 그것이 옳은지 그른지를 임의로 추출한 표본으로부터 통계량을 측정하여 판단하는 통계적 절차를 말합니다.
단일 모집단에 대한 통계적 추론 (추정과 검정) 과 관련하여
[표본이 크고 정규성 충족 시]
: t.test()
: chi-square test
: prop.test()
[정규성 미충족 시]
- 단일 모집단 중심에 대한 비모수 검정
(Nonparametric test on one sample with median)
: wilcox.test()
[정규성 여부 검정]
: shapiro.test(), qqnorm(), qqline()
을 차례로 살펴보겠습니다.
지난번 포스팅의 정규분포 형태를 띠는 '단일 모집단의 모평균, 모분산, 모비율에 대한 신뢰구간 추정과 검정'에 이어서, 이번 포스팅에서는 정규분포 형태를 띠지 않는 단일 모집단의 비모수 검정에 대해 알아보고, R의 wilcox.test() 함수를 사용해 예를 들어보겠습니다.
표본의 개수가 많은 경우에는 중심극한의 정리에 의거해서 정규분포로 근사하게 되어 문제가 안되는데요, 표본의 개수가 작은 경우에는 정규성을 충족시키지 못하는 문제가 발생할 수 있어 t-검정을 사용할 수 없게 되며 이럴 때 사용하는 것이 비모수 검정이 되겠습니다. 혹은 모집단이 정규분포를 띠는지 아닌지를 알지 못하는 경우에도 비모수 검정 (nonparametric test)를 사용합니다.
모수 검정과 비모수 검정법은 아래 비교표처럼 서로 짝을 지어서 보면 좀더 쉽게 이해할 수 있을 것입니다.
[ 모수 검정과 비모수 검정 비교표 ]
구분 |
모수 검정 (Parametric Test) |
비모수 검정 (Nonparametric Test) |
When to use |
정규분포 가정 만족 시 (normal distribution) |
정규분포 가정 불충족 시, 혹은 모집단이 어떤 분포를 따르는지 모를 때 (non-normal distribution, or un-know distribution, or very small sample size, or rankded data) |
Statisctic |
평균 (mean) |
중앙값 (median) |
1 sample |
1 sample t-test |
1 sample Wilcoxon signed rank test |
2 samples |
2 sample t-test |
Mann-Whitney test |
paired 2-sample t-test |
Wilcoxon signed rank test | |
more than 2 samples |
one-way ANOVA |
Kruskal-Wallis test |
단일 모집단에 중심에 대한 비모수 검정에는 Wilcoxon signed rank 검정을 실시하면 되며, 아래에 R의 wilcox.test() 함수를 사용한 예를 소개하였습니다.
문제 ) 2010년도에 서울 지역의 고등학교 1학년 남학생의 몸무게를 전수 조사하였더니 평균이 63.0 kg, 표준편차가 8.0 kg이 나왔다. 2015년에 15명의 남학생을 무작위로 표본을 추출하여 몸무게를 재어보니 {70.2, 54.9, 67.0, 60.5, 63.4, 61.9, 71.8, 66.1, 72.6, 73.0, 68.7, 70.3, 66.2, 55.6, 65.9} 와 같이 나왔을 때 서울 지역 고등학교 1학년 남학생의 몸무게가 5년 전보다 더욱 증가했다고 볼 수 있는가?
(대립가설 1, 단측 검정 "greater") 서울 지역 고등학교 1학년 남학생의 몸무게가 5년 전보다 더욱 증가하였다는 대립가설을 검정하시오.
H0 : 서울 지역 고등학교 1학년 남학생의 몸무게는 5년 전보다 증가하지 않음
H1 : 서울 지역 고등학교 1학년 남학생의 몸무게가 5년 전보다 더욱 증가
> ##---------------------------------------------------------- > ## 단일 모집단의 모평균에 대한 비모수 검정: wilcox.test() > ##---------------------------------------------------------- > > # x : random sample of 15 students's weight in high school > x <- c(70.2, 54.9, 67.0, 60.5, 63.4, 61.9, 71.8, 66.1, 72.6, 73.0, 68.7, 70.3, 66.2, 55.6, 65.9) > mean(x) [1] 65.87333 > var(x); sd(x) [1] 32.54495 [1] 5.704818 > > stem(x) # stem-and-leaf plot The decimal point is 1 digit(s) to the right of the | 5 | 5 | 56 6 | 123 6 | 66679 7 | 00233 > > > # wilcox signed rank test, one-sided test : "greater" > wilcox.test(x, # weight vector for wilcox-test + alternative = c("greater"), # alternative = c("less", "greater", "two-sided") + mu = 63.0, # mu of population + conf.int = TRUE) # 95% pseudomedian confidence interval Wilcoxon signed rank test data: x V = 92, p-value = 0.0365 alternative hypothesis: true location is greater than 63 95 percent confidence interval: 63.35 Inf sample estimates: (pseudo)median 66.175
|
위의 비모수 검정 결과 P-value가 0.0365 로서 5% 유의수준 하에 귀무가설을 기각하게 되고 대립가설을 채택하게 되어 5년 전보다 고등학교 남학생의 몸무게가 증가했다고 판단할 수 있겠습니다.
t-검정(t-Test)와 비교해보면 아래와 같습니다. 결과는 크게 다르지 않게 나왔습니다.
> # t-test, one-sided test : "greater" > t.test(x, # weight vector for t-test + alternative = c("greater"), # alternative = c("less", "greater", "two-sided") + mu = 63.0, # mu of population + conf.level = 0.95) # confidence level or confidence coefficient (1-α) One Sample t-test data: x t = 1.9507, df = 14, p-value = 0.0357 alternative hypothesis: true mean is greater than 63 95 percent confidence interval: 63.27896 Inf sample estimates: mean of x 65.87333
|
Wilcoxon signed rank test 의 lower confidence limit, upper confidence limit 을 indexing 해오는 방법은 아래와 같습니다.
|
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요. ^^