#				
## Simulated data to test variance  - random treatment, 2 intervals (comparing at my covariance with (3.14))
#				

n.sim <- 1000
n.sample <- seq(250,1000,50)
source("gestCov_txRand_ZIPI.R")
source("gestCov_txRand.R")
#source("../gestCov_txRandtemp.R")
#source("temp.R")
  
psi10 <- 1.6	
psi11 <- 0	
psi20 <- -3	
psi21 <- 2
psi22 <- 1	
psi23 <- 0	

bias.mat <- NULL
bias.matZIPI80 <- bias.matZIPI90 <- bias.matZIPI95 <- NULL

psi<-c(psi10,psi11,psi20,psi21,psi22,psi23)
results <- psi
alpha<-c(.5,.5)
get.zipi <- 1

for(psi20 in seq(-4,-2,.1)) {
print(paste("psi20 = ",psi20,sep=""))
bias.vec <- NULL
bias.vecZIPI80 <- bias.vecZIPI90 <- bias.vecZIPI95 <- NULL
for(n in n.sample) {
psi<-c(psi10,psi11,psi20,psi21,psi22,psi23)
#psi<-c(psi10,psi11,psi20,psi21)
results <- psi
   psi.est80 <- var.est80 <- NULL
   psi.est90 <- var.est90 <- NULL
   psi.est95 <- var.est95 <- NULL
   psi.estPUR <- var.estPUR <- NULL
   psi.estJR <- var.estJR <- NULL
   wrong.rule <- NULL
   for(j in 1:n.sim) {
#if(j %in% seq(200,n.sim,200)) print(j)
      L1 <- rnorm(n,0,3)
      A1 <- rbinom(n,1,alpha[1])  
#      L2 <- rnorm(n,.75,.5)
      L2 <- round(rnorm(n,.75,.5))
      A2 <- rbinom(n,1,alpha[2])  
      L <- cbind(L1,L2)
      A <- cbind(A1,A2)
      Y.opt <- rnorm(n,1,1) 
      Y <- Y.opt - abs(psi10 + psi11*L1)*(A1 - as.numeric(psi10 + psi11*L1>0))^2 - abs(psi20 + psi21*L2 + psi22*A1 + psi23*L2*A1)*(A2 - as.numeric(psi20 + psi21*L2 + psi22*A1 + psi23*L2*A1>0))^2      

      if(get.zipi) {
       temp <- ZIPI_rand.fcn(Y,L,A,return.U=F,z.val=qnorm(0.9)) # 80% CI zeroing
       psi.est80 <- cbind(psi.est80,c(temp$psi.hat[2,1:2],temp$psi.hat[1,]))   
       var.est80 <- cbind(var.est80,c(temp$psi.var[2,1:2],temp$psi.var[1,])) 
       temp <- ZIPI_rand.fcn(Y,L,A,return.U=F,z.val=qnorm(0.95)) # 90% CI zeroing
       psi.est90 <- cbind(psi.est90,c(temp$psi.hat[2,1:2],temp$psi.hat[1,]))   
       var.est90 <- cbind(var.est90,c(temp$psi.var[2,1:2],temp$psi.var[1,])) 
       temp <- ZIPI_rand.fcn(Y,L,A,return.U=F,z.val=qnorm(0.975)) # 95% CI zeroing
       psi.est95 <- cbind(psi.est95,c(temp$psi.hat[2,1:2],temp$psi.hat[1,]))   
       var.est95 <- cbind(var.est95,c(temp$psi.var[2,1:2],temp$psi.var[1,])) 
      }
      temp <- g_estCov.fcn(Y,L,A)
      psi.estJR <- cbind(psi.estJR,c(temp$psi.hat[2,1:2],temp$psi.hat[1,]))   
      var.estJR <- cbind(var.estJR,c(temp$psi.var[2,1:2],temp$psi.var[1,])) 
   } # loop back for each simulation

   print(paste("n = ",n,sep=""))
   if(get.zipi) {
    t1.80 <- apply(psi.est80,1,mean)
    t2.80 <- apply(sqrt(var.est80),1,mean) # calculated SE
    t3.80 <- apply(sqrt(var.est80 + (psi.est80 - psi)^2),1,mean)  # rMSE
    t4.80 <- apply((psi.est80 - 1.96*sqrt(var.est80) < psi) & (psi.est80 + 1.96*sqrt(var.est80) > psi),1,sum)/n.sim*100 # Wald CI coverage
    t1.90 <- apply(psi.est90,1,mean)
    t2.90 <- apply(sqrt(var.est90),1,mean) # calculated SE
    t3.90 <- apply(sqrt(var.est90 + (psi.est90 - psi)^2),1,mean)  # rMSE
    t4.90 <- apply((psi.est90 - 1.96*sqrt(var.est90) < psi) & (psi.est90 + 1.96*sqrt(var.est90) > psi),1,sum)/n.sim*100 # Wald CI coverage
    t1.95 <- apply(psi.est95,1,mean)
    t2.95 <- apply(sqrt(var.est95),1,mean) # calculated SE
    t3.95 <- apply(sqrt(var.est95 + (psi.est95 - psi)^2),1,mean)  # rMSE
    t4.95 <- apply((psi.est95 - 1.96*sqrt(var.est95) < psi) & (psi.est95 + 1.96*sqrt(var.est95) > psi),1,sum)/n.sim*100 # Wald CI coverage
    res.zipi <- rbind(cbind(t1.90,t2.90,t3.90,t4.90),cbind(t1.95,t2.95,t3.95,t4.95))
    bias.vecZIPI80 <- c(bias.vecZIPI80,t1.80[1] - psi10)
    bias.vecZIPI90 <- c(bias.vecZIPI90,t1.90[1] - psi10)
    bias.vecZIPI95 <- c(bias.vecZIPI95,t1.95[1] - psi10)
   }

   t0g <- apply(psi.estJR,1,sd)
   t1g <- apply(psi.estJR,1,mean)
   t1g.bias <- abs(apply(psi.estJR-psi,1,mean))
   t1g.t <- abs(apply((psi.estJR-psi)/sqrt(var.estJR),1,mean))
   t2g <- apply(sqrt(var.estJR),1,mean) # calculated SE
   t3g <- apply(sqrt(var.estJR + (psi.estJR - psi)^2),1,mean)  # rMSE
   t4g <- apply((psi.estJR - qt(.975,100)*sqrt(var.estJR) < psi) & (psi.estJR + qt(.975,100)*sqrt(var.estJR) > psi),1,sum)/n.sim*100 # Wald CI coverage
   bias.vec <- c(bias.vec,t1g[1] - psi10)

   if(get.zipi) {
    results <- cbind(results,cbind(t1.90,t2.90,t3.90,t4.90,t1g,t2g,t3g,t4g))
    print(round(results,3))
    print(round(res.zipi,3))
   }

  if(!get.zipi) {
#    results <- cbind(results,cbind(t1g,t2g,t3g,t4g))
    results <- cbind(t1g,t2g,t1g.bias,t1g.t,t3g,t4g)
    print(round(results,3))
    bias.vec <- c(bias.vec,t1g[1] - psi10)
  }
} ## end of looping over sample sizes, n
if(get.zipi) {
   bias.matZIPI80 <- cbind(bias.matZIPI80,bias.vecZIPI80)
   bias.matZIPI90 <- cbind(bias.matZIPI90,bias.vecZIPI90)
   bias.matZIPI95 <- cbind(bias.matZIPI95,bias.vecZIPI95)
}
bias.mat <- cbind(bias.mat,bias.vec)
}  # end of looping over value of psi2

if(get.zipi) {
   bias.matZIPI80 <- abs(bias.matZIPI80)
   bias.matZIPI90 <- abs(bias.matZIPI90)
   bias.matZIPI95 <- abs(bias.matZIPI95)
write(bias.matZIPI80, file = "bias.matZIPI80-20.out",
           ncolumns = dim(bias.mat)[2],sep = ",")
write(bias.matZIPI90, file = "bias.matZIPI90-20.out",
           ncolumns = dim(bias.mat)[2],sep = ",")
write(bias.matZIPI95, file = "bias.matZIPI95-20.out",
           ncolumns = dim(bias.mat)[2],sep = ",")
}
bias.mat <- abs(bias.mat)
write(bias.mat, file = "bias.mat20.out",
           ncolumns = dim(bias.mat)[2],sep = ",")

#col=palette(gray(1-(1:35/35)))
#col=palette(gray((1:35/35)))
#col=(palette(gray(seq(0,.9,len=25))))

postscript("BWbias-20.eps")
filled.contour(seq(250,1000,50),seq(-4,-2,.1),bias.mat,xlab="n",ylab=expression(psi[20]),
    col=palette(gray(25:1/25)),zlim=c(0,.07))
dev.off()

postscript("BWbiasZIPI80-20.eps")
filled.contour(seq(250,1000,50),seq(-4,-2,.1),bias.matZIPI80,xlab="n",ylab=expression(psi[20]),
    col=palette(gray(25:1/25)),zlim=c(0,.07))
dev.off()

postscript("BWbiasZIPI90-20.eps")
filled.contour(seq(250,1000,50),seq(-4,-2,.1),bias.matZIPI90,xlab="n",ylab=expression(psi[20]),
    col=palette(gray(25:1/25)),zlim=c(0,.07))
dev.off()

postscript("BWbiasZIPI95-20.eps")
filled.contour(seq(250,1000,50),seq(-4,-2,.1),bias.matZIPI95,xlab="n",ylab=expression(psi[20]),
    col=palette(gray(25:1/25)),zlim=c(0,.07))
dev.off()








