调查权重和引导权重以获得计数和 CI's

Survey weights and boostrap wieghts to get counts and CI's

我有一个包含调查数据的文件。例如,文件如下所示:

   IDNUMBER   AGE    SEX   NumPrescr   OnPrescr SURV_WGT  BSW1 BSW2....BSW500

   123456      22     1      6           1          ...    ... ...        ...

这里,OnPrescrp 是一个二元变量,指示受试者是否服用处方药,BSW1 - BSW500 是 bootstrap 权重,SURV_WGT 是每个受试者的调查体重。大约有 20000 个条目。

我的任务是在某些年龄性别组细分中创建各种统计数据的表格。例如,有多少 17 至 24 岁的男性正在服用处方药。对于这些类型的计算,我都需要计数 N 和 95% CI。我对调查方法一点都不熟悉

据我了解,我不能简单地将每个类别中的人数相加以获得每个 question/category 的最终计数 N(即,不能只将所有 17 到 24 岁的男性相加正在使用处方药)。相反,在构建最终计数 N 和置信区间时,我必须考虑调查权重和 bootstrap 权重。

然后我在 STATA 中被告知这是一行命令:

    svyset [pw=SURV_WGT], brr(bsw1-bsw500)

但是我在 R 中工作。 R 中的等效命令是什么?上面的命令究竟在做什么?

PS: 我的大约 20000 个人的样本是大约 3500 万人口的样本。

你会想要在 R 中使用 survey 包。这将是你在 R 中进行 weighted/complex 调查分析的最好朋友。

install.packages("survey")

survey 包有两个主要的分析步骤。首先是创建 svydesign 对象,它存储有关您的调查设计的信息,包括权重、重复权重、数据等。然后使用任意数量的分析函数对这些设计进行 运行 analysis/descriptives对象(例如,svymeansvyby - 用于子组分析、svyglm 等等)。

根据您的问题,您有调查权重和复制权重(自举)。虽然更常见的 svydesign 函数用于具有一组权重的调查,但您想要使用 svrepdesign,这将允许您指定调查权重和复制权重。查看文档,但您可以执行以下操作:

mydesign <- svrepdesign(data = mydata,
                        weights = ~SURV_WGT,
                        repweights = "BSW[0-9]+",
                        type = "bootstrap",
                        combined.weights = TRUE)

您应该阅读文档,但简单地说:data 将是您的数据框,weights 采用您的单个调查权重向量,通常作为一个公式,repweights 非常适合它接受一个正则表达式字符串,该字符串按列名标识数据中的所有复制权重列,type 告诉设计您的复制权重是什么(它们是如何得出的),combined.weights 是否合乎逻辑复制权重包含采样权重 - 我假设这是真的,但它可能不是。

从这个设计对象,你可以然后运行分析。例如,让我们按性别计算平均处方数:

myresult <- svyby(~NumPrescr, # variable to pass to function
                  by = ~SEX,  # grouping
                  design = mydesign, # design object
                  vartype = "ci", # report variation as confidence interval
                  FUN = svymean # specify function from survey package, mean here
                  )

希望对您有所帮助!

编辑:如果你想按年龄组查看某些内容,正如你所建议的,你需要创建一个为每个年龄组编码的字符或因子变量,并在你的 svyby 中使用该新变量打电话。