如何在tbl_regression()中使用emmeans()的at参数获取一致分析结果
解决方案:在
tbl_regression()中正确使用emmeans()的at参数 错误原因分析
你之前的两次调用存在两个核心问题:
- 未在
emmeans_args中指定specs = ~ age,tbl_regression无法明确对哪个变量应用emmeans计算 - 第二种调用错误地将
add_pairwise_contrasts放入emmeans_args列表,该参数是tbl_regression的顶层参数,不属于emmeans()的参数范畴
单变量模型的正确实现
以下代码会生成与单独调用emmeans()完全一致的结果,同时整合到gtsummary表格中:
# 构建单变量模型 m <- glm(survived ~ age, data = d, family = binomial(link = "log")) # 生成包含emmeans估计值和两两对比的表格 tbl_regression(m, exponentiate = TRUE) %>% add_emmeans( specs = ~ age, at = list(age = quantile(d$age, probs = c(0.1, 0.5, 0.9))), type = "response", weights = "prop", infer = TRUE, label = list(age = "Age (quantile)") ) %>% add_pairwise_contrasts( pairwise_args = list(infer = TRUE), reverse = FALSE )
多变量模型示例(以加入性别变量为例)
如果是多变量模型,只需调整模型公式,其余逻辑完全一致:
# 构建多变量模型 m_multi <- glm(survived ~ age + sex, data = d, family = binomial(link = "log")) # 生成对应表格 tbl_regression(m_multi, exponentiate = TRUE) %>% add_emmeans( specs = ~ age, at = list(age = quantile(d$age, probs = c(0.1, 0.5, 0.9))), type = "response", weights = "prop", infer = TRUE, label = list(age = "Age (quantile)") ) %>% add_pairwise_contrasts( pairwise_args = list(infer = TRUE), reverse = FALSE )
替代实现(直接在tbl_regression中配置)
若希望在tbl_regression函数内直接完成配置,需确保emmeans_args包含必要参数,且add_pairwise_contrasts作为顶层参数:
tbl_regression( m, exponentiate = TRUE, add_pairwise_contrasts = TRUE, emmeans_args = list( specs = ~ age, at = list(age = quantile(d$age, probs = c(0.1, 0.5, 0.9))), type = "response", weights = "prop", infer = TRUE ), pairwise_reverse = FALSE )
注:这种方式会保留原始模型的回归系数(age每增加1单位的风险比),同时添加两两对比结果;若要完全替换为分位点的预测估计值,推荐使用add_emmeans()的方式。
内容的提问来源于stack exchange,提问作者yuzaR
相关产品推荐
相关产品推荐

