View source: R/multiple.imputation.R
multiple.imputation | R Documentation |
Multiply imputes the missing and censored values in multivariate data.
multiple.imputation(data, prior.params, initial.values, iter, verbose = TRUE)
data |
a list of data containing the lower and upper bounds information for the missing and censored values. |
prior.params |
list of prior parameter specifications. |
initial.values |
list of initial values. |
iter |
number of rounds for doing multiple imputation. |
verbose |
boolean variable indicating whether the running status is printed in the console. Default is set to TRUE. |
A multivariate normal model is assumed on the data, the sweep operator is adopted to calculate the parameters of the conditional models. The implemented multiple imputation algorithm is based on the data augmentation algorithm proposed by Tanner and Wong (1987). The Gibbs sampling algorithm is adopted to update the model parameters and draw imputations of the coarse data. Output is a list including the parameters of the normal models and the imputed data across different iterations of multiple imputation.
A list including the simulated mean and variance values of the assumed normal model, the covariance matrix, the imputed data, and the conditional model parameters across different iterations of multiple imputation.
Goodnight, J. H. (1979). A tutorial on the SWEEP operator. The American Statistician, 33(3), 149-158.
Tanner, M., & Wong, W. (1987). The Calculation of Posterior Distributions by Data Augmentation. Journal of the American Statistical Association, 82(398), 528-540.
## Not run: ### data and indicator miss.dat <- simulated.dat[[1]] data.ind <- simulated.dat[[2]] ### number of observations and variables n <- nrow(miss.dat); p <- ncol(miss.dat) #### bound matrices b1 <- b2 <- matrix(nrow = nrow(data.ind), ncol = ncol(data.ind)) for (i in 1:nrow(b1)) { for (j in 1:ncol(b1)) { b1[i, j] <- ifelse(data.ind[i, j] != 1, NA, miss.dat[i, j]) b2[i, j] <- ifelse(data.ind[i, j] == 0, NA, miss.dat[i, j]) } } colnames(b1) <- colnames(b2) <- colnames(miss.dat) #### create a matrix for including the lower and upper bounds bounds <- list() bounds[[1]] <- b1; bounds[[2]] <- b2 ### prior specifications prior.param <- list( mu.0 = rep(0, p), Lambda.0 = diag(100, p), kappa.0 = 2, nu.0 = p * (p + 1) / 2 ) ### starting values start.vals <- list( mu = rep(0, p), sigma = diag(100, p) ) ### imputation sim.res <- multiple.imputation( data = bounds, prior.params = prior.param, initial.values = start.vals, iter = 500, verbose = FALSE ) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.