2017-03-06 4 views
1

をレーキングこれは私の前のポスト私は私の帰属データセット内のrake()機能を実行したいと思いますは、複数のデータセット帰属

Error with svydesign using imputed data sets

からの継続です。しかし、入力変数が見つからないようです。以下はサンプルコードです

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 

入力データを1つのデータセットに変更するとコードが機能します。それは私がこの

data3 <- complete(imp,1) 

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

どのように私はそれがrake()機能における入力データセットは、多重代入型であることを認識するであろうようにコードを編集することができますを持って、代わりにdes<-svydesign(id=~1, data=imputationList(imp_list))の、ありますか?

答えて

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

こんにちは、ありがとうございます。ちなみに、盗難された重み付きで帰属データをどのようにエクスポートするのですか? – dixi

関連する問題