################################################################################
#### Project: General functionality
#### Title: Function | Small function | Apply MICE imputation
#### Author: Tom Walker (thomas.walker@usys.ethz.ch)
#### Date: 15 July 2020
#### ---------------------------------------------------------------------------
apply_mice <- function(matrix, iter){
# get column names
cols <- colnames(matrix)
colnames(matrix) <- paste0("C", 1:ncol(matrix))
# apply mice imputation
imp <- mice(
matrix,
iter
)
# generate list and add each imputation round to a bin
imp_list <- list()
for(i in 1:iter){
imp_list[[i]] <- as.matrix(
complete(imp, i)
)
}
# take means of these iterations
out <- apply(
simplify2array(imp_list),
1:2,
mean,
na.rm = T
) %>% as.data.frame
colnames(out) <- cols
# return
return(out)
}