6

如果您的数据集已经具有 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

任何帮助将不胜感激,谢谢。

4

2 回答 2

4

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

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

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

-- 这样,您不必确定确切的列号。然后你可以运行正常的调查命令,比如——

svymean( ~variable , design = yoursurvey )

如果您想要另一个示例,这里有一些示例代码和使用当前人口调查的解释性博客文章。

于 2012-10-25T16:33:57.077 回答
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的文章很有帮助:Damico, A. (2009). Transitioning to R: Replicating SAS, Stata, and SUDAAN Analysis Techniques in Health Policy Data. The R Journal, 1(2), 37–44.

于 2012-10-16T03:05:42.950 回答