我正在使用来自巴西的IBGE的PNS微型数据(可在此处获取:https://ww2.ibge.gov.br/home/estatistica/populacao/pns/2013/default_microdados.shtm)
我使用数据库中的现有变量创建了一些新变量,然后使用下面的代码创建了调查设计。
pes_all_des <-
survey::svydesign(
id = ~ upa_pns ,
strata = ~ v0024 ,
data = base ,
weights = ~ pre_pes_full ,
nest = TRUE
)
post_pop_all <- unique( base[ , c( 'v00283.y' , 'v00282.y' ) ] )
names( post_pop_all ) <- c( "v00283.y" , "Freq" )
match.design <- survey::postStratify( pes_all_des , ~ v00283.y , post_pop_all )
如果我尝试在本调查设计中使用svyglm()
进行回归分析,则会得到“正常”结果,没有警告。
现在,我将这个设计作为子集:
match.design2 <- subset(match.design, d_match==1)
使用svyglm()
运行相同的回归,我收到一条警告消息:
1: In summary.glm(g) :
observations with zero weight not used for calculating dispersion
2: In summary.glm(glm.object) :
observations with zero weight not used for calculating dispersion
此消息实际上是什么意思?它不会阻止我运行回归,所以我不知道我应该为此担心多少。
仅需了解更多信息,如果在两个设计中都进行了summary()操作,我将得到完全不同的结果:
summary(match.design)
Stratified 1 - level Cluster Sampling design (with replacement)
With (6062) clusters.
survey::postStratify(pes_all_des, ~v00283.y, post_pop_all)
Probabilities:
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0000733 0.0008510 0.0018686 0.0033423 0.0036237 0.1058348
> summary(match.design2)
Stratified 1 - level Cluster Sampling design (with replacement)
With (6062) clusters.
subset(match.design, d_match == 1)
Probabilities:
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0001152 Inf Inf Inf Inf Inf
有人可以帮我吗?预先感谢!
瓦格纳
答案 0 :(得分:0)
此行为是survey
软件包试图帮助您避免统计错误的事实的结果。
对于涉及校准/后分层/倾斜的特别复杂的设计,不能简单地通过从感兴趣的子种群外部过滤掉数据来计算子种群(在这种情况下,subset(match.design, d_match == 1)
)的估算值;这种方法produces misleading standard errors and confidence intervals.
因此,为了避免陷入此 statistical 问题,survey
软件包不允许您完全删除感兴趣的子集之外的记录。相反,它实际上会记录您要忽略的行,然后将概率权重有效地调整为零。看到这样的问题:Why do attempts to filter/subset a raked survey design object fail?
实现权重为零的方式是通过更新存储在match.design2$prob
(大小写权重的数字向量)中的权重的值。该向量中与数据中已删除行相对应的条目更改为Inf
(令人困惑的是,Inf
表示权重为零)。
这就是为什么您在包含的输出中看到以下权重摘要的原因:
Probabilities:
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0001152 Inf Inf Inf Inf Inf
我不确定使用svy.glm
是否会引起问题。