我正在使用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
呼叫自动化?