使用survey包svysby分组分析时调用svysd计算标准差报错求助
解决加权调查数据分组标准差计算的报错问题
你遇到的报错是因为svysd的返回结构和svymean不兼容,svyby无法正确解析它的输出结果。以下两种方法可以解决这个问题:
方法一:通过方差转标准差(推荐)
利用svyvar计算分组方差,再对结果开平方得到标准差,svyvar的输出结构和svymean一致,能被svyby正常处理:
# 计算分组方差 group_var <- svyby(~LBXSATSI, ~RIAGENDR, design = NHANES_design, svyvar, na = TRUE) # 从方差推导标准差 group_var$LBXSATSI_sd <- sqrt(group_var$LBXSATSI) # 查看最终结果 print(group_var)
方法二:自定义适配svyby的标准差函数
如果想直接调用svysd,可以写一个包装函数,将svysd的输出转换为svyby能识别的结构:
# 自定义适配svyby的svysd包装函数 svysd_wrap <- function(formula, design, ...) { sd_out <- svysd(formula, design, ...) # 提取标准差并整理为svyby兼容的格式 structure( list(coef = setNames(sd_out$stats["Std Dev"], all.vars(formula))), class = "svystat" ) } # 用自定义函数计算分组标准差 group_sd <- svyby(~LBXSATSI, ~RIAGENDR, design = NHANES_design, svysd_wrap, na = TRUE) print(group_sd)
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

