Raking Multiple Imputed dataset

戏子无情 提交于 2021-02-20 02:14:36

问题


This is a continuation from my previous post

Error with svydesign using imputed data sets

I would like to run a rake() function in my imputed dataset. However, it seems it is not finding the input variable. Below is a sample code:

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))


age.dist <- data.frame(age =  c("20-39","40-59", "60-99"),
                   Freq = nrow(des) * c(0.5, 0.3, .2))


small.svy.rake <- rake(design = des, 
                   sample.margins = list(~age),
                   population.margins = list(age.dist))

Error in eval(expr, envir, enclos) : object 'age' not found

The code works if I change the input data to a single dataset. That is, instead of des<-svydesign(id=~1, data=imputationList(imp_list)), I have this

data3 <- complete(imp,1)

des<-svydesign(id=~1, data=data3)

How can i edit the code such that it would recognize that the input dataset in the rake() function is of multiple imputation type?


回答1:


# copy over the structure of your starting multiply-imputed design
small.svy.rake <- des

# 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)
    )

# as you'd expect, the overall number changes..
MIcombine( with( des , svymean( ~ bmi ) ) )
MIcombine( with( small.svy.rake , svymean( ~ bmi ) ) )

# ..but the within-age-category numbers do not
MIcombine( with( des , svyby( ~ bmi , ~ age , svymean ) ) )
MIcombine( with( small.svy.rake , svyby( ~ bmi , ~ age , svymean ) ) )


来源:https://stackoverflow.com/questions/42637406/raking-multiple-imputed-dataset

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!