使用连续预测变量的多个值计算 emmeans

Posted

技术标签:

【中文标题】使用连续预测变量的多个值计算 emmeans【英文标题】:Calculate emmeans using multiple values of the continuous predictor 【发布时间】:2021-08-21 23:19:43 【问题描述】:

这个问题与Emmeans continuous independant variable有关

我想用单线计算至少三个 diameter 值的 EMM,即最小值、平均值和最大值。指定cov.reduce = range 仅使用最小值和最大值diameter 给出估计值,删除cov.reduce = range 给出使用平均值diameter 的估计值。

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(range, mean) 仅给出平均值 diameter 的估计值。

> 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

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

【问题讨论】:

【参考方案1】:

这很容易做到,因为您可以指定任何功能。所以试试

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() 的文档。

【讨论】:

以上是关于使用连续预测变量的多个值计算 emmeans的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中的 emmeans() 命令中评估字符串变量作为因子?

Emmeans 没有从模型中给我正确的调整方法

auc原理与实现

R语言笔记——将分类变量转换为连续变量

使用来自 emmeans::ref_grid 的两个变量的组合重建参考网格

如何用神经网络实现连续型变量的回归预测?