【发布时间】:2020-03-16 02:00:30
【问题描述】:
我正在使用emmeans 来通过对数转换来调整均值。
但出乎意料的是,当我尝试使用自定义函数调用它时,行为完全不同,没有明确的警告(关于日志转换的警告除外)。
这是一个可重现的例子:
db = mtcars %>% mutate(cyl=factor(cyl))
m = lm(log(mpg) ~ log(disp) + cyl, data = db)
print(m$call)
emm = emmeans(m, spec = "cyl", type = "response")
as.data.frame(emm)
f = function(formula){
m = lm(formula, data = db)
print(m$call)
emm = emmeans(m, spec = "cyl", type = "response")
as.data.frame(emm)
}
f(log(mpg) ~ log(disp) + cyl)
这里,函数内外模型的唯一区别是call对象(用all.equal()测试)。否则,它们会给出完全相同的结果。
这段代码不是我的,我只是想自动化它,假设“外部函数”输出是正确的。
为什么输出不同?如何自动化emmeans 呼叫?
【问题讨论】:
标签: r functional-programming formula emmeans