본문 바로가기

데이터분석/R

[R]가설검정과 예제로 보는 1집단 t-test, paired t-test, 2집단 t-test 결과 해석, t.test() in r

1. 가설검정(hypothesis test)의 단계

2. 1집단 t-검정(one sample t-test) + 예제

3. paired t-test(짝진 표본 t검정) + 예제

4. 2집단 t-검정(two sample t-test) + 예제

 


1. 가설검정(hypothesis test)의 단계

 

가설검정은 다음의 5단계로 진행됩니다. 통계 분석 프로그램인 r을 이용하면 3, 4번의 과정을 자동으로 계산해줍니다.

 

1. 가설(hypothesis)을 세운다

2. 유의수준(significance level) alpha를 정한다. (보통 0.05)

3. 검정통계량(test statestic)을 구한다.

4. 기각역(critical region, rejection regeion)을 구하여 검정 통계량과 비교한다.

5. 결론을 쓴다.

 

 

 

2. 1집단 t-test(one sample t-test)

 

1집단 t-test는 1개의 모집단이 있을 때, 이 모집단의 평균이 특정 값( $ \mu_0 $ )과 같은지 검정하는 방법입니다. 여기서 특정 값( $ \mu_0 $ )은 어떤 숫자입니다.

 

따라서 귀무가설(null hypothesis)은 '평균이 $ \mu_0 $ 와 같다.'이고 대립가설(alternative hyhotesis)은 다음 3가지 중 원하는 목적에 맞게 선택합니다.

 

① $ \mu > \mu_0 $ (평균이 $ \mu_0 $ 보다 크다.)

 

② $ \mu \ne \mu_0 $ (평균이 $ \mu_0 $ 와 같지 않다.)

 

③ $ \mu < \mu_0 $ (평균이 $ \mu_0 $ 보다 작다.)

 

이후 과정은 t.test() 함수를 이용하여 구합니다. alternative는 대립가설로 양측검정(같지 않다)이라면 "two.sided"를, 평균이 특정값보다 작은 단측검정이라면 "less"를, 평균이 특정값보다 큰 단측검정이라면 "greater"를 적습니다. mu는 특정값으로 생략하면 기본값인 0으로 계산되고, conf.level은 confidence level로 생략하면 기본값인 0.95(=1-0.05)로 계산됩니다.

 

> t.test( data, alternative, mu, conf.level )

 

 

1집단 t-test 예제와 결과 해석

 

어떤 학원에서 치른 전체 수학 점수 평균은 83.5점이고, B반 학생 10명의 수학 점수는(81, 78, 93, 81, 82, 83, 75, 92, 97, 86)입니다. B반의 수학 점수 평균이 이 학원 전체의 평균(83.5)과 같은지(혹은 전체 평균보다 높은지, 낮은지) 판단하려면 1집단 t-test를 사용합니다.

B반의 점수가 학원 전체 평균보다 높은지 검정하기 위해서 귀무가설은 B반의 평균이 전체 평균과 같다, 대립가설은 B반의 평균이 전체 평균보다 높다고 세웁니다. 이를 식으로 표현하면 아래와 같습니다.

 

$ H_0 : \mu = 83.5 $ vs $ H_1 : \mu > 83.5 $

 

유의수준을 0.05로 설정하고 r을 이용하여 1집단 t 검정을 합니다. 우선, 변수 B에 B반의 점수를 벡터 형태로 할당합니다. 그 후 t.test() 함수를 이용하여 data, 대립가설, mu, 유의수준을 입력합니다. 여기서 유의수준은 0.05이므로 생략했습니다. 

> t.test(x=B, alternative = "greater", mu=83.5)

 

r의 t.test()함수를 이용한 1집단 t검정 결과입니다. 검정통계량인 t값이 0.58035, 자유도(degree of freedom, df)가 9이고 이에 대응되는 p값(p-value)이 0.288로 유의수준 0.05보다 크므로 귀무가설을 기각하지 못합니다. 즉, B반의 평균 점수가 전체 평균보다 크다고 볼 수 없습니다.(=같다고 볼 수 있다.) ture mean의 95% confidence interval(신뢰구간)은 (80.69375, inf)이고 B반의 평균은 84.8로, 신뢰구간이 전체 평균인 83.5를 포함하고, 실제로 B반의 평균인 84.8과 83.5가 큰 차이가 없는 것을 확인할 수 있습니다.

	One Sample t-test

data:  B
t = 0.58035, df = 9, p-value = 0.288
alternative hypothesis: true mean is greater than 83.5
95 percent confidence interval:
 80.69375      Inf
sample estimates:
mean of x 
     84.8

 

 

3. paired t-test(짝진 표본)

 

다이어트 전/후의 데이터, 교육을 듣기 전/후의 점수와 같이 한 개체에 대해 2번의 검사를 시행한 경우를 짝진 표본이라고 합니다. 2번의 검사가 동일한 개체에서 나왔으므로 2집단 t-test를 할 수 없고 paired t 검정을 해야 합니다. paired t 검정은 전/후의 차이(D)를 이용하여 1집단 t 검정과 동일하게 검정하되, 차이가 있는지 없는지가 궁금하므로 차이가 0인지 검정합니다. 따라서 귀무가설은 전, 후의 차이가 없다(D=0), 대립가설은 전후의 차이가 있다(D=0) 또는 차이가 0보다 크다(D>0) 또는 차이가 0보다 작다(D<0)로 세울 수 있습니다.

 

$ H_0 : D = 0 $ vs $ H_1 : D>0 $

 

$ H_0 : D = 0 $ vs $ H_1 : D \ne 0 $

 

$ H_0 : D = 0 $ vs $ H_1 : D<0 $

 

짝진표본 검정도 마찬가지로 t.test() 함수를 이용합니다. data에 전-후 또는 후-전 데이터를 넣고, 대립가설과 confint를 입력합니다. 차이에 대한 검정이므로 mu를 생략하여 0으로 계산합니다.

 

> t.test(data, alternative, conf.level)

 

또는 전, 후의 데이터를 각각 넣고 paired=T 옵션을 줌으로써 짝진표본 검정을 할 수 있습니다.

> t.test(after, before, alternative, paired=T, conf.level)

 

 

paired t-test 예제와 결과 해석

 

어떤 집단에 대해 특정 교육을 받기 전과 후의 점수가 있습니다. 16명의 교육을 받기 전 점수는 20, 6, 12, 34, 55, 43, 54, 24, 33, 21, 34, 33, 54, 23, 33, 44이고, 받은 후의 점수는 23, 8, 11, 35, 57, 76, 54, 26, 35, 26, 28, 31, 56, 22, 35, 41입니다. 이 교육을 받은 후에 점수가 높아졌는지(교육의 효과가 긍정적인지) 검정하려고 합니다. 이에 따른 귀무가설은 효과가 없다(D=0), 긍정적 효과가 있다(D>0)이고 식으로 표현하면 아래와 같습니다.

$ H_0 : D=0 $ vs $ H_1 : D>0 $

 

유의수준을 0.05로 설정하고 r을 이용하여 paired t 검정을 합니다. t.test() 함수를 이용하여 data에 후와 전 데이터의 차이를, 대립가설에 "greater"을 입력합니다. 여기서 유의수준은 0.05이므로 생략했습니다. 

> t.test(x=after-before, alternative = "greater")

 

r의 t.test()함수를 이용한 paired t검정 결과입니다. 검정통계량인 t값이 1.2003, 자유도(degree of freedom, df)가 15이고 이에 대응되는 p값(p-value)이 0.1243으로 유의수준 0.05보다 크므로 귀무가설을 기각하지 못합니다. 즉, 이 교육의 효과가 있다고 볼 수 없습니다.(=효과가 없다.) ture mean(차이)의 95% confidence interval(신뢰구간)은 (-1.1802, inf)이고 차이의 평균은 2.5625로, 신뢰구간이 0을 포함하므로 이 교육의 유의미한 차이가 없다고 볼 수 있습니다.

	One Sample t-test

data:  after - before
t = 1.2003, df = 15, p-value = 0.1243
alternative hypothesis: true mean is greater than 0
95 percent confidence interval:
 -1.1802     Inf
sample estimates:
mean of x 
   2.5625

 

 

4. 2집단 t-test(two sample t-test)

 

2집단 t-test는 서로 다른 2개의 모집단이 있을 때, 두 모집단의 평균을 비교하여 서로 같은지 검정하는 방법입니다. paired t검정과 달리 두 집단의 표본 수가 달라도 됩니다. 귀무가설은 두 집단의 평균이 같다이고, 대립가설은 1집단의 평균이 더 크다 또는 두 집단의 평균이 다르다 또는 2집단의 평균이 더 크다고 세울 수 있고, 식으로 표현하면 아래와 같습니다.

$ H_0 : \mu_1 = \mu_2 $ vs $ H_1 : \mu_1 > \mu_2 $

 

$ H_0 : \mu_1 = \mu_2 $ vs $ H_1 : \mu_1 \ne \mu_2 $

 

$ H_0 : \mu_1 = \mu_2 $ vs $ H_1 : \mu_1 < \mu_2 $

 

2집단 검정에서는 두 집단의 분산이 같은지(등분산), 다른지(이분산)에 따라 값이 바뀌므로 t검정을 하기 전에 등분산 검정(f 검정)을 해야합니다. 등분산 검정의 귀무가설은 두 집단의 분산이 같다, 대립가설은 두 집단의 분산이 다르다 이며 식으로 표현하면 아래와 같습니다.

$ H_0 : \sigma_1 = \sigma_2 $ vs $ H_0 : \sigma_1 \ne \sigma_2 $

 

등분산 검정은 r의 var.test() 함수를 이용합니다. conf.level은 생략하면 기본값인 0.95로 계산됩니다. 이 검정의 결과에 따라 다음의 2집단 t검정의 결과가 달라질 수 있습니다.

> var.test(data1, data2, conf.level)

 

2집단 t검정도 마찬가지로 t.test() 함수를 이용합니다. 두 집단의 데이터를 각각 넣고, 대립가설과 confint를 입력합니다. 위에서 했던 등분산 검정의 결과에 따라 등분산(두 집단의 분산이 동일)이면 var.equal=T, 이분산(두 집단의 분산이 다름)이면 var.equal=F로 옵션을 줍니다.

 

> t.test( data1, data2, alternative, var.equal, conf.level )

 

 

2집단 t검정 예제와 결과 해석

 

A지역과 B지역의 주민들의 점수가 있습니다. A지역의 10명의 점수는 6.5, 9.9, 6.8, 4.8, 4.1, 5.3, 8.0, 4.2, 7.0, 6.2이고, B 지역 9명의 점수는 7.9, 4.3, 6.8, 6.5, 3.4, 13.2, 9.3, 1.3, 6.7입니다. 두 지역의 점수가 같은지 검정하려고 합니다. 이에 따른 귀무가설은 두 집단의 평균이 같다, 대립가설은 두 집단의 평균이 다르다이고 식으로 표현하면 아래와 같습니다.

$ H_0 : \mu_1 = \mu_2 $ vs $ H_1 : \mu_1 \ne \mu_2 $

 

t검정에 들어가기 전, var.test() 함수를 이용하여 등분산 검정을 실시합니다. 유의수준은 0.05로 생략했습니다. 등분산 f검정의 결과, 검정통계량인 f값이 0.26916, 자유도가 9이고 이에 대응하는 p값이 0.0617로 유의수준 0.05보다 크므로 등분산이라는 귀무가설을 기각하지 못합니다. 즉, 두 집단의 분산이 다르다고 볼 수 없습니다.(등분산)

두 집단의 분산의 비율에 대한 95% 신뢰구간은 (0.06177337, 1.10408629)로 1을 포함하므로 등분산이라는 동일한 결과를 얻을 수 있습니다.

> var.test(data1, data2)

	F test to compare two variances

data:  data1 and data2
F = 0.26916, num df = 9, denom df = 8, p-value =
0.06717
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.06177337 1.10408629
sample estimates:
ratio of variances 
          0.269161

 

유의수준을 0.05로 설정하고 r을 이용하여 2집단 t 검정을 합니다. t.test() 함수를 이용하여 두 집단의 데이터와 등분산 검정의 결과인 "two.sided"를 입력합니다. 여기서 유의수준은 0.05이므로 생략했습니다.

> t.test(data1, data2, "two.sided", var.equal=T)

 

r의 t.test()함수를 이용한 2집단 t검정 결과입니다. 검정통계량인 t값이 -0.25648, 자유도가 17이고 이에 대응되는 p값(p-value)이 0.8007로 유의수준 0.05보다 크므로 귀무가설을 기각하지 못합니다. 즉, 두 지역의 평균 점수가 다르다고 볼 수 없습니다.(=두 지역의 평균 점수가 같다.) 두 집단의 평균의 차이의 95% confidence interval(신뢰구간)은 (-2.952377, 2.312377)이고 A지역의 평균은 6.28, B지역의 평균은 6.6으로, 신뢰구간이 0을 포함하므로 두 지역의 차이가 없다고 볼 수 있습니다.

	Two Sample t-test

data:  data1 and data2
t = -0.25648, df = 17, p-value = 0.8007
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.952377  2.312377
sample estimates:
mean of x mean of y 
     6.28      6.60