主要问题
我正在寻求帮助,在 R 中为没有主体间因素的数据集设置单向重复测量 MANOVA。
背景
虽然有很多很好的指南来设置具有主题间因素的 RM MANOVA,但到目前为止,当您拥有完全在主题内的设计时,我还没有找到任何指南。这个问题似乎应该相当简单,但我是使用 MANOVA 的新手,所以我不确定我是否正确地解决了这个问题。我主要car
在 R 中使用该包,尽管我愿意接受有关如何以不同方式执行此操作的建议。
为了演示这个问题,我将使用 OBrienKaiser 数据集的一个子集,并且我将假设Hours
受试者内因子的每个水平都代表不同因变量的测量值。然后,我将pre
和post
条件作为我的单个受试者内自变量的两个水平。为简明起见,我将只看Hours
.
所以我的数据集是 16 个受试者,在两个不同的条件(pre
和post
)下测量 3 个不同的因变量(1
、、2
和3
)。
data <- subset(OBrienKaiser,select=c(pre.1,pre.2,pre.3,post.1,post.2,post.3))
我的目标是寻找三个不同因变量组合之间的差异pre
。post
我非常依赖这个指南......
http://socserv.mcmaster.ca/jfox/Books/Companion/appendix/Appendix-Multivariate-Linear-Models.pdf
...但是那里使用的情况并不完全相同,并且包括我没有的主题间条件。到目前为止,我已经能够使用以下方法产生可能正确的结果,但我的问题是我不能完全确定我是否正确设置了问题。一般来说,我的方法是遵循上面概述的步骤,但只是省略了主题之间的条件。
我的方法
我首先通过将条件和因变量视为两个不同的主体内因素来设计函数调用的idata
矩阵Anova()
Condition <- factor(rep(c('Pre','Post'),each=3),levels=c('Pre','Post'))
Measure <- factor(rep(c('M1','M2','M3'),2),levels=c('M1','M2','M3'))
idata <- data.frame(Condition,Measure)
接下来,在数据集上建立多元线性模型,忽略主体间因素。
mod.mlm <- lm(cbind(pre.1,pre.2,pre.3,post.1,post.2,post.3)~1,data=data)
然后我调用Anova()
线性模型对象mod.mlm
,使用idata
我之前定义的对象,并将我的主体内设计设置为~Condition
。
av.out <- Anova(mod.mlm,idata=idata,idesign=~Condition,type=3)
这会产生以下输出...
Type III Repeated Measures MANOVA Tests: Pillai test statistic
Df test stat approx F num Df den Df Pr(>F)
(Intercept) 1 0.91438 160.189 1 15 2.08e-09 ***
Condition 1 0.37062 8.833 1 15 0.009498 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
对我来说,这个过程和这个结果似乎是合理的。有两件事让我停下来。
在设置线性模型时,缺少预测变量似乎很奇怪,但我认为它最终是在对 with 的调用中定义
Anova()
的idesign
。如果这就是设置 Anova 的方式,car
那就太好了。当我有一个我明确感兴趣的预测变量时,构建一个没有预测变量的线性模型似乎很奇怪。如果我
summary(an.out)
过去更深入地了解推出的模型,我可以看到设计中的对比。使用上述方法代码产生的对比度为pre
1 和post
-1。我相信这是我想要做的适当的对比,但我并不完全确定。鉴于可以使用imatrix
或contrasts
在对 的调用中传递自定义对比Anova()
,我想确定我正在尝试测试的内容(即三个因变量之间的差异pre
)post
是我实际测试的内容。
任何关于如何在这种情况下一般地理解重复测量 MANOVA 的帮助和/或建议,以及关于如何在 R 中实现这一点的具体建议,将不胜感激。
奖金
我也想在 Matlab 中做同样的事情,所以如果有人对此有具体建议,将不胜感激(尽管我意识到这可能需要自己的问题)。