如何使用R进行4 x 4混合方差分析,在对象间和对象内进行对比?


11

R的初学者在这里一直在反复测量方差分析。

我有一个数据集,该数据集由一个具有4个级别的主体因素之间的代码(编码为一个称为“组”的单个变量)和一个具有4个级别的主体因素内的数据集(分别编码为四个单独的变量“ DV1”,“ DV2”,“ DV3” ','DV4')。

我的目标如下:

  1. 运行总体重复测量方差分析。
  2. 使用自定义对比来比较组(如SPSS中的LMATRIX命令)。
  3. 使用自定义对比度(如SPSS中的MMATRIX命令)比较不同级别的DV。
  4. 同时进行2)和3)的组合,因此我只比较对象内因素处于特定水平的特定组。
  5. 运行一组不为零的对比。

我知道我可以在SPSS中做到这一点,但没有很多问题,但是我不清楚如何在R中做到这一点。到目前为止,还没有看到这在R中的一个过程或一组相关过程中如何工作。

Answers:


18

一种解决方案的示意图(有关其他解决方案,请参见下文):

  1. 数据需要采用长格式(即每行价值),而不是像SPSS中那样采用宽格式(即每行一个主题),请参见整形包或?reshape。这包括需要一个变量来指示主题标识符(即主题ID)。
  2. 所有因素(包括主题标识符)必须属于类别因素(str在数据框上运行以进行检查)。如果不这样做,您的结果将是错误的。
  3. 如果要获取III型平方和,请设置默认的对比度以进行效果编码:
    options(contrasts=c("contr.sum","contr.poly"))
  4. 使用复杂的对称相关结构lmenlme包中指定所需的型号(预先通过install.packages("nlme")和安装和加载包library(nlme))。查看答案,尤其是我对这个问题的公认答案的评论。在您的情况下,可能会是这样(如果强烈建议您提供示例数据,那么您将收到正确的代码):
    my.anova <- lme(dv ~ group*within, data = your.df, random = ~1|id, correlation = corCompSymm(form = ~1|id))
  5. 使用通用anova函数获取方差分析表(请参阅参考资料?anova.lme):
    anova(my.anova)
    要获取III型平方和,请使用anova参数type设置为的命令"marginal"(这仅在将反差设置为效果编码时有效,请参见点3):
    anova(my.anova, type = "marginal")
  6. 现在,已安装类型的对象lme允许使用各种功能进行对比。最灵活的解决方案(但不太方便)是Lanova.lme?anova.lme)的调用中的参数。
    其他解决方案也需要一个适合的lme对象作为参数:gmodels包中
    estimable函数也非常灵活。该软件包还提供功能。 该multcomp包允许使用alpha-误差调整反差(但你只能执行使用您的一个因素对比),使用功能。 一种新的有前途的方法是对比度包,但是,到目前为止,它似乎并没有消除所有可能的对比度。fit.contrasts
    glht

另一种解决方案是通过-vignette中概述的afex和组合使用标准ANOVA 。lsmeansafex


(+1)非常有启发性的回应。等待博客文章...
chl

?anova.lme对我不起作用,并将methods(anova)其列为不可见的函数。
约翰

@John您nlme之前加载过吗?如果没有,请运行library(nlme),它应该可以工作。如果仍然无法正常工作,请install.packages("nlme")首先。
亨里克(Henrik)

啊...我显然不是,只有lme4
约翰·约翰·约翰(John

@ Henrick,我可以继续执行第5步,但是我无法建立在特定对象内因素水平下比较特定对象间因素的对比。我见过的所有在线文档都与测试不同主题之间因素之间的差异有关。您有示例代码吗?如果您打算在那儿盖这篇博客,我可以等它。
aquadhere 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.