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
|
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요. ^^
댓글을 달아 주세요
양측검정이니까 유의수준 10%하에서도 p값이 0.05보다 작아야 하므로 귀무가설 기각되지 않나요?
양측검정(alternative = c("two.sided"))에서 유의수준 10%하에서 p-value = 0.0714 이면 귀무가설을 기각합니다.
정말로 차근차근 잘 설명해주셔서 덕분에 잘 공부하고 있습니다! 좋은 자료 제공해주셔서 진심으로 감사드려요! ㅎㅎㅎ
댓글 감사합니다. ^^
# Normal distribution plot, X~N(63, 8^2), two-sided test
위 내용을 보면
abline(v=63 - 1.96*8, col="red", lty=2)에서
Z(시그마 / 루트 n)을 안하셔서 제가 알고있는 신뢰구간 식과는 다른데
그림을 제가 원하는 형태가 나왔어요.
왜 루트n을 계산하지 않았는지, 그리고 루트n을 계한하지 않아도 되는지 알려주시면 감사하겠습니다.
추가로 95% t 검정을 했을때는 62~69가 나오는데 위에 값가고 많이 달라서 왜그런지도 알려주시면 감사하겠습니다.
P-value : 귀무가설이 옳다는 가정 하에서 표본으로부터 계산된 검정 통계량의 값을 기준으로 대립가설 방향으로의 확률로서, P-value가 유의 수준보다 작으면 귀무가설을 기각하고 대립가설을 채택함
라고 되어있는데 '대립 가설 방향으로의 확률' 보다는 '극단값이 나올 확률' 이 아닌가요??
안녕하세요.
댓글에 남겨주신 말씀처럼 본문 내용을 수정하였습니다. 댓글 감사합니다.
와 정말 좋은 포스팅 잘 읽고 갑니다 !!
감사합니다 !!
안녕하세요. 도움이 되었다니 다행입니다. 댓글 감사합니다.
(1) 대립가설 2번에 H0, H1 설정이 반대로 되었어요~
- 5년 전과 동일하다는 것이 대립가설이라고 했으므로.
(2) 아래 본문 내용에 이해하기 쉽게 수정이 필요할것 같습니다~
"위 양측검정 (two-sided testing) 결과 P-value 가 0.0714 이므로 유의수준 (significance level) 5% 하에서는 귀무가설을 채택(대립가설 기각, 즉 5년 전과 몸무게 평균 같다)하고, 유의수준 10% 하에서는 귀무가설을 채택(대립가설 기각, 즉 5년 전과 몸무게 평균 다르다)하게 됩니다."
->
"위 양측검정 (two-sided testing) 결과 P-value 가 0.0714 이므로 유의수준 (significance level) 10% 하에서는 귀무가설을 채택(대립가설 기각, 즉 5년 전과 몸무게 평균 다르다)하게 됩니다."
안녕하세요.
귀무가설(H0)는 5년 전과 동일,
대립가설(H1)은 5년 전보다 증가
입니다. 본문 내용 중에 혼선이 있을 수 있는 부분을 보다 명확하게 수정하였습니다.
stem(x)가 무엇을 뜻하는건지 모르겠습니다.
stem(x,scale=2)로 해야 되는거 아닌가요?
54 | 96
56 |
58 |
60 | 59
62 | 4
64 | 9
66 | 120
68 | 7
70 | 238
72 | 60
안녕하세요.
stem() 함수는 줄기 잎 그림 (Stem-and-leaf Plot) 을 그릴때 사용합니다.
결과에서
The decimal point is 1 digit(s) to the right of the |
5 |
5 | 56 ==> 55, 56
6 | 123 ==> 61, 62, 63
6 | 66679 ==> 66, 66, 66, 67, 69
7 | 00233 ==> 70, 70, 72, 73, 73
을 의미합니다. 데이터의 분포 형태를 가늠해볼 수 있습니다.