Mouse transcoding

I have a mids object created from mice . I would like to recode some imputed variables and save the mids object. I know that I could convert the mids object to "long" with complete() , but I want to save the mids object, since it has some additional features.

Here is an example of using the nhanes . Running mice() creates 5 imputed data sets for variables in nhanes . I am focused on hyp .

 library(mice) names(nhanes) nhanes$hyp #[1] NA 1 1 NA 1 NA 1 1 1 NA NA NA 1 2 1 NA 2 2 1 2 NA 1 1 1 imp <- mice(nhanes, print = FALSE) imp$imp$hyp # 1 2 3 4 5 # 1 1 1 1 1 1 # 4 2 1 1 2 2 # 6 1 1 1 1 1 # 10 1 1 1 1 1 # 11 1 1 2 1 1 # 12 1 1 1 1 2 # 16 1 1 2 1 1 # 21 1 1 2 1 1 

How could I recode the imp hyp values ​​inside the mids imp object (e.g. 1 became 5).

So far, my only ideas have been to convert imp to long, extract the variables of interest into a new data frame, transcode, convert the new data frame through as.mids , and then return to imp via cbind.mids() .

 imp_long <- complete(imp, "long", include=T) hyp <- imp_long[, "hyp"] hyp2 <- hyp hyp2[hyp2==1] <- 5 hyp4mids <- data.frame(.imp = rep(0:5, each = nrow(nhanes)), .id = rep(1:nrow(nhanes), times = 6), hyp2, TMP = NA) hyp4mids <- as.mids(hyp4mids, .imp = 1, .id = 2) hyp4mids$chainMean <- hyp4mids$chainVar <- array(NA, dim = c(2, 25, 5), dimnames = list( c("hyp2", "TMP"), 1:25, paste0("Chain ", 1:5))) imp2 <- cbind.mids(imp, hyp4mids) imp2$imp$hyp2 # 1 2 3 4 5 # 1 5 5 5 5 5 # 4 2 5 5 2 2 # 6 5 5 5 5 5 # 10 5 5 5 5 5 # 11 5 5 2 5 5 # 12 5 5 5 5 2 # 16 5 5 2 5 5 # 21 5 5 2 5 5 

It works, but I think I should be able to modify the hyp in the mids imp object directly.

+1
source share
1 answer

It seems like the trick is to modify $ data and $ imp:

 imp <- mice(nhanes, print = FALSE) l1 <- complete(imp, "long") table(l1$hyp) # 1 2 #92 33 imp$data$hyp[imp$data$hyp==1] <- 5 imp$imp$hyp[imp$imp$hyp==1] <- 5 l2 <- complete(imp, "long") table(l2$hyp) # 2 5 #33 92 
+1
source

Source: https://habr.com/ru/post/1205918/


All Articles