调用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
相关产品推荐
相关产品推荐

