오늘 할 일: 끝내주게 숨쉬기
article thumbnail

락 음악과 클래식 음악으로 분류되는 노래들의 길이는 유의미하게 차이가 날까요? 유산소 운동과 무산소 운동을 할 때 소비되는 칼로리에 차이가 있을까요? 이렇게 두 집단(락/클래식, 유산소/무산소)에 따라 값(노래 길이, 소비된 칼로리)의 평균에 차이가 존재하는지를 알아보고자 할 때, T-검정(T-test)을 사용합니다. 여기서 독립변수는 두 집단을 갖는 범주형 변수, 종속변수는 연속형 변수여야 합니다.

 

두 집단 평균 비교시 절차

 

독립 표본인 경우

독립적으로 추출된 두 집단의 모평균의 차이를 검정하기 위해 가설은 다음과 같이 설정합니다.

$$H_0 : \mu_1 = \mu_2, \quad H_1 : \mu_1 \ne \mu_2$$

주의해야 할 점은 두 그룹이 동등한(유사한) 집단이라는 보장이 있어야 한다는 것입니다. 이를 "사전 동질성을 만족해야한다"고 말하기도 합니다. 학습방법 A, B에 따른 성적 차이를 알아보기 위해선 각 학습방법을 수행하기 전, 학생들의 능력차에 차이가 없어야겠죠? 만약 개인마다 능력차가 존재한다면 실제로 차이가 없음에도 불구하고 차이가 있다고 판단할 가능성이 있습니다.

또한 두 모집단의 분포가 정규분포를 따른다는 가정도 필요합니다. 단, 표본의 크기가 엄청 커지면 중심극한정리에 의해 표본평균이 정규분포를 따르기 때문에 이 가정은 무시될 수 있습니다. 아래에서 사용할 t.test() 함수는 모집단이 정규분포를 따른다는 가정을 하기때문에 표본 크기가 작고, 정규분포를 따르지 않는다면 비모수적 검정(Mann-Whitney U test, Wilcoxon rank sum test 등)을 수행하는 것이 맞습니다.

 

분산의 동일성 검정(등분산성 검정) : F-검정

mtcars 데이터에서 am(변속기; 0 : 자동, 1 : 수동)에 따라 mpg(연비)의 평균이 동일한지를 알아보겠습니다.

> library(ggplot2)
> library(gridExtra)
> data(mtcars)
> g1 <- ggplot(mtcars, aes(as.factor(am), mpg)) + geom_boxplot()
> g2 <- ggplot(mtcars, aes(mpg)) + geom_histogram(fill = "white", color = "grey30") +
+       facet_wrap(~ am)
> grid.arrange(g1, g2, ncol = 1)

grid.arrange(g1, g2, ncol = 1)의 결과

grid.arrange() 함수는 ggplot으로 만든 그래프들을 하나의 창에 출력하고 싶을 때 사용합니다. 유용해요. 

 

등분산 검정은 var.test() 함수를 사용해 수행합니다.

> var.test(mtcars$mpg ~ as.factor(mtcars$am))

F test to compare two variances

data:  mtcars$mpg by as.factor(mtcars$am)
F = 0.38656, num df = 18, denom df = 12, p-value = 0.06691
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.1243721 1.0703429
sample estimates:
ratio of variances 
         0.3865615 

var.test() 함수는 두 집단에 대해 분산이 동일한지에 대한 F-검정을 수행합니다. 정규모집단을 가정합니다. p값은 0.067으로, 유의수준 0.05에서 두 모분산이 동일하다는 귀무가설을 기각할 만한 증거가 충분하지 않습니다.

 

T-검정 : 등분산 가정

위에서 am = 0인 집단과 am = 1인 집단의 분산이 동일하다고 했으니, 등분산을 가정하고 T-검정을 수행해보겠습니다. t.test() 함수를 사용합니다.

> t.test(mtcars$mpg ~ as.factor(mtcars$am), var.equal = TRUE)

Two Sample t-test

data:  mtcars$mpg by as.factor(mtcars$am)
t = -4.1061, df = 30, p-value = 0.000285
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -10.84837  -3.64151
sample estimates:
mean in group 0 mean in group 1 
       17.14737        24.39231 

var.equal = TRUE는 등분산을 가정한다는 의미입니다. p값이 매우 작아 유의수준 0.05에서 두 집단의 평균이 동일하다는 귀무가설을 기각할 증거를 확보했습니다.

 

T-검정 : 이분산 가정

> t.test(mtcars$mpg ~ as.factor(mtcars$am), var.equal = FALSE)

Welch Two Sample t-test

data:  mtcars$mpg by as.factor(mtcars$am)
t = -3.7671, df = 18.332, p-value = 0.001374
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -11.280194  -3.209684
sample estimates:
mean in group 0 mean in group 1 
       17.14737        24.39231 

두 집단의 분산이 다른 경우 Welch의 근사적 방법을 사용합니다. 등분산 가정에서는 결과 맨 윗줄이 Two Sample t-test이지만 여기서는 Welch Two Sample t-test인 것을 확인하실 수 있습니다.

위 등분산 검정에서 유의수준을 0.1로 설정했다면 등분산이라는 귀무가설을 기각하게 됩니다. 등분산을 가정하지 않고 T-검정을 수행할 때는 var.equal = FALSE라고 지정해줍니다. 사실 지정해줄 필요는 없습니다. t.test() 함수의 디폴트 옵션이거든요. 등분산을 가정하지 않을 때에도 마찬가지로 p값이 매우 작아 두 집단의 모평균이 동일하다는 귀무가설을 기각하게 됩니다.

 

대응 표본인 경우

대응 표본이란

같은 대상에 대해 두 종류의 실험을 수행하여 결과를 얻을 때, 이 표본을 대응 표본이라 합니다. 사실상 모집단이 1개인 경우와 다를 바가 없습니다. 때문에 등분산 검정은 필요하지 않죠. 동일한 실험조건을 갖는 서로 독립인 실험 집단을 구성하기 어려울 때 유용하게 사용합니다. 귀무가설은 다음과 같습니다.

$$H_0 : \mu_{X - Y} = 0, \quad H_1 : \mu_{X - Y} \ne 0_i$$

 

대응표본 T-검정

sleep 데이터는 두 종류의 수면제로부터 효과를 측정한 데이터입니다. 동일한 피실험자 10명에 대해 두 종류의 수면제(group = 1, 2)의 효과가 동일한지를 검정하겠습니다.

> data(sleep)
> str(sleep)
'data.frame': 20 obs. of  3 variables:
 $ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
 $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
 $ ID   : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
> ggplot(sleep, aes(group, extra)) + geom_boxplot()

ggplot의 결과

 

> t.test(extra ~ group, data = sleep, paired = TRUE)

Paired t-test

data:  extra by group
t = -4.0621, df = 9, p-value = 0.002833
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.4598858 -0.7001142
sample estimates:
mean of the differences 
                  -1.58 

독립일 때와는 다르게 paird = TRUE 옵션을 설정해준 것을 확인하셨나요? 유의수준 0.05에서 두 종류의 수면제의 효과가 동일하다는 귀무가설을 기각할 증거가 충분합니다.

 

참고자료

https://uc-r.github.io/t_test

 

t-test: Comparing Group Means · UC Business Analytics R Programming Guide

↩ t-test: Comparing Group Means One of the most common tests in statistics, the t-test, is used to determine whether the means of two groups are equal to each other. The assumption for the test is that both groups are sampled from normal distributions with

uc-r.github.io

그리고 학부시절 각종 수업자료들