如何使用 R 执行具有受试者间和受试者内对比的 4 x 4 混合方差分析?

机器算法验证 r 方差分析 重复测量 对比
2022-03-16 16:30:00

R 的初学者在这里与重复测量方差分析作斗争。

我有一个数据集,其中包含一个具有 4 个级别的主题因子(编码在一个称为“组”的单个变量中)和一个具有 4 个级别的主题因子(编码在四个单独的变量“DV1”、“DV2”、“DV3 ','DV4')。

我有以下目标:

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

我知道我可以在 SPSS 中毫无问题地做到这一点,但我无法清楚地知道如何在 R 中做到这一点。我已经看到其中的一部分如何在不同的包中工作,但我没有远远看到这如何在 R 中的一个过程或一组相关过程中工作。

1个回答

一种解决方案的草图(另一种见下文):

  1. 数据需要采用长格式(即每行的值)而不是 SPSS 中的宽格式(即每行一个主题),请参阅 reshape 包或?reshape. 这包括需要有一个变量来指示主题标识符(即主题ID)。
  2. 所有因素(包括主题标识符)都必须属于类因素(str在您的数据框上运行以检查这一点)。如果你不这样做,你的结果将是错误的。
  3. 如果您想获得类型 III 的平方和,请设置默认对比以影响编码:
    options(contrasts=c("contr.sum","contr.poly"))
  4. 使用复合对称相关结构lme从包中指定所需模型(通过nlme预先安装和加载包)。请参阅答案,尤其是我对这个问题的已接受答案的评论。在您的情况下,可能类似于(如果您提供了强烈建议的示例数据,您将收到正确的代码):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现在允许不同的功能来执行对比。最灵活的解决方案(但相当不方便)是L调用中的参数anova.lme(再次参见?anova.lme)。
    其他解决方案也需要一个合适的lme对象作为参数:gmodels包中的函数
    也非常灵活。这个包也提供了这个功能。multcomp包允许 使用alpha 误差调整进行对比(但您只能使用您的一个因素执行对比),使用该功能。 一个新的和有前途的方法是对比包,然而,到目前为止,它似乎并没有提供所有可能的对比。estimablefit.contrasts
    glht

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