我正在汇集来自多个估算数据的倾斜加权程序的估计,并且我有兴趣描述链式方程估算的变异性如何延续我的估计。我想通过报告 U-hat (即:估计方差内的平均值)、B (中间方差或由于样本中缺少数据而引起的额外方差)和 λ (即:由于缺失而导致的总方差的比例或 B 占总方差的比例).
这些参数通常可以通过 mice
包中的
pool() 函数轻松访问。但是,我使用
MIcombine
因为 如果我们想将 raking 过程应用于多个估算数据,会更方便。
所以我的问题是:如何从
MIcombine
获得内部和中间方差以及 lambda 比率?
这是一个可重现的代码。
library(mitools)
library(survey)
library(mice)
data(nhanes)
nhanes2$hyp <- as.factor(nhanes2$hyp)
imp <- mice(nhanes2,method=c("polyreg","pmm","logreg","pmm"), seed = 23109)
imp_list <- lapply( 1:5 , function( n ) complete( imp , action = n ) )
des<-svydesign(id=~1, data=imputationList(imp_list))
small.svy.rake<-des
age.dist <- data.frame(age = c("20-39","40-59", "60-99"),
Freq = nrow(des) * c(0.5, 0.3, .2))
# loop through each of the implicates
# applying the `rake` function to each
small.svy.rake$designs <-
lapply(
des$designs ,
rake ,
sample.margins = list(~age),
population.margins = list(age.dist)
)
# new mean bmi estimated after raking with pooled standard error
summary(MIcombine( with( small.svy.rake , svymean( ~ bmi ) ) ))
在标准误差范围内,可以从估算数据的倾斜操作列表中提取
rake.list<-with( des , svymean( ~ bmi ) )#create a list object
datalong<-do.call(rbind, lapply(rake.list , function(x) data.frame(x)))#transform into long format data frame
mean(datalong[,2]) #mean standard error=within standard error
但是,我不知道如何获得其他两个组件,即:中间方差和 lambda 参数,并且希望获得任何帮助来更接近该目标。
MIcombine
不会返回此信息,但它会在内部计算您需要的所有部分。你可以看一下代码:mitools:::MIcombine.default
并修改函数以返回更多东西