R 단일 모집단의 모평균에 대한 신뢰구간 추정(confidence interval estimation)과 검정(test) : t.test()
R 분석과 프로그래밍/R 통계분석 2015. 9. 30. 19:40통계적 검정 (statistical testing) 은 모집단의 모수 또는 분포 형태에 대한 추정에 대해 그것이 옳은지 그른지를 임의로 추출한 표본으로부터 통계량을 측정하여 판단하는 통계적 절차를 말합니다.
단일 모집단에 대한 통계적 추론 (추정과 검정) 과 관련하여
[표본이 크고 정규성 충족 시]
- 단일 모집단의 모평균에 대한 신뢰구간 추정과 검정
: t.test()
: chisq test
: prop.test()
[정규성 미충족 시]
: wilcox.test()
[정규성 여부 검정]
: shapiro.test(), qqnorm(), qqline()
을 차례로 살펴보겠습니다.
이번 포스팅에서는 정규분포 형태를 띠는 단일 모집단에서 임의로 많은 갯수의 표본을 추출하여 미지의 모수인 모평균 μ 에 대한 95% 신뢰계수의 신뢰구간 추정과 검정을 R의 t.test() 함수를 활용해서 해보겠습니다.
(표본의 크기가 충분히 크면 중심 극한의 정리에 의거하여 정규분포를 가정)
먼저, 기본 용어부터 살펴보자면
[ 귀무가설 (null hypothesis: H0), 대립가설 (alternative hypothesis : H1) ]
|
[ 대립가설의 형태에 따른 검정의 분류 (Types of alternative hypothesis) ]
|
[ 검정 통계량 (test statistic)과 P-value]
|
---------------------------------------------------------------------
문제 하나를 가지고 예를 들어서 R t.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)을 검정하시오.
- H0 : 서울 지역 고등학교 1학년 남학생의 몸무게는 5년 전보다 증가하지 않음
- H1 : 서울 지역 고등학교 1학년 남학생의 몸무게가 5년 전보다 더욱 증가
# Normal distribution plot, X~N(63, 8^2), right-sided test abline(v=63, col="blue", lty=3)
|
(1) 단측 검정 (one-sided test)
> ##---------------------------------------------------------- > ## 단일 모집단의 모평균에 대한 신뢰구간 추정과 검정: t.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 >
> > > # 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
|
(해석) 위 t.test()를 활용한 분석 결과 t 통계량은 1.9507, P-value 는 0.0357로서 유의수준 (significance level) 5% 하에서는 귀무가설이 기각, 대립가설이 채택되어 "5년 전보다 남학생들 몸무게가 증가"하였다고 판단할 수 있습니다.
P-value가 0.0357 이므로 15개의 임의 표본을 추출해서 100 번 반복 조사를 해보면 약 3번~4번 밖에 위와 같은 경우가 발생한다는 뜻이므로, 귀무가설 하에서는 일어나기에 쉽지 않은 경우라고 하겠지요?
95% 신뢰구간은 아래 값처럼 (63.27896 ~ 무한대)가 되겠네요. 단측검정으로 우측검정을 했기 때문에 이런 신뢰구간 값이 나온겁니다.
95 percent confidence interval: |
5년 전의 모집단의 몸무게 평균이 63.0 kg 이라고 했는데요, 5년 후에 조사한 표본집단의 몸무게 평균의 95% 신뢰구간이 (63.27896~무한대) 이므로 서로 겹치지 않습니다. 그만큼 귀무가설에서는 일어나기 힘든 일이 벌어진 것이므로, 대립가설("greater")을 채택하게 됩니다.
---------------------------------------------------------------------
(대립가설 2, 양측 검정 "two.sided)) 서울 지역 고등학교 1학년 남학생의 몸무게는 5년 전과 동일하다는 대립가설을 검정하시오.
H0 : 서울 지역 고등학교 1학년 남학생의 몸무게는 5년 전과 동일
H1 : 서울 지역 고등학교 1학년 남학생의 몸무게가 5년 전과 다름 (증가 혹은 감소)
# Normal distribution plot, X~N(63, 8^2), two-sided test abline(v=63, col="blue", lty=3) text(82, 0.003, labels = "------->")
|
(2) 양측 검정 (two-sided test)
> # two-sided test : "two.sided" > t.test(x, # weight vector for t-test + alternative = c("two.sided"), # 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.0714 alternative hypothesis: true mean is not equal to 63 95 percent confidence interval: 62.71411 69.03256 sample estimates: mean of x 65.87333
|
위 양측검정 (two-sided testing) 결과 P-value 가 0.0714 이므로 유의수준 (significance level) 5% 하에서는 귀무가설을 채택(대립가설 기각, 즉 5년 전과 몸무게 평균 같다)하고, 유의수준 10% 하에서는 귀무가설을 기각(대립가설 채택, 즉 5년 전과 몸무게 평균 다르다)하게 됩니다.
---------------------------------------------------------------------
(3) 95% 신뢰구간 값 구하기 (indexing of 95% confidence level value)
> # indexing of 95% confidence level value > t.test_confi_95 <- t.test(x, alternative = c("two.sided"), mu = 63.0, conf.level = 0.95) > > > names(t.test_confi_95) # statistics [1] "statistic" "parameter" "p.value" "conf.int" "estimate" "null.value" "alternative" [8] "method" "data.name" > > t.test_confi_95$conf.int # confidence interval at 95% confidence level [1] 62.71411 69.03256 attr(,"conf.level") [1] 0.95 > > t.test_confi_95$conf.int[1] # lower limit [1] 62.71411 > t.test_confi_95$conf.int[2] # upper limit [1] 69.03256
|
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요. ^^