如何在R的调查包中使用BRR权重?

时间:2012-10-16 00:31:57

标签: r survey replicate

如果您的数据集已经已经对BRR进行加权,那么是否有人知道如何在Lumley调查包中使用BRR权重估算方差?

我正在使用PISA数据,他们已在其数据集中包含80个BRR重复项。我如何让as.svrepdesign使用这些,而不是试图创建自己的?我尝试了以下操作并得到了后续错误:

dstrat <- svydesign(id=~uniqueID,strata=~strataVar, weights=~studentWeight, 
                data=data, nest=TRUE)
dstrat <- as.svrepdesign(dstrat, type="BRR")

Error in brrweights(design$strata[, 1], design$cluster[, 1], ..., 
    fay.rho = fay.rho,  : Can't split with odd numbers of PSUs in a stratum

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

如果您的数据框已经具有重复权重,则无需使用as.svrepdesign()您可以直接从数据框创建重复加权设计。

假设您有一个名为mainwgt的主要权重列的数据和80个重复的权重列,名为repwgt1repwgt80,您可以使用它 -

yoursurvey <-
    svrepdesign( 
    weights = ~mainwgt , 
    repweights = "repwgt[0-9]+" , 
    type = "BRR", 
    data = yourdata ,
    combined.weights = TRUE
)

- 这样,您无需识别确切的列号。然后你可以运行正常的调查命令,如 -

svymean( ~variable , design = yoursurvey )

如果你想要另一个例子,可以使用当前的人口调查来some example codean explanatory blog post

答案 1 :(得分:2)

我没有使用过PISA数据,去年我使用了svprepdesign方法,使用了美国社区调查(美国人口普查局)的公共使用微量样本,该样本也提供了80个重复权重。他们声明使用Fay方法进行特定调查,因此以下是如何使用该数据构建svyrep对象:

pums_p.rep<-svrepdesign(variables=pums_p[,2:7],
    repweights=pums_p[8:87],
    weights=pums_p[,1],combined.weights=TRUE,
    type="Fay",rho=(1-1/sqrt(4)),scale=1,rscales=1)

attach(pums_p.rep)
#CROSS - TABS
#unweighted
xtabs(~ is5to17youth + withinAMILimit) 
table(is5to17youth + withinAMILimit)

#weighted, mean income by sex by race for select age groups
svyby(~PINCP,~RAC1P+SEX,subset(
   pums_p.rep,AGEP > 25 & AGEP <35),na.rm = TRUE,svymean,vartype="se","cv")

为了让这个工作起来,我发现A. Damico的article很有帮助:Damico, A. (2009). Transitioning to R: Replicating SAS, Stata, and SUDAAN Analysis Techniques in Health Policy Data. The R Journal, 1(2), 37–44.