The ImputeData function performs multiple imputation on a data frame with missing values using the mice package. It handles missing data by creating multiple imputed datasets based on a specified imputation method and returns a list of completed data frames.
Arguments
- data_missing
A data frame containing missing values to be imputed. The function replaces values coded as
-999withNAbefore imputation.- m
An integer specifying the number of imputed datasets to generate.
- method
A character string specifying the imputation method. Default is
"pmm"(predictive mean matching).- seed
An integer for setting the random seed to ensure reproducibility. Default is
123.- predictorMatrix
An optional matrix specifying the predictor structure for the imputation model. Default is
NULL, meaning that the function will use the default predictor matrix created bymice.
Details
This function replaces specified missing value placeholders (e.g., -999) with NA, and then applies the multiple imputation by chained equations (MICE) procedure to generate multiple imputed datasets. It supports flexible imputation methods and allows for specifying a custom predictor matrix.
Examples
# Example data with missing values
data <- data.frame(
M1 = c(rnorm(99), rep(NA, 1)),
M2 = c(rnorm(99), rep(NA, 1)),
Y1 = rnorm(100),
Y2 = rnorm(100)
)
# Perform multiple imputation
imputed_data_list <- ImputeData(data, m = 5)
# Display the first imputed dataset
head(imputed_data_list[[1]])
#> $data
#> M1 M2 Y1 Y2
#> 1 -1.10735295 1.46242573 1.733784762 1.500961160
#> 2 -0.62788279 1.07465712 -1.432535684 -0.482768943
#> 3 -1.47950195 0.65505667 -0.176478952 0.605210639
#> 4 0.15434317 -0.12313366 0.756314868 0.800685483
#> 5 -2.29948441 -0.92972180 -0.980007712 0.318362191
#> 6 -0.43872768 1.51655653 -0.386424379 0.103472107
#> 7 -0.64968061 -0.07679296 0.381516254 -0.657636600
#> 8 0.42404095 -0.36979194 1.345768539 0.033874701
#> 9 0.04704973 0.60623267 0.983748677 -0.649756559
#> 10 -1.28504407 1.52673800 0.086637298 0.911239650
#> 11 0.04553236 -0.08151085 0.469669925 -0.047272921
#> 12 -1.44942970 1.42835885 -0.892900170 -1.178515013
#> 13 -1.63370440 1.01357184 0.002229617 2.242660967
#> 14 -0.51728496 -0.67657783 0.150747679 1.467485607
#> 15 -0.99115143 -0.23656567 -0.574554552 0.552061735
#> 16 -0.72848504 0.50559912 0.235160435 0.359622515
#> 17 0.45195163 -2.52775293 1.265858408 1.837521669
#> 18 0.88718133 -0.70066867 -1.390298039 0.883273304
#> 19 1.26457340 0.09160758 0.115795724 -1.713201462
#> 20 -1.29141939 0.85217358 0.892577296 0.293728600
#> 21 0.18251031 1.12390932 0.038752879 1.330807535
#> 22 -0.08980967 0.82786930 -0.038372698 0.001025496
#> 23 -0.11262928 -1.36811281 0.811453346 0.944012124
#> 24 0.16280134 0.18975968 0.033486905 -0.163110155
#> 25 0.55586101 1.96075593 0.663318866 0.020936334
#> 26 0.85339468 -0.80601772 -0.220091795 0.551059233
#> 27 -0.19489936 0.24735027 -0.015736545 0.754814726
#> 28 -0.04341191 0.50782823 2.087713501 -1.017904646
#> 29 -0.52943832 -0.49580175 1.496586647 -0.320525550
#> 30 -0.59851060 -0.90210237 -0.309764025 -0.457239570
#> 31 0.14929768 1.01253254 1.584290933 -2.168675688
#> 32 1.25582092 1.63654057 -1.147278380 0.066409650
#> 33 -0.23436953 -0.82552051 0.937994138 1.513114967
#> 34 1.42234028 -1.30128401 -1.176473378 0.242563643
#> 35 0.29212754 -0.48404261 1.402133012 0.196097401
#> 36 -0.73688675 -0.19156194 -0.177175377 -0.656023781
#> 37 -0.12999655 -1.20399135 -0.650604263 -0.478355050
#> 38 2.20088565 -1.55456583 -1.229364408 0.568878744
#> 39 1.61308129 -0.14928970 0.251325895 -2.102626810
#> 40 -0.26749958 -0.98824895 -1.563215351 -0.003301496
#> 41 0.12760317 -1.30053093 0.813079991 0.416918015
#> 42 -0.37089274 0.76400192 -0.110848678 0.473867599
#> 43 -0.45240228 -0.76422002 -0.761172061 -0.062925119
#> 44 1.19747825 1.05984222 0.829512582 -1.636219349
#> 45 0.96133970 0.57440044 -1.055171964 1.168229652
#> 46 1.09924455 1.45435482 0.222967963 -0.408686195
#> 47 0.05353454 1.92660650 2.441195038 -0.094117059
#> 48 -0.07108256 0.37769313 2.000641700 0.467589309
#> 49 -0.26521262 0.45781732 -0.754805825 -0.828195377
#> 50 -1.08747279 -0.31447817 -1.303238961 0.396813229
#> 51 0.11299534 -0.19633722 0.246026158 0.244475509
#> 52 -0.36876161 0.53220725 0.548893707 0.627437586
#> 53 -1.81381842 -1.29693082 0.486414289 -0.805206472
#> 54 -0.72799437 -0.11645988 -0.857244463 -1.932053070
#> 55 -0.32334346 -1.79143581 -0.208889627 0.717082011
#> 56 0.11817806 1.03763845 -0.021828351 1.792486559
#> 57 0.52272118 -0.75173731 0.371728862 1.123194865
#> 58 -0.39471204 1.44332021 -2.300614875 1.609947684
#> 59 -0.73826236 0.73418909 -0.686391490 1.732799496
#> 60 1.31970010 -1.05455799 0.823954712 1.275703717
#> 61 -0.54771747 0.03042473 0.671560953 0.424007988
#> 62 2.11653074 -0.62059166 -0.136811085 -0.137778131
#> 63 0.23888968 -0.19350202 -0.324855419 -0.597937324
#> 64 -0.51596937 0.39360687 1.165364420 -0.722073272
#> 65 1.15875218 -0.03322616 -0.903741440 0.072762483
#> 66 -0.63435781 -0.52872257 0.985612115 1.473362511
#> 67 0.86271083 3.07100715 -0.126323527 -0.316206077
#> 68 -1.68157303 -1.42472377 -1.443967173 -1.414721408
#> 69 -1.63679212 0.33070126 0.032154077 -1.986179040
#> 70 1.43029016 -1.75947902 -2.117716447 0.705734028
#> 71 1.53937650 -1.01638420 1.665816928 -0.790427631
#> 72 -0.07721086 1.03686204 0.575671055 0.758480158
#> 73 0.72223242 0.03471228 -0.002235961 2.078375621
#> 74 0.76201239 -1.69369136 -0.722014992 1.919134900
#> 75 -1.10521674 -0.37408213 0.448672361 0.075529822
#> 76 -1.46116859 -1.25836245 0.051736240 0.267751527
#> 77 0.29556190 -0.60810563 -1.253649454 0.436290736
#> 78 0.65852651 -1.36870786 0.558374959 1.209748781
#> 79 0.64514272 -0.94216345 0.298702402 -1.253055561
#> 80 0.62365346 0.73985773 -0.415528828 1.765028630
#> 81 2.31584930 0.02209434 -1.625374469 -0.159322027
#> 82 -0.38159888 0.54888273 0.299647475 0.898874217
#> 83 0.03168816 -1.35069806 -0.146007948 -0.704995332
#> 84 0.77662540 -0.64446763 0.330470436 1.126896570
#> 85 -1.98304783 1.04784473 -0.344358479 -1.974322214
#> 86 -0.00544671 -0.32139336 0.891762344 -1.244772830
#> 87 0.70241171 0.03432588 -0.136294335 1.031250388
#> 88 1.22316402 1.06394837 0.281191185 0.579097050
#> 89 -0.14139745 -1.58760815 -0.110812460 -1.037890010
#> 90 -0.49537901 -1.58346240 -0.036247432 1.561622325
#> 91 0.84052263 0.11053133 0.024977216 0.101959622
#> 92 0.56005014 0.24629884 0.131053564 2.324238302
#> 93 1.13704594 0.05714992 2.595523922 2.325851550
#> 94 0.47380131 -1.08330350 0.419283992 -1.293149956
#> 95 -0.15044036 0.21630111 -0.281698421 -0.045018855
#> 96 2.13899523 -0.82368553 0.544863114 0.195694234
#> 97 0.21799655 -1.50078040 0.868230689 0.480623395
#> 98 -1.89596918 1.22656701 -0.206675268 2.017342464
#> 99 -0.14273839 -0.21586746 0.074947320 1.195608651
#> 100 NA NA -2.250901330 0.656575520
#>
#> $imp
#> $imp$M1
#> 1 2 3 4 5
#> 100 -0.495379 0.8627108 0.2179965 0.4240409 -0.1413975
#>
#> $imp$M2
#> 1 2 3 4 5
#> 100 1.012533 0.02209434 -1.693691 0.2163011 1.636541
#>
#> $imp$Y1
#> [1] 1 2 3 4 5
#> <0 rows> (or 0-length row.names)
#>
#> $imp$Y2
#> [1] 1 2 3 4 5
#> <0 rows> (or 0-length row.names)
#>
#>
#> $m
#> [1] 5
#>
#> $where
#> M1 M2 Y1 Y2
#> 1 FALSE FALSE FALSE FALSE
#> 2 FALSE FALSE FALSE FALSE
#> 3 FALSE FALSE FALSE FALSE
#> 4 FALSE FALSE FALSE FALSE
#> 5 FALSE FALSE FALSE FALSE
#> 6 FALSE FALSE FALSE FALSE
#> 7 FALSE FALSE FALSE FALSE
#> 8 FALSE FALSE FALSE FALSE
#> 9 FALSE FALSE FALSE FALSE
#> 10 FALSE FALSE FALSE FALSE
#> 11 FALSE FALSE FALSE FALSE
#> 12 FALSE FALSE FALSE FALSE
#> 13 FALSE FALSE FALSE FALSE
#> 14 FALSE FALSE FALSE FALSE
#> 15 FALSE FALSE FALSE FALSE
#> 16 FALSE FALSE FALSE FALSE
#> 17 FALSE FALSE FALSE FALSE
#> 18 FALSE FALSE FALSE FALSE
#> 19 FALSE FALSE FALSE FALSE
#> 20 FALSE FALSE FALSE FALSE
#> 21 FALSE FALSE FALSE FALSE
#> 22 FALSE FALSE FALSE FALSE
#> 23 FALSE FALSE FALSE FALSE
#> 24 FALSE FALSE FALSE FALSE
#> 25 FALSE FALSE FALSE FALSE
#> 26 FALSE FALSE FALSE FALSE
#> 27 FALSE FALSE FALSE FALSE
#> 28 FALSE FALSE FALSE FALSE
#> 29 FALSE FALSE FALSE FALSE
#> 30 FALSE FALSE FALSE FALSE
#> 31 FALSE FALSE FALSE FALSE
#> 32 FALSE FALSE FALSE FALSE
#> 33 FALSE FALSE FALSE FALSE
#> 34 FALSE FALSE FALSE FALSE
#> 35 FALSE FALSE FALSE FALSE
#> 36 FALSE FALSE FALSE FALSE
#> 37 FALSE FALSE FALSE FALSE
#> 38 FALSE FALSE FALSE FALSE
#> 39 FALSE FALSE FALSE FALSE
#> 40 FALSE FALSE FALSE FALSE
#> 41 FALSE FALSE FALSE FALSE
#> 42 FALSE FALSE FALSE FALSE
#> 43 FALSE FALSE FALSE FALSE
#> 44 FALSE FALSE FALSE FALSE
#> 45 FALSE FALSE FALSE FALSE
#> 46 FALSE FALSE FALSE FALSE
#> 47 FALSE FALSE FALSE FALSE
#> 48 FALSE FALSE FALSE FALSE
#> 49 FALSE FALSE FALSE FALSE
#> 50 FALSE FALSE FALSE FALSE
#> 51 FALSE FALSE FALSE FALSE
#> 52 FALSE FALSE FALSE FALSE
#> 53 FALSE FALSE FALSE FALSE
#> 54 FALSE FALSE FALSE FALSE
#> 55 FALSE FALSE FALSE FALSE
#> 56 FALSE FALSE FALSE FALSE
#> 57 FALSE FALSE FALSE FALSE
#> 58 FALSE FALSE FALSE FALSE
#> 59 FALSE FALSE FALSE FALSE
#> 60 FALSE FALSE FALSE FALSE
#> 61 FALSE FALSE FALSE FALSE
#> 62 FALSE FALSE FALSE FALSE
#> 63 FALSE FALSE FALSE FALSE
#> 64 FALSE FALSE FALSE FALSE
#> 65 FALSE FALSE FALSE FALSE
#> 66 FALSE FALSE FALSE FALSE
#> 67 FALSE FALSE FALSE FALSE
#> 68 FALSE FALSE FALSE FALSE
#> 69 FALSE FALSE FALSE FALSE
#> 70 FALSE FALSE FALSE FALSE
#> 71 FALSE FALSE FALSE FALSE
#> 72 FALSE FALSE FALSE FALSE
#> 73 FALSE FALSE FALSE FALSE
#> 74 FALSE FALSE FALSE FALSE
#> 75 FALSE FALSE FALSE FALSE
#> 76 FALSE FALSE FALSE FALSE
#> 77 FALSE FALSE FALSE FALSE
#> 78 FALSE FALSE FALSE FALSE
#> 79 FALSE FALSE FALSE FALSE
#> 80 FALSE FALSE FALSE FALSE
#> 81 FALSE FALSE FALSE FALSE
#> 82 FALSE FALSE FALSE FALSE
#> 83 FALSE FALSE FALSE FALSE
#> 84 FALSE FALSE FALSE FALSE
#> 85 FALSE FALSE FALSE FALSE
#> 86 FALSE FALSE FALSE FALSE
#> 87 FALSE FALSE FALSE FALSE
#> 88 FALSE FALSE FALSE FALSE
#> 89 FALSE FALSE FALSE FALSE
#> 90 FALSE FALSE FALSE FALSE
#> 91 FALSE FALSE FALSE FALSE
#> 92 FALSE FALSE FALSE FALSE
#> 93 FALSE FALSE FALSE FALSE
#> 94 FALSE FALSE FALSE FALSE
#> 95 FALSE FALSE FALSE FALSE
#> 96 FALSE FALSE FALSE FALSE
#> 97 FALSE FALSE FALSE FALSE
#> 98 FALSE FALSE FALSE FALSE
#> 99 FALSE FALSE FALSE FALSE
#> 100 TRUE TRUE FALSE FALSE
#>
#> $blocks
#> $blocks$M1
#> [1] "M1"
#>
#> $blocks$M2
#> [1] "M2"
#>
#> $blocks$Y1
#> [1] "Y1"
#>
#> $blocks$Y2
#> [1] "Y2"
#>
#> attr(,"calltype")
#> M1 M2 Y1 Y2
#> "type" "type" "type" "type"
#>
#> $call
#> mice::mice(data = data_missing, m = m, method = method, predictorMatrix = predictorMatrix,
#> printFlag = FALSE, seed = seed)
#>