Programing/R- programming

R - One sample T-test / T 검정

sosal 2015. 2. 8. 06:41
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */


T검정을 검색했을 떄, 백과사전이나 위키에서 나오는 내용을 요약하면 다음과 같다.


- Introduction


T검정이란?

- t 검정은 표본으로부터 추정된 분산이나 표준편차를 가지고 아래에 있는 두 가설을 검정하는 방법 

H0(귀무가설): 두 모집단은 평균간의 차이가 없다.

H1(대립가설): 두 모집단은 평균간의 차이가 있다.


결론은 비교하는 두 대상의 평균의 차이가 있느냐, 없느냐다.



그렇다면 one sample t-test 란 무엇일까?


- one sample t-test

전체 모집단에 대한 정보가 없을 때, 표본이 과연 모집단으로부터 나온것인지를 판단할 때 사용한다.



- t.test 문법

t.test(x, y = NULL,

       alternative = c("two.sided", "less", "greater"),

       mu = 0, paired = FALSE, var.equal = FALSE,

       conf.level = 0.95, ...)


x는 샘플의 데이터이다. numerical한 vector 형태로 들어와야 한다.


mu는 모집단의 평균을 뜻한다. 이경우 '모집단과 샘플의 평균이 다르다' 가 대립가설이 된다.


alternative는 "two.sided", "greater", "less" 3개의 값이 있다.

default 값은 two.sided 이며, 이는 주어진 평균과 샘플이 단지 다르다는 것을 대립가설(H1)으로 두고자 할 때 사용되며

greater는 오로지 샘플이 주어진 평균보다 크다는 것을 대립가설(H1)을 두고자 할때,

less는 작다는 것을 대립가설로 두고자 할 때 사용된다.


나머지 변수에 대한 자세한 설명은 https://stat.ethz.ch/R-manual/R-patched/library/stats/html/t.test.html 을 참조






one sample t.test 예제 1)


A회사의 건전지의 수명시간이 1000시간 일 때, 무작위로 뽑은 10개의 건전지에 대한 수명은 다음과 같다.

980, 1008, 968, 1032, 1012, 996, 1021, 1002, 996, 1017

샘플이 모집단과 같다고 할 수 있는가?


H0(귀무가설): 100개의 샘플 건전지를 통해, A회사 건전지는 평균 1000시간 작동하는 것이 옳다는 것을 증명한다.

H1(대립가설): 100개의 샘플 건전지를 통해, A회사 건전지는 평균 1000시간 작동하는 것이 틀리다는 것을 증명한다.



> a <- c(980, 1008, 968, 1032, 1012, 996, 1021, 1002, 996, 1017)

> shapiro.test(a)

        Shapiro-Wilk normality test

data:  a

W = 0.9757, p-value = 0.9382


p-value가 0.05보다 높은 0.9382 이다. 따라서 정규분포를 따르고, 이 데이터에 대해 t-test를 할 수 있다.



> t.test(a, mu=1000, alternative="two.sided")


a: 샘플 데이타 벡터

mu: 비교하는 대상의 평균,

alternative: '다르다'를 보는것이니, alternative는 two.sided가 된다. (default 값이니 쓰지 않아도 된다.)


data:  a

t = 0.5269, df = 9, p-value = 0.611

alternative hypothesis: true mean is not equal to 1000

95 percent confidence interval:

  989.4613 1016.9387

sample estimates:

mean of x 

   1003.2 


t값은 0.5269, df(자유도)는 9이다.

유의수준 0.05로 판단할 경우, p-value가 0.05를 넘은 0.611 이니 귀무가설이 참이다.

이 건전지 회사는 무작위로 뽑은 10개의 건전지 수명을 통해, 건전지의 평균 수명은 1000시간이라는 것을 알 수 있다.

다만 p-value가 애매한 값이니 우연에 의해 일치했을 수 있다.










one sample t.test 예제 2)


3-1반의 학생들의 수학 평균성적은 55점이었다. 0교시 수업을 시행하고나서 학생들의 시험 성적은 다음과 같았다.

58, 49, 39, 99, 32, 88, 62, 30, 55, 65, 44, 55, 57, 53, 88, 42, 39

0교시 수업을 시행한 후, 학생들의 성적은 올랐다고 할 수 있는가?


H0(귀무가설): 0교시 수업 시행 후 학생들의 성적은 오르지 않았다.

H1(대립가설): 0교시 수업 시행 후 학생들의 성적은 올랐다.



> a <- c(58, 49, 39, 99, 32, 88, 62, 30, 55, 65, 44, 55, 57, 53, 88, 42, 39)

> shapiro.test(a)


        Shapiro-Wilk normality test


data:  a

W = 0.9114, p-value = 0.1058

p-value가 0.05보다 높은 0.1058 이다. 따라서 정규분포를 따르고, 이 데이터에 대해 t-test를 할 수 있다.


> t.test(a, mu=55, alternative="greater")
올랐느냐, 혹은 같거나 떨어졌느냐 를 증명하는 것이므로, alternative는 "greater"가 된다.

data:  a
t = 0.239, df = 8, p-value = 0.4086
alternative hypothesis: true mean is greater than 55
95 percent confidence interval:
 42.19295      Inf
sample estimates:
mean of x 
 56.88889 

t값은 0.239, df(자유도)는 8이다.

유의수준 0.05로 판단할 경우, p-value가 0.05보다 크기 때문에 0.4086이기 때문에 귀무가설이 참이다.

이 학생들의 성적을 통해, 이전의 평균보다 성적이 같다는것을 알 수 있다.








Discussion


one sample t-test는 데이터 샘플 a와 mu(모집단의 평균)의 차이를 보는 검정방법이다.

따라서 비록 one sample t-test라고 할 지라도 꼭 한집단에서만 사용되란 법은 없다.


A집단과 B집단의 데이터를 비교하고자 할 때,

A집단은 평균만 알고있으며 B집단의 데이터를 가지고 있을 때 one-sample t-test를 사용한다.

(two sample t-test를 사용하기 위해서는 A집단의 데이터를 가지고 있어야 하기 때문이다.)


t-test는 샘플에 대해서 평균, 표준편차, 데이터의 개수만 사용하므로, 꼭 모든 데이터를 다 가지고 있을 필요 없이

평균, 표준편차, 데이터 개수만 가지고도 계산이 가능하다.





예를 들어, 환자군 A와 일반군 B가 있다.

환자군(A)에서, 일반인(B)들에 비해 간수치가 높은 환자들을 추려내고자 할 때, 비교하고자 하는 군은 A, B 두가지 이지만

실제 t.test를 하고자 하는것은 환자 한명과 일반군 B(전체) 이다.

(모든 환자들에 대해, 환자1명과 일반인B 전체를 t.test 해야한다.)

 - 이것은 환자군 A와 일반군 B에 대해, 간수치가 같냐 다르냐를 검정하는 것이 아니다!


따라서 이 경우 샘플x는 집단 B 전체 데이터가 되며,

비교하고자 하는 평균값 mu에 환자군 A에 속한 한명의 환자값이 들어간다.


mu에 평균이 아닌 환자 한명의 값이 들어간다고 하면 틀린것 같지만 실제 t-test는 차이점을 보는 것이기 때문에 유효하다.


이를 R의 수도코드로 나타내면 다음과 같다.


A = { a1, a2, a3, a4....}

B = { b1, b2, b3, b4....}


for( i in 1:length(A1) ){

    t.test(B, mu = A1[i])

}


이처럼 환자 각각 한명과 일반군 B 전체에 대해서 T-test를 해야 하는 경우에는 one-sample t-test를 사용해야 한다.




이 글이 누군가에게 도움이 되었기를 바라며 글을 마친다.