R中的倒数概率权重

7
我正在尝试将倒数概率权重应用于回归分析,但是lm()只使用分析权重。这是我正在复制的一部分,原始作者在Stata中使用pweight,但我正在尝试在R中复制它。分析权重提供了较低的标准误差,这导致我的某些变量具有显著性问题。
我尝试查看survey软件包,但不确定如何为其准备调查对象以与svyglm()一起使用。这是我想要的方法,还是有更简单的方法应用倒数概率权重?
dput:
data <- structure(list(lexptot = c(9.1595012302023, 9.86330744180814, 
8.92372556833205, 8.58202430280175, 10.1133857229336), progvillm = c(1L, 
1L, 1L, 1L, 0L), sexhead = c(1L, 1L, 0L, 1L, 1L), agehead = c(79L, 
43L, 52L, 48L, 35L), weight = c(1.04273509979248, 1.01139605045319, 
1.01139605045319, 1.01139605045319, 0.76305216550827)), .Names = c("lexptot", 
"progvillm", "sexhead", "agehead", "weight"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -5L))

线性模型(使用解析权重)
prog.lm <- lm(lexptot ~ progvillm + sexhead + agehead, data = data, weight = weight)
summary(prog.lm)

1
以前没有用过,但在 RSeek 上搜索到了 ipw 包。它目前不在 CRAN 上,但你可以安装一个存档版本。 - Gregor Thomas
@Gregor 我看过那个包,但由于它已经过时且不在CRAN中可用,我没有考虑安装。此外,似乎survey已经取代了它,但我无法弄清如何获取回归对象。 - Vedda
值得一提的是,survey包不仅使用倒数概率权重,更重要的是还考虑了基于设计的标准误差。如果您不需要基于设计的标准误差,则可以在“glm”函数中单独使用pweights,无需使用survey包。 - joaoal
1个回答

7

好的,我已经弄清楚了并且想要更新这篇文章以便其他人也能理解。实际上很简单。

data$X <- 1:nrow(data)
des1 <- svydesign(id = ~X,  weights = ~weight, data = data)
prog.lm <- svyglm(lexptot ~ progvillm + sexhead + agehead, design=des1)
summary(prog.lm)

标准错误现在已经正确无误。


你确定这是正确的吗?id参数用于指定聚类设计。对于简单随机设计,id应该为~0~1 - Michał
@Michał 是的,这是正确的。标准误差现在是正确的。我不认为需要 id,但如果您有建议,请提供答案。 - Vedda
1
这个话题已经两年了,但是它很有用 :) 我要补充一下,svydesign(id = ~1, ...) 更简单,并且产生的结果完全相同! - Roah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接