【问题标题】:Using Replicate Weights to Determine Direct Standard Error for PUMS Data使用复制权重确定 PUMS 数据的直接标准误差
【发布时间】:2016-10-17 16:18:52
【问题描述】:
【问题讨论】:
标签:
r
excel
standard-error
census
【解决方案1】:
在 R 中,你可以这样做:
wgt <- "PWGTP"
var <- "SEX"
est <- aggregate(PUMS[[wgt]], by=list(PUMS[[var]]), FUN=sum, simplify=T, drop=F)
err <- vector("list", 80)
for(i in 1:80){
err[[i]] <- aggregate(PUMS[[paste0(wgt, i)]], by=list(PUMS[[var]]), FUN=sum, simplify=T, drop=F)
err[[i]] <- (err[[i]][,2] - est[,2])**2
}
SE <- ((4/80)*colSums(do.call(rbind, err)))**.5
这是假设您正在使用人员记录并计算变量“SEX”的 SE。
还有其他公式可以计算平均值、中位数、比例等的 SE。这里使用的公式可能是最常用的公式,所以我假设这是您要查询的公式。
【解决方案2】:
survey 和 srvyr 软件包对您很有用。
library(tidyverse)
library(survey)
library(srvyr)
hga <- read_csv("ss11hga.csv") # georgia, but it will be the same for you
# survey design, specifying replicate weights
pumsd_hh <- hga %>%
as_survey_rep(
weights = WGTP,
repweights = starts_with("WGTP"),
combined_weights = TRUE
)
# calculate average income and standard error by size of household
pumsd_hh %>%
filter(!is.na(FINCP)) %>%
mutate(NP = ifelse(NP > 5, 5, NP)) %>%
group_by(NP) %>%
summarise(
survey_mean(FINCP, na.rm = TRUE)
)