在 R 调查包中使用分层后权重

机器算法验证 r 民意调查 分层 调查权重 调查抽样
2022-03-02 08:25:48

我正在分析一个具有分层后权重变量的数据集。由于这是一项复杂的调查,因此计划使用 Rsurvey包。我一直在阅读它的文档,感觉能够正确设置调查设计。到现在为止还挺好。也就是说,一个方面对我来说仍然不清楚。

Lumley 说,survey假设权重是抽样权重——即 1/(该观察的选择道具):

使用 svydesign 函数指定调查设计。该函数的主要参数是用于指定抽样单位(PSU 和可选的后期阶段)的 id,用于指定分层的 strata,用于指定抽样权重的 weights,以及用于指定有限人口规模修正的 fpc。这些参数应该作为公式给出,指的是作为数据参数给出的数据框中的列。http://r-survey.r-forge.r-project.org/survey/example-design.html

我的数据集不包含采样权重的变量。它的权重是一个后分层权重,考虑了选择概率、单位不响应,并对样本进行后分层以匹配年龄和性别联合分布。分层后的权重被重新调整为样本大小——有 1,000 个观察值,因此sum(poststratification.wt)=1,000,范围从 ~0.9 到 ~5.5。我仔细检查了数据,可用的信息不允许我从头开始估计概率权重。

svydesign(weights=)所以我的问题是:使用论证中提供的分层后权重,我是否安全或大致安全?如果没有,我该怎么办?(运行 1,000 人的调查超出了我的预算,呵呵)。

3个回答

如果人们他们有分层后的权重,这并不一定意味着他们实施了适当的分层后(例如,将每个人口统计单元中的权重重新调整为已知的人口总数)。我听说的“分层后权重”的使用中大约 80% 实际上是指经过校准的权重(即,与其尝试调整五向表中的每个单元格,不如仅调整权重以匹配五个表的变量单独)。我提出了有人所说的关于这种区别的方法论咆哮。然而,正如安东尼在另一个答案中指出的那样,这种区别在标准误差计算中起作用. 使用适当的后分层权重,您可以应用常规方差估计公式,或多或少地将您的后层视为抽样层(除了较小的技术性)。对于仅在每个表边距上校准的权重,计算会更加复杂。survey无论如何,这两个程序都是在包中内部化的。您只需要将分层/校准后的变量提供给适当的设计对象/公式。

library(survey)
data(api)
# cross-classified post-stratification variable in population
apipop$stype.sch.wide <- 10*as.integer(apipop$stype) +
as.integer(apipop$sch.wide)
# cross-classified post-stratification variable in sample
apiclus1$stype.sch.wide <- 
  10*as.integer(apiclus1$stype) + as.integer(apiclus1$sch.wide)
# population totals
(pop.totals <- xtabs(~stype.sch.wide, data=apipop))
# reference design
dclus1 <- svydesign(id=~dnum,weights=~pw,data=apiclus1,fpc=~fpc)
# post-stratification of the original design
dclus1p <- postStratify(dclus1,~stype.sch.wide, pop.totals)
# design with post-stratified weights, but no evidence of post-stratification
dclus1pfake <- svydesign(id=~dnum,weights=~weights(dclus1p),data=apiclus1,fpc=~fpc)
# taking off the design with known weights, add post-stratification interaction
dclus1pp <- postStratify(dclus1pfake,~stype.sch.wide, pop.totals)

# estimates and standard errors: starting point
svymean(~api00,dclus1)
# post-stratification reduces standard errors a bit
svymean(~api00,dclus1p)
# but here we are not aware of the survey being post-stratified
svymean(~api00,dclus1pfake)
# if we just add post-stratification variables to the design object
# that only had post-stratified weights, the result is the same
# as for post-stratified object based on the original weights
svymean(~api00,dclus1pp)

正如@StasK 所说,倾斜/校准权重的正确标准误差取决于原始权重和辅助变量,并且仅将它们视为采样权重不会得到正确的标准误差。如果集群在后层之间分裂,即使后分层也可能存在问题。

如果您有辅助变量,您实际上并不需要原始权重。survey您可以重新校准包装中的砝码。权重不会改变——它们已经被校准了——但是由它们产生的标准误差估计会改变。在Gillian Raab 创建的PEAS 示例中有一个很好的例子

但是,在官方统计数据中,将校准权重视为抽样权重是很常见的。这就是 NHANES 和 BRFSS 公共使用数据集所做的,以及几乎任何其他使用公共使用数据的大型调查。直到最近,用户还没有软件可以做到这一点。所以,这不是“最佳实践”,但它可能是“足够好的实践”

坏消息 :) 如果您不考虑原始权重和分层后权重之间的关系,您的标准误差、置信区间和显着性检验将不正确。

我相信如果你有抽样集群,你可以反算原始抽样权重(尽管你必须投入大量时间来反转postStratify命令中的方法)。

与其花更多的钱,不如让创建此数据的人提供两组权重。这是原始调查管理员拥有的信息,可以以电子邮件的价格发送给您。