===== Normal data (MCAR) ===== [,1] [,2] [,3] [1,] 0.0010376 0.01055693 0.1796 [2,] 0.0010274 0.02185791 0.1301 [3,] 0.0000272 0.01532224 0.1451 ^ | bias | MSE| power ^ | complete |0.002082 |0.01030371| 0.174 | | MLE |0.007537 |0.02099279 |0.116 | | Auxiliary| 0.002144| 0.01503080| 0.138| ## simulation with auxiliary variables ## Generate data gen.data<-function(){ N<-100 x1<-rnorm(N) x2<-.1*x1 + rnorm(N) z1<-.9*x2 + rnorm(N) z2<-.9*x1 + rnorm(N) write.table(cbind(x1,x2), 'comp.txt', na ='.', row.names=F, col.names=F) ## missing data in x2 x2[sample(1:N, N*.3)]<-NA write.table(cbind(x1,x2,z1,z2), 'data.txt', na ='.', row.names=F, col.names=F) } read.mplus<-function(out){ out<- suppressWarnings(readLines(out)) out<- out[substr(out,1,5)==' X'] out<- strsplit(out, " +") b1<-out[[1]][3] b1se<-out[[1]][4] c(b1, b1se) } ## conducting the simulation res<-NULL for (i in 1:1000){ ## generate data gen.data() ## run the simulation system("mplus comp.inp") ## get the results out<-'comp.out' temp1<-read.mplus(out) system("mplus mle.inp") ## get the results out<-'mle.out' temp2<-read.mplus(out) system("mplus regression.inp") ## get the results out<-'regression.out' temp3<-read.mplus(out) temp<-as.numeric(c(temp1,temp2,temp3)) res<-rbind(res, temp) } ## calculate bias, MSE, and power bias1<-mean(res[,1])-.1 MSE1<-mean( (res[,1] - .1)^2 ) power1<-mean( (res[,1]-1.96*res[,2] >0)| (res[,1]+1.96*res[,2] <0) ) bias2<-mean(res[,3])-.1 MSE2<-mean( (res[,3] - .1)^2 ) power2<-mean( (res[,3]-1.96*res[,4] >0)| (res[,3]+1.96*res[,4] <0) ) bias3<-mean(res[,5])-.1 MSE3<-mean( (res[,5] - .1)^2 ) power3<-mean( (res[,5]-1.96*res[,6] >0)| (res[,5]+1.96*res[,6] <0) ) rbind(c(bias1, MSE1, power1), c(bias2, MSE2, power2), c(bias3, MSE3, power3)) ===== Normal data (MAR) ===== [,1] [,2] [,3] [1,] -0.0003715 0.01026548 0.1761 [2,] 0.0001807 0.02151804 0.1252 [3,] 0.0011686 0.03087685 0.1051 [,1] [,2] [,3] [1,] 0.002137 0.01066757 0.189 [2,] 0.005039 0.02162380 0.124 [3,] 0.007761 0.03123450 0.100 ## simulation with auxiliary variables ## Generate data gen.data<-function(){ N<-100 x1<-rnorm(N) x2<-.1*x1 + rnorm(N) z1<-.9*x2 + rnorm(N) z2<-.9*x1 + rnorm(N) write.table(cbind(x1,x2), 'comp.txt', na ='.', row.names=F, col.names=F) ## missing data in x2 ## x2[sample(1:N, N*.3)]<-NA ## Missingness depend on x1 x2[x10)| (res[,1]+1.96*res[,2] <0) ) bias2<-mean(res[,3])-.1 MSE2<-mean( (res[,3] - .1)^2 ) power2<-mean( (res[,3]-1.96*res[,4] >0)| (res[,3]+1.96*res[,4] <0) ) bias3<-mean(res[,5])-.1 MSE3<-mean( (res[,5] - .1)^2 ) power3<-mean( (res[,5]-1.96*res[,6] >0)| (res[,5]+1.96*res[,6] <0) ) rbind(c(bias1, MSE1, power1), c(bias2, MSE2, power2), c(bias3, MSE3, power3)) ===== MNAR data ===== [,1] [,2] [,3] [1,] 0.0004883 0.01068175 0.1809 [2,] -0.0018588 0.02183569 0.1250 [3,] -0.0482991 0.01002827 0.1037 [,1] [,2] [,3] [1,] 0.001203 0.01056922 0.192 [2,] -0.003167 0.02165664 0.126 [3,] -0.051676 0.01061156 0.110 ## simulation with auxiliary variables ## Generate data gen.data<-function(){ N<-100 x1<-rnorm(N) x2<-.1*x1 + rnorm(N) z1<-.9*x2 + rnorm(N) z2<-.9*x1 + rnorm(N) write.table(cbind(x1,x2), 'comp.txt', na ='.', row.names=F, col.names=F) ## missing data in x2 ## x2[sample(1:N, N*.3)]<-NA ## Missingness depend on x1 ## x2[x10)| (res[,1]+1.96*res[,2] <0) ) bias2<-mean(res[,3])-.1 MSE2<-mean( (res[,3] - .1)^2 ) power2<-mean( (res[,3]-1.96*res[,4] >0)| (res[,3]+1.96*res[,4] <0) ) bias3<-mean(res[,5])-.1 MSE3<-mean( (res[,5] - .1)^2 ) power3<-mean( (res[,5]-1.96*res[,6] >0)| (res[,5]+1.96*res[,6] <0) ) rbind(c(bias1, MSE1, power1), c(bias2, MSE2, power2), c(bias3, MSE3, power3))