추정 및 검정의 예

    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을 포함하여 평균에 차이가 없다고 읽어도 된다.

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