더북(TheBook)

추정 및 검정의 예

help(t.test)에 있는 예제를 살펴보자. t.test( )의 도움말에 나와 있는 예제는 sleep 데이터를 사용한다. sleep 데이터는 최면성 약물을 10명의 환자에게 투여했을 때 수면 시간의 증가를 기록한 데이터다. 각 컬럼의 의미는 다음과 같다.

extra : 수면 시간의 증가량

group : 사용한 약물의 종류

ID : 환자 식별 번호

다음은 sleep 데이터 전체의 내용이다.

> sleep
   extra group ID
 1   0.7     1  1
 2  -1.6     1  2
 3  -0.2     1  3
 4  -1.2     1  4
 5  -0.1     1  5
 6   3.4     1  6
 7   3.7     1  7
 8   0.8     1  8
 9   0.0     1  9
10   2.0     1 10
11   1.9     2  1
12   0.8     2  2
13   1.1     2  3
14   0.1     2  4 
15  -0.1     2  5
16   4.4     2  6
17   5.5     2  7
18   1.6     2  8
19   4.6     2  9
20   3.4     2 10

예를 들어, 1번 수면제를 사용했을 때 환자 1의 수면 시간 증가량은 0.7이었고, 2번 수면제를 사용했을 때 환자 1의 수면 시간 증가량은 1.9였다. 이처럼 동일한 대상에 대해 서로 다른 처방을 했을 때의 비교는 뒤에서 설명할 짝지은 이표본 평균의 비교 문제다. 그러나 여기서는 독립 이표본을 살펴보기 위해 환자 식별 번호가 없다고 가정해보자.

> sleep2 <- sleep[, -3]
> sleep2
   extra group
1    0.7     1
2   -1.6     1
3   -0.2     1
4   -1.2     1
5   -0.1     1
6    3.4     1
7    3.7     1
8    0.8     1
9    0.0     1
10   2.0     1
11   1.9     2
12   0.8     2
13   1.1     2
14   0.1     2
15  -0.1     2
16   4.4     2
17   5.5     2
18   1.6     2
19   4.6     2
20   3.4     2

이제 데이터의 의미가 달라졌다. 1번 행은 어떤 환자인지는 모르지만 누군가가 수면제 1을 복용했더니 수면 시간이 0.7 증가했다는 의미다. 마찬가지로 11번 행 역시 누군가에게 수면제 2를 투여했더니 수면 시간이 1.9 증가했다는 의미다. 이처럼 두 그룹이 있고 각 그룹에서의 표본이 상대 그룹에서의 표본과 아무런 상관관계가 없는 관찰 결과가 독립 이표본 추정 및 검정 대상에 해당한다.

수면제별 수면 시간 증가량의 평균을 계산해보자. 다음은 tapply( )를 사용한 예다.

> tapply(sleep2$extra, sleep2$group, mean)
   1    2
0.75 2.33

doBy::summaryBy( )를 사용할 수도 있다.

> library(doBy)
> summaryBy(extra ~ group, sleep2)
  group extra.mean
1     1       0.75
2     2       2.33

이 장에서는 모분산이 같은 경우만 살펴보기로 했으므로 모분산이 같은지 먼저 검정한다. 분산의 비교에 대한 상세 설명은 ‘7.7.4 이표본 분산’ 절에서 다룬다. 여기서는 분산 비교를 수행하는 var.test( ) 함수의 결과만 활용하자.

> var.test(extra ~ group, sleep2)

  F test to compare two variances

data:  extra by group
F = 0.7983, num df = 9, denom df = 9, p-value = 0.7427
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.198297 3.214123
sample estimates:
ratio of variances
         0.7983426

var.test( )는 두 집단의 분산비 σ12에 대한 가설 검정을 수행한다. var.test( ) 수행 결과 p-value가 0.05보다 커서 귀무가설 ‘H0: 분산의 비가 1이다’를 기각할 수 없다. 또는 신뢰 구간의 개념을 활용해 분산비의 95% 신뢰 구간이 (0.19827, 3.214123)으로 그 안에 1이 포함되어 있어 분산의 비가 1임을 반박할 증거가 없다고 읽어도 된다.

이제 σ12라고 보고 t.test( )를 적용해보자. t.test( )의 주요 인자에는 paired, var.equal이 있다. paired=FALSE는 독립 이표본 검정을 뜻하고, paired=TRUE는 짝지은 이표본 검정을 뜻한다. var.equal은 두 집단의 모분산이 같은지 여부를 뜻한다.

> t.test(extra ~ group, data=sleep2, paired=FALSE, var.equal=TRUE)

  Two Sample t-test

data:  extra by group
t = -1.8608, df = 18, p-value = 0.07919
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -3.363874  0.203874
sample estimates:
mean in group 1 mean in group 2
           0.75            2.33

분석 결과 p-value > 0.05이므로 ‘H0: 모평균에 차이가 없다’는 가설을 기각할 수 없다. 또는 신뢰 구간이 0을 포함하여 평균에 차이가 없다고 읽어도 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.