===== Power analysis =====
possible journals:
Methodology: http://www.psycontent.com/content/120235/
==== FIML ====
[[R-Mplus-MNAR-Simulation]]
[[FIML-MNAR-0.1]]
[[FIML-MNAR-0.2]]
[[FIML-MNAR-0.4]]
==== Scripts and codes ====
* [[R codes for plot two-sided Q-Q plots]]
* [[Generate complete data for linear model]]
==== Output parameter bias in a table ====
linear.res<-function(filename)
{
##process the results
# res.file<-paste('res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
## filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\linear\\power\\res-N100-T3-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:55),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 psi_I 6 psi_IS 7 psi_S
## s.e. 8 9 10 11 12 13
## 14 chi-value 15 chi-df 16 chi-p 17 CFI 18 TLI 19 H0ll 20 H1ll
## 21 para 22 AIC 23 BIC 24 A-BIC 25 RMSEA 26 RMSEA.l 27 RMSEA.h 28 RMSEA.p 29 SRMR
## model with zero change score
## 30 var_E 31 mu_I 32 psi_I 33 psi_IS 34 psi_S
## 35 36 37 38 39
## 40 chi-value 41 chi-df 42 chi-p 43 CFI 44 TLI 45 H0ll 46 H1ll
## 47 para 48 AIC 49 BIC 50 A-BIC 51 RMSEA 52 RMSEA.l 53 RMSEA.h 54 RMSEA.p 55 SRMR
res.comp<-res.comp[!is.na(res.comp[,55]),]
chi.diff<-(res.comp[,40]-res.comp[,14])
res.comp<-res.comp[chi.diff>0,]
mu_S <- mean(res.comp[,4],na.rm=T)
mu_S
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
alpha.v<-c(1,0,0)
a<-c('-a','-a', '')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
filename<-paste('C:\\zzy\\LongPower\\Results\\MCAR\\linear\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',0,'-a.txt',sep='')
cat(linear.res(filename))
cat(' ')
for (r in r.v){
for (i in 1:3){
filename<-paste('C:\\zzy\\LongPower\\Results\\',M.M[i],'\\linear\\power\\res-N',N,'-T',T,'-alpha',alpha.v[i],'-R',r, a[i] ,'.txt',sep='')
cat(linear.res(filename))
cat(' ')
}
}
cat('\n')
}
}
quad.res<-function(filename)
{
##process the results
#filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\quadratic\\power\\res-N100-T4-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:83),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 mu_Q 6 Beta 7 psi_I 8 psi_IS 9 psi_S 10 PSI_IQ 11 psi_QS 12 psi_Q 13 psi_XI 14 psi_XQ
## s.e. 15 16 17 18 19 20 21 22 23 24 25 26 27
## 28 chi-value 29 chi-df 30 chi-p 31 CFI 32 TLI 33 H0ll 34 H1ll
## 35 para 36 AIC 37 BIC 38 A-BIC 39 RMSEA 40 RMSEA.l 41 RMSEA.h 42 RMSEA.p 43 SRMR
## model with zero change score
## 44 var_E 45 mu_I 46 mu_S 47 mu_Q 48 Beta 49 psi_I 50 psi_IS 51 psi_S 52 PSI_IQ 53 psi_QS 54 psi_Q 55 psi_XI 56 psi_XQ
## s.e. 57 58 59 60 61 62 63 64 65 66 67
## 68 chi-value 69 chi-df 70 chi-p 71 CFI 72 TLI 73 H0ll 74 H1ll
## 75 para 76 AIC 77 BIC 78 A-BIC 79 RMSEA 80 RMSEA.l 81 RMSEA.h 82 RMSEA.p 83 SRMR
res.comp<-res.comp[!is.na(res.comp[,83]),]
chi.diff1<-(res.comp[,68]-res.comp[,28])
res.comp<-res.comp[chi.diff1>0,]
Beta <- mean(res.comp[,6])
Beta
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
alpha.v<-c(1,0,0)
a<-c('-a','-a', '-a')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
filename<-paste('C:\\zzy\\LongPower\\Results\\MCAR\\quadratic\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',0,'-a.txt',sep='')
cat(quad.res(filename))
cat(' ')
for (r in r.v){
for (i in 1:3){
filename<-paste('C:\\zzy\\LongPower\\Results\\',M.M[i],'\\quadratic\\power\\res-N',N,'-T',T,'-alpha',alpha.v[i],'-R',r, a[i] ,'.txt',sep='')
cat(quad.res(filename))
cat(' ')
}
}
cat('\n')
}
}
==== R codes for process the results for estimate bias ====
## Processing results for the power analysis
## Function for the linear model
linear.res<-function(filename)
{
##process the results
# res.file<-paste('res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
## filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\linear\\power\\res-N100-T3-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:55),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 psi_I 6 psi_IS 7 psi_S
## s.e. 8 9 10 11 12 13
## 14 chi-value 15 chi-df 16 chi-p 17 CFI 18 TLI 19 H0ll 20 H1ll
## 21 para 22 AIC 23 BIC 24 A-BIC 25 RMSEA 26 RMSEA.l 27 RMSEA.h 28 RMSEA.p 29 SRMR
## model with zero change score
## 30 var_E 31 mu_I 32 psi_I 33 psi_IS 34 psi_S
## 35 36 37 38 39
## 40 chi-value 41 chi-df 42 chi-p 43 CFI 44 TLI 45 H0ll 46 H1ll
## 47 para 48 AIC 49 BIC 50 A-BIC 51 RMSEA 52 RMSEA.l 53 RMSEA.h 54 RMSEA.p 55 SRMR
res.comp<-res.comp[!is.na(res.comp[,55]),]
chi.diff<-(res.comp[,40]-res.comp[,14])
res.comp<-res.comp[chi.diff>0,]
chi.diff1<-chi.diff[chi.diff>0]
nn<-length(chi.diff1)
pow1<-sum(chi.diff1>3.841459)/nn
var_E <- mean(res.comp[,2],na.rm=T)
mu_I <- mean(res.comp[,3],na.rm=T)
mu_S <- mean(res.comp[,4],na.rm=T)
psi_I <- mean(res.comp[,5],na.rm=T)
psi_IS <- mean(res.comp[,6],na.rm=T)
psi_S <- mean(res.comp[,7],na.rm=T)
CI<-cbind(res.comp[,4] -1.96*res.comp[,10],res.comp[,4]+1.96*res.comp[,10])
cvg<-sum(CI[,1]<1 & CI[,2]>1)/nn
cng<-nn/10000
c(var_E, mu_I, mu_S, psi_I, psi_IS, psi_S, pow1, cvg, cng)
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
alpha.v<-c(0)
r.v<-c(0, .1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
for (alpha in alpha.v){
## Power
filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MNAR\\linear\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'.txt',sep='')
## Type1
#filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MNAR\\linear\\type1\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'.txt',sep='')
res<-linear.res(filename)
cat(c(T, N, r, alpha, res))
cat("\n")
}
}
}
}
##################################################
## 2. parameter bias quadratic model
quad.res<-function(filename)
{
##process the results
#filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\quadratic\\power\\res-N100-T4-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:83),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 mu_Q 6 Beta 7 psi_I 8 psi_IS 9 psi_S 10 PSI_IQ 11 psi_QS 12 psi_Q 13 psi_XI 14 psi_XQ
## s.e. 15 16 17 18 19 20 21 22 23 24 25 26 27
## 28 chi-value 29 chi-df 30 chi-p 31 CFI 32 TLI 33 H0ll 34 H1ll
## 35 para 36 AIC 37 BIC 38 A-BIC 39 RMSEA 40 RMSEA.l 41 RMSEA.h 42 RMSEA.p 43 SRMR
## model with zero change score
## 44 var_E 45 mu_I 46 mu_S 47 mu_Q 48 Beta 49 psi_I 50 psi_IS 51 psi_S 52 PSI_IQ 53 psi_QS 54 psi_Q 55 psi_XI 56 psi_XQ
## s.e. 57 58 59 60 61 62 63 64 65 66 67
## 68 chi-value 69 chi-df 70 chi-p 71 CFI 72 TLI 73 H0ll 74 H1ll
## 75 para 76 AIC 77 BIC 78 A-BIC 79 RMSEA 80 RMSEA.l 81 RMSEA.h 82 RMSEA.p 83 SRMR
res.comp<-res.comp[!is.na(res.comp[,83]),]
chi.diff1<-(res.comp[,68]-res.comp[,28])
res.comp<-res.comp[chi.diff1>0,]
chi.diff1<-chi.diff1[chi.diff1>0]
nn<-length(chi.diff1)
pow1<-sum(chi.diff1>3.84)/nn
var_E <- mean(res.comp[,2])
mu_I <- mean(res.comp[,3])
mu_S <- mean(res.comp[,4])
mu_Q <- mean(res.comp[,5])
Beta <- mean(res.comp[,6])
psi_I <- mean(res.comp[,7])
psi_IS <- mean(res.comp[,8])
psi_S <- mean(res.comp[,9])
psi_IQ <- mean(res.comp[,10])
psi_QS <- mean(res.comp[,11])
psi_Q <- mean(res.comp[,12])
#psi_XI <- mean(res.comp[,13])
#psi_XS <- mean(res.comp[,14])
CI<-cbind(res.comp[,6] -1.96*res.comp[,19],res.comp[,6]+1.96*res.comp[,19])
cvg<-sum(CI[,1]< -1 & CI[,2]> -1)/nn
cng<-nn/10000
c(var_E, mu_I, mu_S, mu_Q, Beta, psi_I, psi_IS, psi_S, psi_IQ, psi_QS, psi_Q, pow1, cvg, cng)
#c(mu_I, mu_S, mu_Q, Beta, nn)
}
M<-c('power', 'type1')
N.v<-c(100,200,300,400,500)
T.v<-4:5
alpha.v<-c(0)
r.v<-c(0, .1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
for (alpha in alpha.v){
filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MNAR\\quadratic\\type1\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
# filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MCAR\\quadratic\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
res<-quad.res(filename)
cat(c(T, N, r, alpha, res))
cat("\n")
}
}
}
}
==== R codes to extract the chi-square differences ====
## Processing results for the power analysis
## Function for the linear model
linear.res<-function(filename)
{
##process the results
# res.file<-paste('res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
## filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\linear\\power\\res-N100-T3-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:55),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 psi_I 6 psi_IS 7 psi_S
## s.e. 8 9 10 11 12 13
## 14 chi-value 15 chi-df 16 chi-p 17 CFI 18 TLI 19 H0ll 20 H1ll
## 21 para 22 AIC 23 BIC 24 A-BIC 25 RMSEA 26 RMSEA.l 27 RMSEA.h 28 RMSEA.p 29 SRMR
## model with zero change score
## 30 var_E 31 mu_I 32 psi_I 33 psi_IS 34 psi_S
## 35 36 37 38 39
## 40 chi-value 41 chi-df 42 chi-p 43 CFI 44 TLI 45 H0ll 46 H1ll
## 47 para 48 AIC 49 BIC 50 A-BIC 51 RMSEA 52 RMSEA.l 53 RMSEA.h 54 RMSEA.p 55 SRMR
res.comp<-res.comp[!is.na(res.comp[,55]),]
chi.diff<-(res.comp[,40]-res.comp[,14])
res.comp<-res.comp[chi.diff>0,]
chi.diff1<-chi.diff[chi.diff>0]
chi.diff1
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
alpha.v<-c(1)
r.v<-c(0, .1,.3)
MM<-'MCAR'
for (T in T.v){
for (N in N.v){
for (r in r.v){
for (alpha in alpha.v){
## Power
#filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MNAR\\linear\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'.txt',sep='')
## Type1
filename<-paste('C:\\zzy\\research\\LongPower\\Results\\',MM,'\\linear\\type1\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'.txt',sep='')
res<-linear.res(filename)
fileout<-paste('C:\\zzy\\research\\LongPower\\Results\\qqplot\\linear-',MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
write.table(res,fileout, row.names=F, col.names=F)
}
}
}
}
##################################################
## 2. parameter bias quadratic model
quad.res<-function(filename)
{
##process the results
#filename<-'C:\\zzy\\research\\LongPower\\Results\\MAR\\quadratic\\power\\res-N100-T4-alpha0-R0-a.txt'
res.comp<-read.table(filename,col.names=c(1:83),fill=T)
## data in the file
## Model with freely estimated change score
## 1 id 2 var_E 3 mu_I 4 mu_S 5 mu_Q 6 Beta 7 psi_I 8 psi_IS 9 psi_S 10 PSI_IQ 11 psi_QS 12 psi_Q 13 psi_XI 14 psi_XQ
## s.e. 15 16 17 18 19 20 21 22 23 24 25 26 27
## 28 chi-value 29 chi-df 30 chi-p 31 CFI 32 TLI 33 H0ll 34 H1ll
## 35 para 36 AIC 37 BIC 38 A-BIC 39 RMSEA 40 RMSEA.l 41 RMSEA.h 42 RMSEA.p 43 SRMR
## model with zero change score
## 44 var_E 45 mu_I 46 mu_S 47 mu_Q 48 Beta 49 psi_I 50 psi_IS 51 psi_S 52 PSI_IQ 53 psi_QS 54 psi_Q 55 psi_XI 56 psi_XQ
## s.e. 57 58 59 60 61 62 63 64 65 66 67
## 68 chi-value 69 chi-df 70 chi-p 71 CFI 72 TLI 73 H0ll 74 H1ll
## 75 para 76 AIC 77 BIC 78 A-BIC 79 RMSEA 80 RMSEA.l 81 RMSEA.h 82 RMSEA.p 83 SRMR
res.comp<-res.comp[!is.na(res.comp[,83]),]
chi.diff1<-(res.comp[,68]-res.comp[,28])
res.comp<-res.comp[chi.diff1>0,]
chi.diff1<-chi.diff1[chi.diff1>0]
chi.diff1
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
alpha.v<-c(0)
r.v<-c(0, .1,.3)
MM<-'MAR'
for (T in T.v){
for (N in N.v){
for (r in r.v){
for (alpha in alpha.v){
filename<-paste('C:\\zzy\\research\\LongPower\\Results\\',MM, '\\quadratic\\type1\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
# filename<-paste('C:\\zzy\\research\\LongPower\\Results\\MCAR\\quadratic\\power\\res-N',N,'-T',T,'-alpha',alpha,'-R',r,'-a.txt',sep='')
res<-quad.res(filename)
fileout<-paste('C:\\zzy\\research\\LongPower\\Results\\qqplot\\quad-',MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
write.table(res,fileout, row.names=F, col.names=F) }
}
}
}
==== R codes for Q-Q plots ====
## qqplot for testing the distributions
## for linear model
qq.linear<-function(T, N, r){
prob<-seq(.01,.99,.01)
plotname<-paste('QQ-Linear-', T, '-N-', N, '-R-', r, '.pdf', sep='')
pdf(file=plotname, width=5, height=5)
## complete data
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MCAR','T-',T,'-N',N,'-R',0,'.txt',sep='')
y.comp<-scan(file.comp)
qqplot(qchisq(prob, 1), quantile(y.comp, prob=prob), type='l', lwd=3, ylab='Sample quantiles', xlab='Theoretical quantiles')
abline(0,1)
## MCAR data
file.mcar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MCAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mcar<-scan(file.mcar)
lines(qchisq(prob, 1), quantile(y.mcar, prob=prob), lty=2, lwd=3)
## MAR data
file.mar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mar<-scan(file.mar)
lines(qchisq(prob, 1), quantile(y.mar, prob=prob), lty=3, lwd=3)
## MNAR data
file.mnar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MNAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mnar<-scan(file.mnar)
lines(qchisq(prob, 1), quantile(y.mnar, prob=prob), lty=4, lwd=3)
legend('bottomright', c('Complete','MCAR', 'MAR', 'MNAR'), lty=c(1,2,3,4), lwd=c(3,3,3,3))
dev.off()
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
r.v<-c(.1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
qq.linear(T, N, r)
}
}
}
## Q-Q plot for quadratic model
qq.quad<-function(T, N, r){
prob<-seq(.01,.99,.01)
plotname<-paste('QQ-Quad-', T, '-N-', N, '-R-', r, '.pdf', sep='')
pdf(file=plotname, width=5, height=5)
## complete data
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MCAR','T-',T,'-N',N,'-R',0,'.txt',sep='')
y.comp<-scan(file.comp)
qqplot(qchisq(prob, 1), quantile(y.comp, prob=prob), type='l', lwd=3, ylab='Sample quantiles', xlab='Theoretical quantiles')
abline(0,1)
## MCAR data
file.mcar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MCAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mcar<-scan(file.mcar)
lines(qchisq(prob, 1), quantile(y.mcar, prob=prob), lty=2, lwd=3)
## MAR data
file.mar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mar<-scan(file.mar)
lines(qchisq(prob, 1), quantile(y.mar, prob=prob), lty=3, lwd=3)
## MNAR data
file.mnar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MNAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mnar<-scan(file.mnar)
lines(qchisq(prob, 1), quantile(y.mnar, prob=prob), lty=4, lwd=3)
legend('bottomright', c('Complete','MCAR', 'MAR', 'MNAR'), lty=c(1,2,3,4), lwd=c(3,3,3,3))
dev.off()
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
r.v<-c(.1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
qq.quad(T, N, r)
}
}
}
==== R codes to calculate Type I error ====
## qqplot for testing the distributions
## for linear model
qq.linear<-function(MM, T, N, r){
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-', MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
y.comp<-scan(file.comp, quiet=T)
100*sum(y.comp>3.84)/length(y.comp)
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
cat(qq.linear('MCAR',T, N, 0))
cat(' ')
for (r in r.v){
for (i in 1:3){
cat(qq.linear(M.M[i], T, N, r))
cat(' ')
}
}
cat('\n')
}
}
## for linear model
qq.quad<-function(MM, T, N, r){
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-', MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
y.comp<-scan(file.comp, quiet=T)
100*sum(y.comp>3.84)/length(y.comp)
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
cat(qq.quad('MCAR',T, N, 0))
cat(' ')
for (r in r.v){
for (i in 1:3){
cat(qq.quad(M.M[i], T, N, r))
cat(' ')
}
}
cat('\n')
}
}
==== R codes to calculate power ====
## qqplot for testing the distributions
## for linear model
qq.linear<-function(MM, T, N, r){
file.comp<-paste('C:\\zzy\\LongPower\\Results\\power\\linear-', MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
y.comp<-scan(file.comp, quiet=T)
100*sum(y.comp>3.84)/length(y.comp)
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
cat(qq.linear('MCAR',T, N, 0))
cat(' ')
for (r in r.v){
for (i in 1:3){
cat(qq.linear(M.M[i], T, N, r))
cat(' ')
}
}
cat('\n')
}
}
## for linear model
qq.quad<-function(MM, T, N, r){
file.comp<-paste('C:\\zzy\\LongPower\\Results\\power\\quad-', MM,'T-',T,'-N',N,'-R',r,'.txt',sep='')
y.comp<-scan(file.comp, quiet=T)
100*sum(y.comp>3.84)/length(y.comp)
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
r.v<-c(.1,.3)
M.M<-c('MCAR', 'MAR', 'MNAR')
for (T in T.v){
for (N in N.v){
cat(T, ' ', N, ' ')
cat(qq.quad('MCAR',T, N, 0))
cat(' ')
for (r in r.v){
for (i in 1:3){
cat(qq.quad(M.M[i], T, N, r))
cat(' ')
}
}
cat('\n')
}
}
==== Q-Q plots with double y-axis ====
## qqplot for testing the distributions
## for linear model
qq.linear<-function(T, N, r){
T=4
N=300
r=0.1
prob<-seq(.01,.99,.01)
plotname<-paste('QQ-Linear-', T, '-N-', N, '-R-', r, '.pdf', sep='')
pdf(file=plotname, width=5, height=5)
par(mar=c(5, 4, 4, 5) + 0.1)
## complete data
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MCAR','T-',T,'-N',N,'-R',0,'.txt',sep='')
y.comp<-scan(file.comp)
plot(qchisq(prob, 1), quantile(y.comp, prob=prob), ylim=c(0,7), xlim=c(0,7),type='l', lwd=2, ylab='Sample quantiles', xlab='Theoretical quantiles')
#abline(0,1)
## MCAR data
file.mcar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MCAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mcar<-scan(file.mcar)
lines(qchisq(prob, 1), quantile(y.mcar, prob=prob), lty=2, lwd=2)
## MAR data
file.mar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mar<-scan(file.mar)
lines(qchisq(prob, 1), quantile(y.mar, prob=prob), lty=3, lwd=2)
par(new=T, mar=c(5, 4, 4, 5) + 0.1)
plot(1,1,type='n',ylim=c(0,55), xlim=c(0,7), axes=F, ylab='', xlab='')
## MNAR data
file.mnar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\linear-MNAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mnar<-scan(file.mnar)
quantile(y.mnar, .99)
lines(qchisq(prob, 1), quantile(y.mnar, prob=prob), lty=4, lwd=2, ylim=c(0,160), xlim=c(0,7))
axis(4)
mtext('MNAR sample quantitles', 4, line=3)
legend('bottomright', c('Complete','MCAR', 'MAR', 'MNAR'), lty=c(1,2,3,4), lwd=c(3,3,3,3))
dev.off()
}
N.v<-c(100,200,300,400,500)
T.v<-3:5
r.v<-c(.1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
qq.linear(T, N, r)
}
}
}
## Q-Q plot for quadratic model
qq.quad<-function(T, N, r){
T=4
N=300
r=0.3
prob<-seq(.01,.99,.01)
plotname<-paste('QQ-Quad-', T, '-N-', N, '-R-', r, '.pdf', sep='')
pdf(file=plotname, width=5, height=5)
par(mar=c(5, 4, 4, 5) + 0.1)
## complete data
file.comp<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MCAR','T-',T,'-N',N,'-R',0,'.txt',sep='')
y.comp<-scan(file.comp)
qqplot(qchisq(prob, 1), quantile(y.comp, prob=prob), ylim=c(0,7), xlim=c(0,7),type='l', lwd=2, ylab='Sample quantiles', xlab='Theoretical quantiles')
#abline(0,1)
## MCAR data
file.mcar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MCAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mcar<-scan(file.mcar)
lines(qchisq(prob, 1), quantile(y.mcar, prob=prob), lty=2, lwd=2)
## MAR data
file.mar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mar<-scan(file.mar)
lines(qchisq(prob, 1), quantile(y.mar, prob=prob), lty=3, lwd=2)
## MNAR data
file.mnar<-paste('C:\\zzy\\LongPower\\Results\\qqplot\\quad-MNAR','T-',T,'-N',N,'-R',r,'.txt',sep='')
y.mnar<-scan(file.mnar)
lines(qchisq(prob, 1), quantile(y.mnar, prob=prob), lty=4, lwd=2)
legend('bottomright', c('Complete','MCAR', 'MAR', 'MNAR'), lty=c(1,2,3,4), lwd=c(3,3,3,3))
dev.off()
}
N.v<-c(100,200,300,400,500)
T.v<-4:5
r.v<-c(.1,.3)
for (T in T.v){
for (N in N.v){
for (r in r.v){
qq.quad(T, N, r)
}
}
}