我正在尝试运行rmANOVA和相应的回归模型。在实验中,参与者正在完成一份调查问卷,该调查问卷正在评估他们拥有的特质X(得分)。然后他们正在执行一项任务,其中每个参与者都接触到三个条件(COND-nSCM,SCM,SC)。测量他们的大脑反应(ERP)。
这就是它的样子:
> head(df)
code SEX AGE SCORE COND ERP
1 AA1407 male 29 14 nSCM -3.0348373
2 AN0312 male 26 13 nSCM -1.8799240
3 BR1410 male 23 30 nSCM 0.4284033
4 EZ2404 male 23 23 nSCM -0.7615117
5 HA1012 female 27 22 nSCM -2.9301698
6 HS3004 male 30 16 nSCM -0.5468492
由于我对如何在R中使用不同类型的变量感到有点困惑,也许有人也可以向我保证以下内容:
> sapply(df,class)
code SEX AGE SCORE COND ERP
"factor" "factor" "numeric" "numeric" "factor" "numeric"
根据实验设计,ANOVA设计有一个主体间IV:SCORE,一个主体内IV:COND,DV是ERP(右?)。
这是我使用的模型和摘要:
> anERP <- aov(ERP ~ COND*SCORE, data = df)
> summary(anERP)
Df Sum Sq Mean Sq F value Pr(>F)
COND 2 0.21 0.105 0.027 0.9736
SCORE 1 16.87 16.868 4.297 0.0419 *
COND:SCORE 2 0.58 0.289 0.074 0.9291
Residuals 69 270.85 3.925
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
所以,如果这是对的(请告诉我,如果有什么事情似乎不对),我还应该在构建回归模型时找到对SCORE的影响,对吗?另外,我不确定如何解释这种效果,因为AQ是一个区间变量(分数在6-35范围内)。我很感激这里的帮助。
现在我对这个模型的回归看起来很困惑。我从简单的lm模型入手,将SCORE和COND作为固定效果:
> lmERP <- lm(ERP ~ SCORE*COND, data = df)
> summary(lmERP)
Call:
lm(formula = ERP ~ SCORE * COND, data = df)
Residuals:
Min 1Q Median 3Q Max
-5.2554 -1.0916 0.1975 1.4582 3.3097
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.04269 1.06193 -2.865 0.00552 **
SCORE 0.06458 0.05229 1.235 0.22108
CONDSCM -0.08141 1.50180 -0.054 0.95693
CONDnSCM 0.36646 1.50180 0.244 0.80795
SCORE:CONDSCM 0.01111 0.07396 0.150 0.88104
SCORE:CONDnSCM -0.01707 0.07396 -0.231 0.81814
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.981 on 69 degrees of freedom
Multiple R-squared: 0.0612, Adjusted R-squared: -0.006827
F-statistic: 0.8997 on 5 and 69 DF, p-value: 0.4864
然而,这里SCORE的主要作用并没有达到显着性。这怎么可能?不应该rmANOVA和回归显示大致相似的结果(或至少是主效应)? 我想我不是在这里应用正确的线性模型,因为它似乎没有认识到设计中的主题因素内部和之间都有。
我已经阅读了数百个网页,教程和论坛,我仍然对这些模型感到困惑。提前感谢您的任何建议!
答案 0 :(得分:0)
使用R的基础aov
函数指定重复测量或混合模型设计可能会非常混乱。例如,在您编写的代码中,aov
会将所有指定因素视为独立因素(即主体间)。我强烈建议使用一个库,以便更容易地指定这些类型的设计。
ez 库包含ezANOVA
,这使得这些测试很容易执行,前提是所有情况都已完成(所有因素都完全交叉,没有丢失数据)。假设您的CODE
列唯一标识了每个主题,并且您想要包含数据集中的所有因子,那么测试将如下所示:
my.aov <- ezANOVA(data = df, dv = ERP, wid = CODE, between = .(SEX, AGE, SCORE), within = COND).
也可以使用 lme4 包实现这些设计(事实上,ezANOVA
是lme4函数的包装器)。虽然lme4允许更灵活的模型规范并且可以容忍不完整的数据,但其语法更难。 Bodo Winter's tutorial on lme4是一个好的开始,如果你想深入了解。
顺便说一句,执行ANOVA和线性回归通常没什么意义。除非以对待不同因素的方式指定两个测试,否则结果将是等效的。