小编Dan*_*eal的帖子

将命名的模型列表传递给anova.merMod

我希望能够将命名的模型列表(merMod对象)传递给anova()并在输出中保留模型名称.在使用mclapply()以更高效并行运行一批慢速模型(如glmer)的情况下,这尤其有用.我提出的最好的是在模型列表的去命名版本上使用do.call,但这并不理想,因为我可能有名为(例如)"mod12","mod17"和"mod16"的模型并且这些模型名称在输出中被转换为"MODEL1","MODEL2"和"MODEL3".(在查看单个批次时,这看起来似乎微不足道,但在长时间的建模会话中,有几十个模型,这是一个混乱的确定方法.)

请注意,这与从列表创建和调用线性模型的问题不同,因为我不是要尝试跨列表比较模型对.它比在模型列表上使用lapply更复杂,因为我以非一元的方式使用anova().

这是一个最小的代表:

library(lme4)

formList <- c(mod12 = angle ~ recipe + temp + (1|recipe:replicate),
              mod17 = angle ~ recipe + temperature + (1|recipe:replicate),
              mod16 = angle ~ recipe * temperature + (1|recipe:replicate))
modList <- lapply(formList, FUN=lmer, data=cake)

# Fails because modList is named so it's interpreted as arg-name:arg pairs
do.call(anova, modList)

# Suboptimal because model names aren't preserved
do.call(anova, unname(modList))

# Fails because object isn't merMod (or some other class covered …
Run Code Online (Sandbox Code Playgroud)

r lme4 anova do.call

8
推荐指数
1
解决办法
100
查看次数

标签 统计

anova ×1

do.call ×1

lme4 ×1

r ×1