如果您的数据集已经已经对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
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
如果您的数据框已经具有重复权重,则无需使用as.svrepdesign()
您可以直接从数据框创建重复加权设计。
假设您有一个名为mainwgt
的主要权重列的数据和80个重复的权重列,名为repwgt1
到repwgt80
,您可以使用它 -
yoursurvey <-
svrepdesign(
weights = ~mainwgt ,
repweights = "repwgt[0-9]+" ,
type = "BRR",
data = yourdata ,
combined.weights = TRUE
)
- 这样,您无需识别确切的列号。然后你可以运行正常的调查命令,如 -
svymean( ~variable , design = yoursurvey )
如果你想要另一个例子,可以使用当前的人口调查来some example code和an 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.