数学いらずの医科統計学PART7 CHAPTER39で、反復測定分散分析について書いてある。
ふむ、なるほどわからんと思ったが要は対応のある検定を考える。こちらのデータセットをパクってやってみる。
# 下のものをコピペ data0 <- read.table("clipboard", sep="\t", header=TRUE) data1 <- unlist(data0)
t1 t2 t3 0.59 0.75 0.75 0.35 0.52 0.45 0.47 0.87 0.64 0.55 0.47 0.69 0.59 0.5 0.53 0.58 0.66 0.71 0.64 0.71 0.79 0.54 0.54 0.56 0.51 0.79 0.48 0.59 0.58 0.58 0.25 0.23 0.33 0.43 0.59 0.5 0.47 0.66 0.71
実験のデザインとしては、13人の被験者に3つの実験を行い、データを取った。
何も考えないANOVAなら、3つの実験は独立として平均値に差があるかどうかを考える。
t0 <- factor(rep(1:3, each=nrow(data0))) # グループ分け summary(aov(data1 ~ t0)) # ANOVA
Df Sum Sq Mean Sq F value Pr(>F) t0 2 0.0791 0.03954 2.065 0.142 Residuals 36 0.6894 0.01915
雰囲気としてはこんな感じ。
boxplot(data0) mapply(function(i) points(rep(i, nrow(data0)), data0[,i], col=i, pch=16), seq(ncol(data0)))
反復測定分散分析では、各群にいる被験者は独立でない、つまり、1番目の人は実験1, 2, 3それぞれ受けてデータを取られているから、ここで各群で誰がどうだったかの対応を考える。
s0 <- factor(rep(seq(nrow(data0)), ncol(data0))) # どの実験のなかで誰が誰か boxplot(data0) mapply(function(i) points(rep(i, nrow(data0)), data0[,i], col=i, pch=16), seq(ncol(data0))) for(i in 1:(ncol(data0) - 1)){ for(j in seq(nrow(data0))){ segments(i, data0[j, i], i+1, data0[j, i+1], lty=2, col=grey(0.4)) } }
summary(aov(data1 ~ t0 + s0))
Df Sum Sq Mean Sq F value Pr(>F) t0 2 0.0791 0.03954 4.959 0.015759 * s0 12 0.4980 0.04150 5.204 0.000297 *** Residuals 24 0.1914 0.00797 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1