【问题标题】:Raking Multiple Imputed dataset耙多个估算数据集
【发布时间】:2017-03-06 23:18:48
【问题描述】:

这是我上一篇文章的延续

Error with svydesign using imputed data sets

我想在我的估算数据集中运行 rake() 函数。但是,它似乎没有找到输入变量。下面是一个示例代码:

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

如果我将输入数据更改为单个数据集,则该代码有效。也就是说,我有这个而不是des&lt;-svydesign(id=~1, data=imputationList(imp_list))

data3 <- complete(imp,1)

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

如何编辑代码以使其识别rake() 函数中的输入数据集属于多重插补类型?

【问题讨论】:

    标签: r survey r-mice


    【解决方案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 ) ) )
    

    【讨论】:

    • 您好,先生,非常感谢您。顺便问一下,如何导出带有倾斜权重的估算数据?
    猜你喜欢
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多