在SPSS中,R(使用ezAnova)与估计边际均值的差异
这有点像圣母玛利亚,但我希望这里有人以前遇到过。我最近从SPSS转换到R,我现在尝试做一个混合模型方差分析。因为我对自己的R技能还没有信心,所以我使用SPSS中完全相同的数据集来比较我的结果 我有一个数据集 dv=RT 内=课时(2级)、主球(3级)、侧翼(2级) 之间=组(3级) 没有协变量 每个小组级别的参与者人数不等(25,25,23) 在R中,我使用ezAnova软件包进行混合模型方差分析:在SPSS中,R(使用ezAnova)与估计边际均值的差异,r,statistics,spss,R,Statistics,Spss,这有点像圣母玛利亚,但我希望这里有人以前遇到过。我最近从SPSS转换到R,我现在尝试做一个混合模型方差分析。因为我对自己的R技能还没有信心,所以我使用SPSS中完全相同的数据集来比较我的结果 我有一个数据集 dv=RT 内=课时(2级)、主球(3级)、侧翼(2级) 之间=组(3级) 没有协变量 每个小组级别的参与者人数不等(25,25,23) 在R中,我使用ezAnova软件包进行混合模型方差分析: results <- ezANOVA( data = ant_rt_correct
results <- ezANOVA(
data = ant_rt_correct
, wid = subject
, dv = rt
, between = group
, within = .(session, cue, flanker)
, detailed = T
, type = 3
, return_aov = T
)
结果很好,即:
R:会话F(1,70)=46.123 p=.000
SPSS:会话F(1,70)=46.123 p=.000
我还要求使用以下公式计算每个单元格的平均值:
descMeans <- ezStats(
data = ant_rt_correct
, wid = subject
, dv = rt
, between = group
, within = .(session, cue, flanker) #,cue,flanker)
, within_full = .(location,direction)
, type = 3
)
descMeans我建议你试试这个:
library(lme4) ### I'm guessing you need to install this package first
mod <- lmer(rt ~ session + cue + flanker + (1|group),
data = ant_rt_correct)
library(emmeans)
emm <- emmeans(mod, ~ session * cue * flanker)
pairs(emm, by = c("cue", "flanker") # simple comparisons for session
pairs(emm, by = c("session", "flanker") # simple comparisons for cue
pairs(emm, by = c("session", "cue") # simple comparisons for flanker
library(lme4)####我猜您需要先安装此软件包
对于初学者来说,你不能只编写你认为应该有效的语法。在这种情况下,表达式~group | session | cue |侧翼
在emmeans()
函数中没有意义。只有一个|
可以在那里(我不知道它将如何处理您的规范,我是包开发人员)。阅读文档并决定什么是合适的。我想你需要~group*session*cue*侧翼
给定你的SPSS代码。(续下一条评论)顺便说一句,我能想到的导致差异的主要原因是:(1)你在R中拟合的模型与你在SPSS中拟合的模型不等价。(这似乎更有可能);(2)SPSS对EMM的定义不同,可能是某种加权平均数。但我会专注于(1)。如果你的回归系数、随机效应估计值等不匹配,这对emmeans来说不是问题(至少到目前为止)。首先,我还要说的是,很难理解你想在SPSS中建立什么样的模型。我不使用SPSS,但这看起来真是一团糟。.spatial
的多个实例让我确信,您的aov_ez
模型甚至与您在SPSS中安装的模型不尽相同。您好,谢谢您的评论。关于你的第一点,就emmeans而言,~with the multiple |给了我与*格式语法完全相同的输出,但是输出的格式更容易理解(任何像bonferroni这样的调整都会以不同的方式计算级别)。至于SPSS模型,恐怕这就是它应该看起来的样子。SPSS获取格式广泛的数据,每个单元格的平均值用不同的变量表示。我同意它看起来很糟糕,但这只是它的工作方式。因此,我还认为模型可能会有不同的指定,但所有其他模型统计数据在ezAnova、AFEX(aov_ez)和SPSS之间完全相同。这三种方法的输出不同。鉴于aov_ez模型的emmeans输出似乎更像SPSS数据(以及预期的平均值),我认为这是ezAnova的问题(而不是emmeans的问题)。
eMeans <- emmeans(results$aov, ~ group | session | cue | flanker)
results <- aov_ez(
"subject"
,"rt"
,ant_rt_correct
,between=c("group")
,within=c("session", "cue", "flanker")
)
)
eMeans <- emmeans(results, ~ group | session | cue | flanker)
library(lme4) ### I'm guessing you need to install this package first
mod <- lmer(rt ~ session + cue + flanker + (1|group),
data = ant_rt_correct)
library(emmeans)
emm <- emmeans(mod, ~ session * cue * flanker)
pairs(emm, by = c("cue", "flanker") # simple comparisons for session
pairs(emm, by = c("session", "flanker") # simple comparisons for cue
pairs(emm, by = c("session", "cue") # simple comparisons for flanker