gpt4 book ai didi

r - 在人口五分位数的估算数据集中查找变量的平均值

转载 作者:行者123 更新时间:2023-12-02 05:29:55 25 4
gpt4 key购买 nike

我有一个包含缺失值的数据集“base_data”。因此,我使用包“Amelia”将缺失值归因到对象“a.output”中。

我已经能够使用以下代码找到估算结果中某些变量的均值:

q.out<-NULL
se.out<-NULL
for(i in 1:m) {
dclus <- svydesign(id=~site, data=a.output$base_data[[i]])

q.out <- rbind(q.out, coef(svymean(~hh_expenditure, dclus)))
se.out <- rbind(se.out, SE(svymean(~hh_expenditure, dclus)))}

我使用以下方法合并了结果:

svymean.combine <- mi.meld(q = q.out, se = se.out)

这给出了整个人口中家庭支出 (hh_expenditure) 的平均误差和标准误差。

但是我有一个变量将人口分成财富五分位数 (wealth_quin)。

因此,我现在想找出每个 wealth_quin(变量为 1、2、3、4 或 5)的家庭支出的平均值和标准误差。

我最初尝试对推算数据进行子集化,但出现了很多错误。

有没有办法做到这一点,而不必在估算数据之前将数据分成 5 个财富五分位数?

干杯,

蒂莫西

编辑:这是一个可行的例子

require(Amelia)
require(survey)
a<-as.data.frame(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16))
b<-as.data.frame(c(1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2))
c<-as.data.frame(c(2,7,8,5,4,4,3,8,7,9,10,1,3,3,2,8))
d<-as.data.frame(c(3,9,7,4,5,5,2,10,8,10,12,2,4,4,3,7))
e<-as.data.frame(c(2500,8000,NA,4500,4500,NA,2500,NA,7400,9648,1112,1532,3487,3544,NA,7000)

impute<-cbind(a,b,c,d,e)
names(impute) <- c("X","site","var2","var3", "hh_inc")

所以不,我们有一个数据框可以使用,我想估算 hh_inc 的缺失值。第一步,设置插补数

m<-5

现在运行插补:

a.output <- amelia(x = impute, m=m, autopri=0.5,cs="X",
idvars=c("site","var2"),
logs=c("hh_inc","var3"))

a.output 现在保存来自 5 个插补的数据。

我现在要做的是使用 amelia 的推算值分别找到站点 1 和站点 2 的平均(和标准误差)hh_inc。

那怎么可能呢?我知道如果我忽略 NA 是可以做到的。但这可能会引入偏差,因此我首先将这些值归因于此。

干杯,

蒂莫西

编辑:我为此悬赏了。如果没有人知道确切的方法,那么可以使用 Rubins 公式 (http://sites.stat.psu.edu/~jls/mifaq.html#minf) 将各个估算数据集的结果组合起来因此,我将奖励能够将来自 Amelia 对象的 5 个独立估算数据集转换为 5 个独立、完整的数据框的人。

最佳答案

require(Amelia)
require(survey)
require(data.table)
require(plotrix)

a<-as.data.frame(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16))
b<-as.data.frame(c(1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2))
c<-as.data.frame(c(2,7,8,5,4,4,3,8,7,9,10,1,3,3,2,8))
d<-as.data.frame(c(3,9,7,4,5,5,2,10,8,10,12,2,4,4,3,7))
e<-as.data.frame(c(2500,8000,NA,4500,4500,NA,2500,NA,7400,9648,1112,1532,3487,3544,NA,7000))

impute<-cbind(a,b,c,d,e)
names(impute) <- c("X","site","var2","var3", "hh_inc")

summary(impute)


m <- 5
a.output <- amelia(x = impute, m=m, autopri=0.5,cs="X",
idvars=c("site","var2"),
logs=c("hh_inc","var3"))

stats.out <- NULL
for(i in 1:m){
df2 <- data.table(a.output$imputations[[i]])
df3 <- data.frame(dataset=i,df2[,list(std.error(hh_inc),mean(hh_inc)), by="site"])
stats.out <- rbind(stats.out, df3)
}
colnames(stats.out) <- c("dataset","site","stdError","mean")
stats.out

关于r - 在人口五分位数的估算数据集中查找变量的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12530482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com