Мне нужно добавить переменные в вмененные наборы данных, созданные с помощью mice()
, а затем использовать as.mids()
, чтобы собрать их в объект mids
для последующего анализа. Однако когда я использую complete()
для перестроенного объекта mids
, я обнаруживаю, что многие значения в новой переменной, добавленной в набор данных, стали NA.
library(mice)
d1 = as.data.frame(matrix(rnorm(100), nrow = 10))
missingness = matrix(as.logical(rbinom(100,1,.2)), ncol = 10)
d1[which(missingness, arr.ind = T)] = NA #replace some values with NA
d.mids = mice(d1, printFlag = F) #make the imputations
d.long = complete(d.mids, "long", T) #extract the original dataset and the imputed ones
added = data.frame(rowSums(d.long[,3:12])) #make a new column
d.long.aug = cbind(d.long,added) #add it to the data.frame
d.remids = as.mids(d.long.aug) #turn it back into a mids object
d.relong = complete(d.remids,"long",T) #extract it from the mids object
sum(is.na(d.long.aug[11:30,13])) #0, unless a variable failed to impute due to collinearity
sum(is.na(d.relong[11:30,13])) #should be the same as previous value, but almost never is
В приведенном выше примере я создал новый длинный data.frame и применил к нему as.mdids()
, но я получаю те же результаты, если использую cbind
для добавления новой переменной в d.long
или если я назначаю новую переменную d.long$added
.
Как я могу убедиться, что значения в новой переменной останутся там после повторной сборки объекта mids
?