추정 및 검정의 예
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( )는 두 집단의 분산비 σ1/σ2에 대한 가설 검정을 수행한다. var.test( ) 수행 결과 p-value가 0.05보다 커서 귀무가설 ‘H0: 분산의 비가 1이다’를 기각할 수 없다. 또는 신뢰 구간의 개념을 활용해 분산비의 95% 신뢰 구간이 (0.19827, 3.214123)으로 그 안에 1이 포함되어 있어 분산의 비가 1임을 반박할 증거가 없다고 읽어도 된다.
이제 σ1=σ2라고 보고 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을 포함하여 평균에 차이가 없다고 읽어도 된다.