主要问题
我正在寻找帮助,在R中为没有主题间因素的数据集设置单向重复测量MANOVA。
背景
虽然有很多很好的指南用于设置具有主题间因素的RM MANOVA,但是当你完全在主题内设计时,我还没有找到任何指导。这个问题看起来应该是相当简单的,但我是使用MANOVA的新手,所以我不确定我是否正确地接近了这个问题。我主要使用R中的car
包,但我愿意接受有关如何以不同方式执行此操作的建议。
为了证明这个问题,我将使用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
。< / p>
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
对我来说这个过程和这个结果似乎是合理的。有两件事让我停下来。
在设置线性模型时,缺少预测变量似乎很奇怪,但我认为最终会在Anova()
idesign
的调用中定义。如果那就是用car
设置Anova的方式,那就太好了。当我有一个明确感兴趣的预测变量时,构建一个没有预测变量的线性模型似乎很奇怪。
如果我使用summary(an.out)
更深入地了解出来的模型,我可以看到设计中的对比。使用上述方法生成的对比度将pre
编码为1,将post
编码为-1。我相信这是我想做的事情的恰当对比,但我并不完全确定。鉴于我可以在imatrix
的调用中使用contrasts
或Anova()
传递自定义对比度,我想确定我要测试的内容(即,我实际测试的是pre
和post
在三个因变量之间的差异。
关于如何理解重复措施的任何帮助和/或建议,我们将非常感谢MANOVA,以及如何在R中实现这一点的具体建议。
加成
我也想在Matlab中做同样的事情,所以如果有人对此提出具体建议,我们将不胜感激(虽然我意识到这可能需要它自己的问题)。