R 使用连续预测器的多个值计算emmeans

R 使用连续预测器的多个值计算emmeans,r,emmeans,R,Emmeans,这个问题涉及到 我想计算至少三个直径值的EMM,即最小值、平均值和最大值,使用一个线性。指定cov.reduce=range仅使用最小和最大diameter进行估计,删除cov.reduce=range则使用平均直径进行估计 mod = glm(log(strength) ~ machine + diameter, data = fiber) emmeans(mod, ~machine*diameter, cov.reduce = range) machine diameter emmean

这个问题涉及到

我想计算至少三个
直径值的EMM,即最小值、平均值和最大值,使用一个线性。指定
cov.reduce=range
仅使用最小和最大
diameter
进行估计,删除
cov.reduce=range
则使用平均
直径进行估计

mod = glm(log(strength) ~ machine + diameter, data = fiber)
emmeans(mod, ~machine*diameter, cov.reduce = range)
machine diameter emmean     SE  df asymp.LCL asymp.UCL
 A             15   3.48 0.0315 Inf      3.42      3.54
 B             15   3.50 0.0333 Inf      3.44      3.57
 C             15   3.43 0.0232 Inf      3.39      3.48
 A             32   3.88 0.0243 Inf      3.83      3.93
 B             32   3.90 0.0228 Inf      3.86      3.95
 C             32   3.83 0.0329 Inf      3.77      3.90
结合
cov.reduce=c(范围,平均值)
仅给出平均
直径的估计值

> emmeans(mod, ~machine*diameter, cov.reduce = c(range, mean))
 machine diameter emmean     SE  df asymp.LCL asymp.UCL
 A           24.1   3.69 0.0167 Inf      3.66      3.73
 B           24.1   3.72 0.0172 Inf      3.69      3.75
 C           24.1   3.65 0.0182 Inf      3.61      3.68

Results are given on the log (not the response) scale. 
Confidence level used: 0.95 
指定数字(不仅是范围内的值,而且是实际的最小值、平均值和最大值)会产生错误

> emmeans(mod, ~machine*diameter, cov.reduce = c(1, 15, 32))
Error in fix.cr(cov.reduce) : Invalid 'cov.reduce' argument

> emmeans(mod, ~machine*diameter, cov.reduce = c( 15, 24, 32))
Error in fix.cr(cov.reduce) : Invalid 'cov.reduce' argument

我知道我可以运行两行代码,然后组合输出,但我想知道是否有一个单行解决方案。谢谢。

这很容易做到,因为您可以指定任何函数。所以试试看

emmeans(..., cov.reduce = function(x) quantile(x, c(0, 0.5, 1)))
这将使用中位数而不是平均值,但您可以编写一个函数,返回您想要的任何结果。它可以是如上所示的内联函数,也可以是单独函数的名称

顺便说一句,对于特定值,使用
at
而不是
cov.reduce
。比如说,

emmeans(..., at = list(diameter = c(15, 24, 32)))
有关详细信息,请参阅
ref_grid()
的文档