# NOT RUN {
if(require(catdata)){
data(retinopathy)
# prepare data and save true data set
retinopathy$RET <- as.ordered(retinopathy$RET)
retinopathy$SM <- as.logical(retinopathy$SM)
# randomly mask data
set.seed(28325145)
truth <- retinopathy
for(i in seq_along(retinopathy))
retinopathy[[i]][runif(NROW(retinopathy)) < .3] <- NA
cat("\nMasked data:\n")
print(head(retinopathy, 10))
cat("\n")
# impute data
impu <- mdgc(retinopathy, lr = 1e-3, maxit = 25L, batch_size = 25L,
rel_eps = 1e-3, maxpts = 5000L, verbose = TRUE,
n_threads = 1L, method = "svrg")
# show correlation matrix
cat("\nEstimated correlation matrix\n")
print(impu$vcov)
# compare imputed and true values
cat("\nObserved;\n")
print(head(retinopathy, 10))
cat("\nImputed values:\n")
print(head(impu$ximp, 10))
cat("\nTruth:\n")
print(head(truth, 10))
# using augmented Lagrangian method
cat("\n")
impu_aug <- mdgc(retinopathy, maxit = 25L, rel_eps = 1e-3,
maxpts = 5000L, verbose = TRUE,
n_threads = 1L, method = "aug_Lagran")
# compare the log-likelihood estimate
obj <- get_mdgc_log_ml(retinopathy)
cat(sprintf(
"Maximum log likelihood with SVRG vs. augmented Lagrangian:\n %.2f vs. %.2f\n",
mdgc_log_ml(obj, vcov = impu $vcov, mea = impu $mea, rel_eps = 1e-3),
mdgc_log_ml(obj, vcov = impu_aug$vcov, mea = impu_aug$mea, rel_eps = 1e-3)))
# show correlation matrix
cat("\nEstimated correlation matrix (augmented Lagrangian)\n")
print(impu_aug$vcov)
cat("\nImputed values (augmented Lagrangian):\n")
print(head(impu_aug$ximp, 10))
}
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab