R 분석과 프로그래밍/R 통계분석

R 단일 모집단 중심에 대한 비모수 검정 : wilcox.test()

Rfriend 2015. 10. 4. 10:52

통계적 검정 (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 해오는 방법은 아래와 같습니다.

 

> # indexing of 95% confidence level value > wilcox.test_confi_95 <- wilcox.test(x, alternative = c("greater"), mu = 63.0, conf.int = TRUE) > > names(wilcox.test_confi_95) # statistics [1] "statistic" "parameter" "p.value" "null.value" "alternative" "method" "data.name" [8] "conf.int" "estimate" > > wilcox.test_confi_95$conf.int # confidence interval at 95% confidence level [1] 63.35 Inf attr(,"conf.level") [1] 0.95 > > wilcox.test_confi_95$conf.int[1] # lower confidence limit [1] 63.35 > wilcox.test_confi_95$conf.int[2] # upper confidence limit [1] Inf

 

 

많은 도움 되었기를 바랍니다.

 

이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요. ^^

 

728x90
반응형