使用 MIcombine 获得方差和 lambda 比率之内和之间?

问题描述 投票:0回答:1

我正在汇集来自多个估算数据的倾斜加权程序的估计,并且我有兴趣描述链式方程估算的变异性如何延续我的估计。我想通过报告 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 参数,并且希望获得任何帮助来更接近该目标。

r survey imputation variance r-mice
1个回答
0
投票

MIcombine
不会返回此信息,但它会在内部计算您需要的所有部分。你可以看一下代码:
mitools:::MIcombine.default
并修改函数以返回更多东西

© www.soinside.com 2019 - 2024. All rights reserved.