獨斷論

Dependent measures t test (통계 R 초급 - 4) 본문

과학과 기술/R 통계

Dependent measures t test (통계 R 초급 - 4)

부르칸 2013. 7. 25. 22:22

Dependent measures t test는 하나의 그룹의 측정값을 시간에 따라 측정했을때 얼마나 차이가 나는지 보는 것이며 repeated measures의 한 종류이다.

예를들어 식욕부진환자가 가족치료요법 전후로 몸무게가 어떻게 변화하였는지 본다면 dependent measures t test를 사용하여야만 할 것이다.

 

이를 R에서 수행해보자.

R에는 많은 데이터베이스를 제공하는데 MASS 패키지에 anorexia가 식욕부진환자의 데이터이다. 이를 불러들이기 위하여 아래와 같이 수행한다.

> data(anorexia, package="MASS")
> anorexia
   Treat Prewt Postwt
1   Cont  80.7   80.2
2   Cont  89.4   80.1
3   Cont  91.8   86.4
4   Cont  74.0   86.3
:                                       # 중간에 데이터는 생략함

:                      # 중간에 데이터는 생략함

67    FT  82.1   95.5
68    FT  77.6   90.7
69    FT  83.5   92.5
70    FT  89.9   93.8
71    FT  86.0   91.7
72    FT  87.3   98.0
>

만약 위 명령어를 수행했을때 MASS를 열수 없다고 나오면 library(MASS)를 수행하면 된다.

Treat는 처치방법을 나타내고 FT라고 되어 있는 것이 가족치료요법을 사용한 환자이다. Prewt는 처치전의 몸무게를 나타내며 Postwt는 처치이후의 몸무게를 나타낸다.

 

이제 가족치료요법만 수행한 환자의 데이터만 골라내자.

> ft.dat = subset(anorexia, subset=(Treat=="FT"))
> ft.dat
   Treat Prewt Postwt
56    FT  83.8   95.2
57    FT  83.3   94.3
58    FT  86.0   91.5
59    FT  82.5   91.9
60    FT  86.7  100.3
61    FT  79.6   76.7
62    FT  76.9   76.8
63    FT  94.2  101.6
64    FT  73.4   94.9
65    FT  80.5   75.2
66    FT  81.6   77.8
67    FT  82.1   95.5
68    FT  77.6   90.7
69    FT  83.5   92.5
70    FT  89.9   93.8
71    FT  86.0   91.7
72    FT  87.3   98.0

필요한 데이터를 골라냈으므로 불러들였던 anorexia를 지운다.

> rm(anorexia)
> ls()
[1] "ft.dat"

Dependent sample의 t test는 다음과 같이 수행하면 된다.

    > t.test(ft.dat$Postwt, ft.dat$Prewt, paired=T, alternative="greater")


            Paired t-test


    data:  ft.dat$Postwt and ft.dat$Prewt
    t = 4.1849, df = 16, p-value = 0.0003501
    alternative hypothesis: true difference in means is greater than 0
    95 percent confidence interval:
     4.233975      Inf
    sample estimates:
    mean of the differences
                   7.264706

p-value가 0.0004이므로 alternative hypothesis를 받아들여 가족치료요법을 한 그룹의 몸무게가 통계적으로 의미있게 증가하였다고 결론지을수 있다.

 

위와 같은 방법으로 t test를 수행할 수도 있지만 formula를 이용하여 t test를 수행할 수도 있는데 약간 헷갈리는 방법이다.

실행코드는 아래와 같다.

    > wgt = c(ft.dat$Prewt, ft.dat$Postwt)
    > pre_post = rep(c("pre", "post"), c(17,17))
    > subject = rep(LETTERS[1:17], 2)
    > ftnew.dat = data.frame(subject, pre_post, wgt)
    > ftnew.dat
       subject pre_post   wgt
    1        A      pre  83.8
    2        B      pre  83.3
    3        C      pre  86.0
    4        D      pre  82.5
    .                             #생략

    .                             #

    .

    29       L     post  95.5
    30       M     post  90.7
    31       N     post  92.5
    32       O     post  93.8
    33       P     post  91.7
    34       Q     post  98.0
    > t.test(wgt ~ pre_post, paired=T, alternative="greater") 

            Paired t-test

    data:  wgt by pre_post
    t = 4.1849, df = 16, p-value = 0.0003501
    alternative hypothesis: true difference in means is greater than 0
    95 percent confidence interval:
     4.233975      Inf
    sample estimates:
    mean of the differences
                   7.264706

formula로 사용된건 wgt ~ pre_post이며 mean of the differences는 7.26으로 앞에서 계산한 것과 동일하다.

formula에서 독립변수로 사용된 pre_post의 변수값의 크고작음이 어떻냐에 따라 mean of differences가 음수를 갖기도 하고 양수를 갖기도 한다.

기본적으로 factor level은 알파벳 순서를 따르므로 post가 하위이고 pre가 우위이다.

    > levels(ftnew.dat$pre_post)
    [1] "post" "pre"

항상 첫번째 factor에서 두번째 factor를 빼게 된다. 그래서 mean of differences가 양수가 나온 것인데, 이 factor의 순서를 바꿀수는 없을까?

    > ftnew.dat$pre_post = factor(ftnew.dat$pre_post, levels=c("pre", "post")) 
    > levels(ftnew.dat$pre_post)
    [1] "pre"  "post"
    > t.test(wgt ~ pre_post, paired=T, alternative="greater", data = ftnew.dat) 

            Paired t-test

    data:  wgt by pre_post
    t = -4.1849, df = 16, p-value = 0.9996
    alternative hypothesis: true difference in means is greater than 0
    95 percent confidence interval:
     -10.29544       Inf
    sample estimates:
    mean of the differences
                  -7.264706

factor level을 pre를 작게 두고 그다음으로 post를 두었을때 pre-post가 되므로 mean of difference의 값이 음수가 되었다.

Comments