2017-05-16 25 views
0

我想使用mids類對象來計算羣集健壯標準錯誤。這是由於我原始數據的一列中缺少值的多重插補。下面是一個簡單例子。使用鼠標進行多次插補後的羣集健壯標準錯誤R包

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」類對象。

回答

1

函數lm.cluster in miceadds適用於常規數據幀。在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))