多年度BRFSS数据使用svydesign按year嵌套的复杂抽样设计配置问题
正确实现代码
你只需要修改svydesign的分层参数,将年份与原生分层变量绑定,同时替换PSU参数即可,完整代码如下:
library(survey) options(survey.lonely.psu = "adjust") des <- svydesign( ids = ~ psu, strata = ~ interaction(year, ststr), weights = ~ finalwt, nest = TRUE, data = df )
逻辑说明
- BRFSS每一年的抽样框架是完全独立的,不同年份的相同编码分层(
ststr)没有关联,用interaction(year, ststr)可以生成年度唯一的分层标识,避免跨年度分层混淆,满足按year字段嵌套的需求。 - 你的数据中
psu字段已经带年份前缀(2016开头的数值),天然跨年度唯一,直接作为聚类参数即可;你原来写的ids=~1会忽略PSU的聚类效应,严重低估标准误。 - 你已经完成重加权的
finalwt可以直接使用,不需要额外调整权重参数。
常用分析示例
如果需要按年度分组计算统计指标,可使用svyby函数:
# 示例:按年度计算结直肠癌筛查率的加权均值及标准误 svyby(~met_crc, ~year, des, svymean, na.rm = TRUE)
内容的提问来源于stack exchange,提问作者Todd Burus
相关产品推荐
相关产品推荐

