使用 mice R 包进行多重插补后的聚类稳健标准误差
Cluster robust standard errors after multiple imputation using mice R package
我想使用 mids class 对象计算聚类稳健标准误差。这是由我的原始数据列中缺失值的多重插补引起的。下面是一个最小的例子。
library(mice)
y <- c(1,0,0,1,1,1,1,0)
x <- c(26, 34, 55, 15, 31 ,47, 97, 12)
z <- c(2, NA, 0, NA, 3 ,7,7, 5)
mydata <- as.data.frame(cbind(y,x,z))
tempData <- mice(mydata,m=5,maxit=5,meth='pmm',seed=500)
class(tempData)
# [1] "mids"
modelFit <- with(tempData,lm(y ~ x + z))
summary(modelFit)
在这一点上,我想获得集群鲁棒标准错误。不幸的是 miceadds::lm.cluster 不允许 "mids" class 对象。
miceadds
中的函数 lm.cluster
适用于常规数据帧。 documentation.
中给出了乘以估算数据的应用程序示例
下面给出的是根据您的问题改编的版本。我使用第一个变量作为聚类指标,因为你的例子没有。
library(mice)
library(miceadds)
id <- c(1,0,0,1,1,1,1,0)
y <- c(26,34,55,15,31,47,97,12)
x <- c(2,NA,0,NA,3,7,7,5)
dat <- data.frame(id,y,x)
imp <- mice(dat, m=5, maxit=5, method='pmm', seed=500)
implist <- lapply(1:5, function(i) complete(imp,i))
mod <- lapply( implist, function(i){
lm.cluster( i, formula=y~x, cluster=i$id )
})
# extract parameters and covariance matrices
betas <- lapply(mod, coef)
vars <- lapply(mod, vcov)
# pool
summary(pool_mi( qhat=betas, u=vars ))
我想使用 mids class 对象计算聚类稳健标准误差。这是由我的原始数据列中缺失值的多重插补引起的。下面是一个最小的例子。
library(mice)
y <- c(1,0,0,1,1,1,1,0)
x <- c(26, 34, 55, 15, 31 ,47, 97, 12)
z <- c(2, NA, 0, NA, 3 ,7,7, 5)
mydata <- as.data.frame(cbind(y,x,z))
tempData <- mice(mydata,m=5,maxit=5,meth='pmm',seed=500)
class(tempData)
# [1] "mids"
modelFit <- with(tempData,lm(y ~ x + z))
summary(modelFit)
在这一点上,我想获得集群鲁棒标准错误。不幸的是 miceadds::lm.cluster 不允许 "mids" class 对象。
miceadds
中的函数 lm.cluster
适用于常规数据帧。 documentation.
下面给出的是根据您的问题改编的版本。我使用第一个变量作为聚类指标,因为你的例子没有。
library(mice)
library(miceadds)
id <- c(1,0,0,1,1,1,1,0)
y <- c(26,34,55,15,31,47,97,12)
x <- c(2,NA,0,NA,3,7,7,5)
dat <- data.frame(id,y,x)
imp <- mice(dat, m=5, maxit=5, method='pmm', seed=500)
implist <- lapply(1:5, function(i) complete(imp,i))
mod <- lapply( implist, function(i){
lm.cluster( i, formula=y~x, cluster=i$id )
})
# extract parameters and covariance matrices
betas <- lapply(mod, coef)
vars <- lapply(mod, vcov)
# pool
summary(pool_mi( qhat=betas, u=vars ))