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

如何用gtsummary::tbl_svysummary复现survey::svyby(svymean)的结果?

用gtsummary的tbl_svysummary复现survey::svyby(svymean)结果的解决方法

你需要调整tbl_svysummary()的参数配置,以下是正确的实现代码和说明:

核心问题分析

你之前的代码存在两个关键问题:

  1. by和include参数颠倒了——svyby(~both, ~stype, ...)是按stype分组计算both的均值,对应tbl_svysummary应该设置by = stype、include = both
  2. 统计量模板用了sd,但抽样调查中需要的是标准误(std.error),而非普通标准差

正确代码实现

library(survey)
library(gtsummary)

data(api)
dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)

# 原svyby生成的结果
svyby(~both, ~stype, dclus1, svymean)

# 用tbl_svysummary复现相同结果
dclus1 %>% 
  tbl_svysummary(
    by = stype,                # 指定分组变量为stype,对应svyby的~stype
    include = both,            # 指定分析变量为both,对应svyby的~both
    statistic = all_dichotomous() ~ "{mean} ({std.error})",  # 输出均值(比例)+标准误
    digits = all_dichotomous() ~ c(3, 3)  # 设置小数位数,和svyby结果匹配
  ) %>%
  modify_header(label = "变量", stat_by = "**{level}**")  # 优化表头可读性

说明

  • all_dichotomous()专门针对二分变量(both是0/1变量),比all_categorical()更精准
  • {mean}对应svymean计算的比例值,{std.error}对应抽样标准误,和svyby输出的结果完全匹配
  • 通过digits参数可以调整小数位数,和原结果的格式保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:05:12