共分散分析, ANCOVA, アンコバ

ANCOVA, アンコバ

これは僕が作った架空の例題です。結果についてはご意見があると思いますが、ANCOVAの理解のための例題になっておりますのでご了承ください。

例題) 歩行可能な脳卒中患者を対象にした後ろ向き観察研究です。歩行練習A(10名)と歩行練習B(10名)を受けた20名の10m歩行時間の短縮時間を調べました。

データの準備と要約

データセットancovaをdatに格納します(ファイルの読み込み

R
dat <- read.csv("ancova.csv", header=T, fileEncoding = "UTF-8")

歩行練習はfactor型に置換しておきましょう

R
dat$歩行練習 <- as.factor(dat$歩行練習)
datの先頭部分を見てみましょう
R
head(dat)
要約
R
summary(dat)
歩行練習の各群の要約

色々な方法があると思いますが、ここではパッケージを使用しない方法で

R
summary(dat[dat$歩行練習 == "A", 2:4])
summary(dat[dat$歩行練習 == "B", 2:4])

2群の差の検定

箱ひげ図

R
boxplot(短縮時間 ~ 歩行練習, data=dat)

歩行練習Aと歩行練習Bでは随分差があるようです(歩行練習A>歩行練習B)

t検定

2群の差の平均値を比較検定してみます

R
 t.test(短縮時間 ~ 歩行練習, data=dat)

歩行練習の違いにより歩行時間短縮が有意に異なることが分かりました

練習Aの方が10m歩行時間短縮には有効である(95%信頼区間は2.76~6.16)・・・と単純に結果を出してもよいでしょうか

練習前の10m歩行時間が影響しており、もともと時間がかかる人は短縮時間も長くなるのでは・・・?

その疑問に答えるために共分散分析を行います

Rで共分散分析を実行

歩行練習AとBをグラフで確認

R
fig1 <- function() 
    {
    pchAB <- ifelse(
        dat$歩行練習== "A", 19, 21
        )
    plot(
        dat$練習前, dat$短縮時間,
        pch=pchAB, cex=1.5 ,
        xlab="練習前の10m歩行時間",  ylab="短縮時間"
        )
    legend(
        "topleft",
        legend = c("練習A", "練習B"),
        pch = c(19, 21)
        )
    }
fig1()

練習Aは運動機能が低下している(歩行速度が遅い)患者に適応されていたようです

このような場合には、歩行練習前の10m歩行時間を考慮した解析が必要になります(これが共分散分析になります)

歩行練習前の10m歩行時間を共変量として(歩行時間を考慮して)回帰分析を実施します

Rで実施する場合は、重回帰分析と同じ方法です

R
fit <- lm(短縮時間 ~ 歩行練習 + 練習前,  data=dat)
summary(fit)
confint(fit)
結果の解釈

練習前の時間を共変量に入れた(調整した)場合、歩行練習AとBの差は2.32(95%信頼区間:0.63~4.02)となりました

練習前の時間を考慮することで、さきほどのt検定の結果(95%信頼区間:2.76~6.16)よりも差が小さいことが理解できます

2群の差の検定だけでは読み取れなかった違いを吟味することができました。結果だけでよければここまでです。次からはもう少し詳しく勉強してみます。

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

タイトルとURLをコピーしました