You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用add_ci()处理tbl_svysummary对象报错:无适用方法

问题原因与解决方案

直接原因

你遇到的报错是因为gtsummary 1.5.0版本中,add_ci()函数并未实现针对tbl_svysummary类对象的处理方法,而官方文档的示例是基于更高版本的gtsummary编写的——新版本已经补充了该方法的支持,所以直接运行示例会出现方法不匹配的错误。

解决办法

方法1:升级gtsummary到最新版本

这是最省心的方案,升级后add_ci()就能正常处理tbl_svysummary对象,官方示例代码无需修改即可运行。执行以下命令升级:

install.packages("gtsummary")

方法2:不升级版本,手动添加置信区间

如果暂时无法升级,可以通过两种方式手动实现置信区间的添加:

方式A:在tbl_svysummary内部直接指定统计量

利用statistic参数结合置信区间占位符,直接在生成汇总表时包含置信区间:

data(api, package = "survey")
add_ci_ex3 <- 
  survey::svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) %>%
  tbl_svysummary(
    include = c(api00, hsg, stype),
    statistic = list(
      hsg ~ "{mean} ({sd})",
      api00 ~ "{median} ({conf.low}, {conf.high})"
    ),
    estimate_fun = api00 ~ function(x) style_number(x, digits = 1)
  )

方式B:使用add_stat()手动计算并添加

通过add_stat()调用survey包的函数计算置信区间,再插入到汇总表中:

data(api, package = "survey")
add_ci_ex3 <- 
  survey::svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) %>%
  tbl_svysummary(
    include = c(api00, hsg, stype),
    statistic = hsg ~ "{mean} ({sd})"
  ) %>%
  add_stat(
    fns = api00 ~ function(x, tbl, ...) {
      # 调用survey包计算加权中位数及置信区间
      svy_result <- survey::svymedian(~api00, tbl$survey_object, ci = TRUE)
      # 格式化结果并返回
      tibble(
        stat_1 = style_number(svy_result$quantile, digits = 1),
        stat_2 = paste0("(", style_number(svy_result$ci[1], digits = 1), ", ", style_number(svy_result$ci[2], digits = 1), ")")
      )
    },
    location = api00 ~ "label"
  )

内容的提问来源于stack exchange,提问作者Geronimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:35:14