Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SPSS中,R(使用ezAnova)与估计边际均值的差异_R_Statistics_Spss - Fatal编程技术网

在SPSS中,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

这有点像圣母玛利亚,但我希望这里有人以前遇到过。我最近从SPSS转换到R,我现在尝试做一个混合模型方差分析。因为我对自己的R技能还没有信心,所以我使用SPSS中完全相同的数据集来比较我的结果

我有一个数据集

dv=RT

内=课时(2级)、主球(3级)、侧翼(2级)

之间=组(3级)

没有协变量

每个小组级别的参与者人数不等(25,25,23)

在R中,我使用ezAnova软件包进行混合模型方差分析:

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