首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用抽象公式表示emmeans方法

用抽象公式表示emmeans方法
EN

Stack Overflow用户
提问于 2019-11-20 11:05:56
回答 1查看 59关注 0票数 1

我使用emmeans通过日志转换得到调整的方法。

但出乎意料的是,当我尝试用一个自定义函数调用它时,这种行为完全不同,没有明确的警告(除了关于日志转换的警告)。

下面是一个可重复的例子:

代码语言:javascript
复制
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调用自动化?

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 11:19:15

这是一个范围界定问题(公式有一个相关的环境,取决于如何/在何处创建它们)。您可以通过计算语言将公式插入到lm调用中:

代码语言:javascript
复制
f = function(formula){
  m = eval(bquote(lm(.(formula), data = db)))
  print(m$call)
  emm = emmeans(m, spec = "cyl", type = "response")
  as.data.frame(emm)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58952867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档