## ----setup_hide, include = FALSE----------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.height = 6, fig.width = 9,
  message = FALSE
)
options(rmarkdown.html_vignette.check_title = FALSE)

## ----setup--------------------------------------------------------------------
library(aihuman)

## ----data1--------------------------------------------------------------------
data("synth")
str(synth)
synth[1:6,]
unique(synth$D)

## ----data2--------------------------------------------------------------------
data("psa_synth")
str(psa_synth)
psa_synth[1:6,]

## ----data3--------------------------------------------------------------------
data("hearingdate_synth")
str(hearingdate_synth)
hearingdate_synth[1:6]

## ----plotstackedbar-----------------------------------------------------------
# Call the data
data(psa_synth)
# Treated group (PSA provided)
p.treated = PlotStackedBar(psa_synth[psa_synth$Z == 1, ],
                           d.colors = c("grey80", "grey60", "grey30", "grey10"),
                           d.labels = c("signature","small","middle","large"),
                           legend.position = "bottom")
# Control group (PSA not provided)
p.control = PlotStackedBar(psa_synth[psa_synth$Z == 0, ],
                           d.colors = c("grey80", "grey60", "grey30", "grey10"),
                           d.labels = c("signature","small","middle","large"),
                           legend.position = "bottom")

p.dmf = PlotStackedBarDMF(psa_synth, 
                          d.colors = c("grey80", "grey60", "grey30", "grey10"),
                          d.labels = c("signature","small","middle","large"),
                          dmf.label = "DMF")

# For more details
# ?PlotStackedBar

# Example
p.treated$p.fta

## ----plotstackedbar_plot, eval = FALSE----------------------------------------
#  # To plot three figures together
#  library(ggplot2)
#  library(gridExtra)
#  
#  mylegend <- g_legend(p.control$p.nvca)
#  
#  # Treated
#  grid.arrange(arrangeGrob(p.control$p.fta + theme(legend.position="none"),
#                           p.control$p.nca + theme(legend.position="none"),
#                           p.control$p.nvca + theme(legend.position="none"),
#                           p.dmf$p.treat + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  
#  # Control
#  grid.arrange(arrangeGrob(p.control$p.fta + theme(legend.position="none"),
#                           p.control$p.nca + theme(legend.position="none"),
#                           p.control$p.nvca + theme(legend.position="none"),
#                           p.dmf$p.control + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))

## ----plotstackedbar_rep, eval = FALSE-----------------------------------------
#  library(aihuman)
#  data(PSAdata)
#  library(tidyverse)
#  library(gridExtra)
#  
#  # Figure 1
#  p.treated = PlotStackedBar(PSAdata %>% filter(Z==1), legend.position = "bottom")
#  p.control = PlotStackedBar(PSAdata %>% filter(Z==0), legend.position = "bottom")
#  p.dmf = PlotStackedBarDMF(PSAdata, dmf.category = c("signature bond", "cash bond"))
#  mylegend = g_legend(p.treated$p.nvca)
#  pdf("figs/stackedbar.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(p.treated$p.fta + theme(legend.position="none"),
#                           p.treated$p.nca + theme(legend.position="none"),
#                           p.treated$p.nvca + theme(legend.position="none"),
#                           p.dmf$p.treat + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()
#  pdf("figs/stackedbar_control.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(p.control$p.fta + theme(legend.position="none"),
#                           p.control$p.nca + theme(legend.position="none"),
#                           p.control$p.nvca + theme(legend.position="none"),
#                           p.dmf$p.control + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()
#  
#  # Figure S1
#  S0.t = PlotStackedBar(PSAdata %>% filter(Z==1&Sex==0), legend.position = "bottom")
#  S0.c = PlotStackedBar(PSAdata %>% filter(Z==0&Sex==0), legend.position = "bottom")
#  S0.dmf = PlotStackedBarDMF(PSAdata %>% filter(Sex==0),
#                             dmf.category = c("signature bond", "cash bond"))
#  pdf("figs/stackedbar_F.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(S0.t$p.fta + theme(legend.position="none"),
#                           S0.t$p.nca + theme(legend.position="none"),
#                           S0.t$p.nvca + theme(legend.position="none"),
#                           S0.dmf$p.treat + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()
#  pdf("figs/stackedbar_control_F.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(S0.c$p.fta + theme(legend.position="none"),
#                           S0.c$p.nca + theme(legend.position="none"),
#                           S0.c$p.nvca + theme(legend.position="none"),
#                           S0.dmf$p.control + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()
#  
#  # Figure S3
#  S1W1.t = PlotStackedBar(PSAdata %>% filter(Z==1&Sex==1&White==1), legend.position = "bottom")
#  S1W1.c = PlotStackedBar(PSAdata %>% filter(Z==0&Sex==1&White==1), legend.position = "bottom")
#  S1W1.dmf = PlotStackedBarDMF(PSAdata %>% filter(Sex==1&White==1),
#                               dmf.category = c("signature bond", "cash bond"))
#  pdf("figs/stackedbar_WM.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(S1W1.t$p.fta + theme(legend.position="none"),
#                           S1W1.t$p.nca + theme(legend.position="none"),
#                           S1W1.t$p.nvca + theme(legend.position="none"),
#                           S1W1.dmf$p.treat + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()
#  pdf("figs/stackedbar_control_WM.pdf", height = 6, width = 22)
#  grid.arrange(arrangeGrob(S1W1.c$p.fta + theme(legend.position="none"),
#                           S1W1.c$p.nca + theme(legend.position="none"),
#                           S1W1.c$p.nvca + theme(legend.position="none"),
#                           S1W1.dmf$p.control + theme(legend.position="none"),
#                           nrow=1),
#               mylegend, nrow=2,heights=c(10, 1))
#  dev.off()

## ----itt----------------------------------------------------------------------
# Call the data
data(synth)

# Subgroup index
subgroup_synth = list(1:nrow(synth),
                      which(synth$Sex==0),
                      which(synth$Sex==1),
                      which(synth$Sex==1&synth$White==0),
                      which(synth$Sex==1&synth$White==1))

# Compute Diff-in-Means on decision
res_dec = CalDIMsubgroup(synth, subgroup = subgroup_synth)
# Plot the results
PlotDIMdecisions(res_dec,
                 decision.labels = c("signature","small cash","middle cash","large cash"),
                 col.values = c("grey60", "grey30", "grey6", "grey1"), 
                 shape.values = c(16, 17, 15, 18))

# Synthetic data for outcome
synth_fta <- synth_nca <- synth_nvca <- synth
set.seed(123)
synth_fta$Y <- sample(0:1, 1000, replace = T)
synth_nca$Y <- sample(0:1, 1000, replace = T)
synth_nvca$Y <- sample(0:1, 1000, replace = T)
# Compute Diff-in-Means on outcome
res_fta = CalDIMsubgroup(synth_fta, subgroup = subgroup_synth)
res_nca = CalDIMsubgroup(synth_nca, subgroup = subgroup_synth)
res_nvca = CalDIMsubgroup(synth_nvca, subgroup = subgroup_synth)
# Plot the results
PlotDIMoutcomes(res_fta, res_nca, res_nvca, y.max = 0.3)

## ----itt_rep, eval = FALSE----------------------------------------------------
#  # Figure 2
#  data(FTAdata)
#  data(NCAdata)
#  data(NVCAdata)
#  
#  # Subgroup index
#  subgroup_data = list(1:nrow(FTAdata),
#                        which(FTAdata$Sex==0),
#                        which(FTAdata$Sex==1),
#                        which(FTAdata$Sex==1&FTAdata$White==0),
#                        which(FTAdata$Sex==1&FTAdata$White==1))
#  # Compute Diff-in-Means on decision
#  res_dec = CalDIMsubgroup(FTAdata, subgroup = subgroup_data)
#  # Plot the results
#  pdf("figs/itt_decisions.pdf", width = 9, height = 5)
#  PlotDIMdecisions(res_dec, y.max = 0.17)
#  dev.off()
#  # Compute Diff-in-Means on outcome
#  res_fta = CalDIMsubgroup(FTAdata, subgroup = subgroup_data)
#  res_nca = CalDIMsubgroup(NCAdata, subgroup = subgroup_data)
#  res_nvca = CalDIMsubgroup(NVCAdata, subgroup = subgroup_data)
#  # Plot the results
#  pdf("figs/itt_outcomes.pdf", width = 9, height = 5)
#  PlotDIMoutcomes(res_fta, res_nca, res_nvca,
#                  y.max = 0.17, top.margin = 0.02, bottom.margin = 0.02,
#                  label.position = c("top", "bottom", "top"))
#  dev.off()

## ----itt_age_rep, eval = FALSE------------------------------------------------
#  # Figure S5
#  # Subgroup index
#  subgroup_age = list(which(FTAdata$Age<23),
#                      which(FTAdata$Age>=23&FTAdata$Age<29),
#                      which(FTAdata$Age>=29&FTAdata$Age<36),
#                      which(FTAdata$Age>=36&FTAdata$Age<46),
#                      which(FTAdata$Age>=46))
#  # Compute Diff-in-Means on decision
#  res_age = CalDIMsubgroup(FTAdata, subgroup = subgroup_age,
#                           name.group = c("17~22", "23~28", "29~35", "36~45", "46~"))
#  # Plot the results
#  pdf("figs/itt_decisions_age.pdf", width = 9, height = 5)
#  PlotDIMdecisions(res_age)
#  dev.off()
#  # Compute Diff-in-Means on outcome
#  res_fta_age = CalDIMsubgroup(FTAdata, subgroup = subgroup_age,
#                           name.group = c("17~22", "23~28", "29~35", "36~45", "46~"))
#  res_nca_age = CalDIMsubgroup(NCAdata, subgroup = subgroup_age,
#                           name.group = c("17~22", "23~28", "29~35", "36~45", "46~"))
#  res_nvca_age = CalDIMsubgroup(NVCAdata, subgroup = subgroup_age,
#                           name.group = c("17~22", "23~28", "29~35", "36~45", "46~"))
#  # Plot the results
#  pdf("figs/itt_outcomes_age.pdf", width = 9, height = 5)
#  PlotDIMoutcomes(res_fta_age, res_nca_age, res_nvca_age,
#                  name.group = c("17~22", "23~28", "29~35", "36~45", "46~"),
#                  top.margin = 0.02, bottom.margin = 0.02,
#                  label.position = c("top", "bottom", "top"))
#  dev.off()

## ----aievalmcmc---------------------------------------------------------------
data(synth)
sample_mcmc = AiEvalmcmc(data = synth, n.mcmc = 10) 
# increase n.mcmc in your analysis

## ----calapce------------------------------------------------------------------
subgroup_synth = list(1:nrow(synth),
                      which(synth$Sex==0),
                      which(synth$Sex==1),
                      which(synth$Sex==1&synth$White==0),
                      which(synth$Sex==1&synth$White==1))
sample_apce = CalAPCE(data = synth,
                      mcmc.re = sample_mcmc,
                      subgroup = subgroup_synth)
# Or using parallel computing (results are the same):
# sample_apce = CalAPCEparallel(data = synth,
#                               mcmc.re = sample_mcmc,
#                               subgroup = subgroup_synth,
#                               burnin = 0,
#                               size = 2)

## ----summaryapce--------------------------------------------------------------
sample_apce_summary = APCEsummary(sample_apce[["APCE.mcmc"]])

## ----plotapce-----------------------------------------------------------------
PlotAPCE(sample_apce_summary, 
         y.max = 0.25, 
         decision.labels = c("signature","small cash","middle cash","large cash"),
         shape.values = c(16, 17, 15, 18), 
         col.values = c("blue", "black", "red", "brown", "purple"), 
         label = FALSE)

## ----apce_rep, eval = FALSE---------------------------------------------------
#  ## Main analysis
#  # MCMC
#  library(coda)
#  PSADiag_ordinal = function(data, rho=0,
#                              ## mcmc parameters
#                              n.mcmc = 5*10^4, verbose = TRUE, out.length = 500){
#    set.seed(111)
#    mcmc1 = AiEvalmcmc(data,rho=rho,n.mcmc=n.mcmc,verbose=TRUE,out.length=out.length)
#    set.seed(222)
#    mcmc2 = AiEvalmcmc(data,rho=rho,n.mcmc=n.mcmc,verbose=TRUE,out.length=out.length)
#    set.seed(333)
#    mcmc3 = AiEvalmcmc(data,rho=rho,n.mcmc=n.mcmc,verbose=TRUE,out.length=out.length)
#    set.seed(444)
#    mcmc4 = AiEvalmcmc(data,rho=rho,n.mcmc=n.mcmc,verbose=TRUE,out.length=out.length)
#    set.seed(555)
#    mcmc5 = AiEvalmcmc(data,rho=rho,n.mcmc=n.mcmc,verbose=TRUE,out.length=out.length)
#  
#    mcmc.PSA = mcmc.list(mcmc1,mcmc2,mcmc3,mcmc4, mcmc5)
#    return(mcmc.PSA)
#  }
#  
#  PSA.ordinal.diag.fta = PSADiag_ordinal(FTAdata,n.mcmc=50000,verbose=TRUE,out.length=500)
#  PSA.ordinal.diag.nca = PSADiag_ordinal(NCAdata,n.mcmc=50000,verbose=TRUE,out.length=500)
#  PSA.ordinal.diag.nvca = PSADiag_ordinal(NVCAdata,n.mcmc=50000,verbose=TRUE,out.length=500)
#  
#  FTAmcmc <- lapply(PSA.ordinal.diag.fta, function(x) x[-(1: floor(0.5*dim(x)[1])),])
#  FTAmcmc <- do.call("rbind", FTAmcmc)
#  FTAmcmc <- mcmc(FTAmcmc)
#  
#  NCAmcmc <- lapply(PSA.ordinal.diag.nca, function(x) x[-(1: floor(0.5*dim(x)[1])),])
#  NCAmcmc <- do.call("rbind", NCAmcmc)
#  NCAmcmc <- mcmc(NCAmcmc)
#  
#  NVCAmcmc <- lapply(PSA.ordinal.diag.nvca, function(x) x[-(1: floor(0.5*dim(x)[1])),])
#  NVCAmcmc <- do.call("rbind", NVCAmcmc)
#  NVCAmcmc <- mcmc(NVCAmcmc)
#  
#  # APCE
#  subg = list(1:nrow(FTAdata),
#              which(FTAdata$Sex==0),
#              which(FTAdata$Sex==1),
#              which(FTAdata$Sex==1&FTAdata$White==0),
#              which(FTAdata$Sex==1&FTAdata$White==1))
#  
#  FTAace <- CalAPCEparallel(FTAdata,FTAmcmc,subgroup=subg,rho=0,burnin=0,size=5)
#  FTAqoi <- APCEsummary(FTAace[["APCE.mcmc"]])
#  
#  NCAace <- CalAPCEparallel(NCAdata,NCAmcmc,subgroup=subg,rho=0,burnin=0,size=5)
#  NCAqoi <- APCEsummary(NCAace[["APCE.mcmc"]])
#  
#  NVCAace <- CalAPCEparallel(NVCAdata,NVCAmcmc,subgroup=subg,rho=0,burnin=0,size=5)
#  NVCAqoi <- APCEsummary(NVCAace[["APCE.mcmc"]])
#  
#  # Figure 4
#  pdf("figs/qoi_fta.pdf", width = 9, height = 3)
#  PlotAPCE(FTAqoi, y.max = 0.166, top.margin = 0.05, bottom.margin = 0.05,
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nca.pdf", width = 9, height = 3)
#  PlotAPCE(NCAqoi, y.max = 0.166, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nvca.pdf", width = 9, height = 3.5)
#  PlotAPCE(NVCAqoi, y.max = 0.166, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  dev.off()

## ----apce_age_rep, eval = FALSE-----------------------------------------------
#  # APCE
#  subg.age = list(which(FTAdata$Age<23),
#              which(FTAdata$Age>=23&FTAdata$Age<29),
#              which(FTAdata$Age>=29&FTAdata$Age<36),
#              which(FTAdata$Age>=36&FTAdata$Age<46),
#              which(FTAdata$Age>=46))
#  subg.age.lab = c("17~22", "23~28", "29~35", "36~45", "46~")
#  FTAace.age <- CalAPCEparallel(FTAdata,FTAmcmc,subgroup=subg.age,
#                            name.group=subg.age.lab,
#                            rho=0,burnin=0,size=5)
#  FTAqoi.age <- APCEsummary(FTAace.age[["APCE.mcmc"]])
#  
#  NCAace.age <- CalAPCEparallel(NCAdata,NCAmcmc,subgroup=subg.age,
#                            name.group=subg.age.lab,
#                            rho=0,burnin=0,size=5)
#  NCAqoi.age <- APCEsummary(NCAace.age[["APCE.mcmc"]])
#  
#  NVCAace.age <- CalAPCEparallel(NVCAdata,NVCAmcmc,subgroup=subg.age,
#                            name.group=subg.age.lab,
#                            rho=0,burnin=0,size=5)
#  NVCAqoi.age <- APCEsummary(NVCAace.age[["APCE.mcmc"]])
#  
#  # Figure S7
#  pdf("figs/qoi_fta_age.pdf", width = 9, height = 3)
#  PlotAPCE(FTAqoi.age, y.max = 0.124, top.margin = 0.03, bottom.margin = 0.03,
#           label.position = c("top", "bottom", "top", "bottom"),
#           name.group = subg.age.lab) +
#    labs(title = "Failure to Appear (FTA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nca_age.pdf", width = 9, height = 3)
#  PlotAPCE(NCAqoi.age, y.max = 0.124, label = FALSE, name.group = subg.age.lab) +
#    labs(title = "New Criminal Activity (NCA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nvca_age.pdf", width = 9, height = 3.5)
#  PlotAPCE(NVCAqoi.age, y.max = 0.124, label = FALSE, name.group = subg.age.lab) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  dev.off()

## ----strata-------------------------------------------------------------------
sample_ps = CalPS(sample_apce$P.R.mcmc)
PlotPS(sample_ps, col.values = c("blue", "black", "red", "brown", "purple"), label = FALSE)

## ----strata_rep, eval=FALSE---------------------------------------------------
#  # P.R
#  ps_fta = CalPS(FTAace[["P.R.mcmc"]])
#  ps_nca = CalPS(NCAace[["P.R.mcmc"]])
#  ps_nvca = CalPS(NVCAace[["P.R.mcmc"]])
#  # Figure 3
#  pdf("figs/er_fta.pdf", width = 8, height = 6)
#  PlotPS(ps_fta, y.max = 1, top.margin = 0.08, label.size = 5.2) +
#    labs(title = "Failure to Appear (FTA)")
#  dev.off()
#  pdf("figs/er_nca.pdf", width = 8, height = 6)
#  PlotPS(ps_nca, y.max = 1, top.margin = 0.08, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)")
#  dev.off()
#  pdf("figs/er_nvca.pdf", width = 8, height = 6)
#  PlotPS(ps_nvca, y.max = 1, top.margin = 0.08, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  dev.off()

## ----strata_age_rep, eval=FALSE-----------------------------------------------
#  # P.R
#  ps_fta.age = CalPS(FTAace.age[["P.R.mcmc"]])
#  ps_nca.age = CalPS(NCAace.age[["P.R.mcmc"]])
#  ps_nvca.age = CalPS(NVCAace.age[["P.R.mcmc"]])
#  # Figure S7
#  pdf("figs/er_fta_age.pdf", width = 8, height = 6)
#  PlotPS(ps_fta.age, y.max = 1, top.margin = 0.08, label.size = 5.2) +
#    labs(title = "Failure to Appear (FTA)")
#  dev.off()
#  pdf("figs/er_nca_age.pdf", width = 8, height = 6)
#  PlotPS(ps_nca.age, y.max = 1, top.margin = 0.08, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)")
#  dev.off()
#  pdf("figs/er_nvca_age.pdf", width = 8, height = 6)
#  PlotPS(ps_nvca.age, y.max = 1, top.margin = 0.08, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  dev.off()

## ----fair---------------------------------------------------------------------
sample_fair = CalFairness(sample_apce)
PlotFairness(sample_fair, y.max = 0.4, y.min = -0.4, r.labels = c("Safe", "Preventable 1", "Preventable 2", "Preventable 3", "Risky"))

## ----fair_rep, eval=FALSE-----------------------------------------------------
#  # Fairness
#  resfta1 = CalFairness(FTAace, attr = c(2,3))
#  resfta2 = CalFairness(FTAace, attr = c(4,5))
#  resnca1 = CalFairness(NCAace, attr = c(2,3))
#  resnca2 = CalFairness(NCAace, attr = c(4,5))
#  resnvca1 = CalFairness(NVCAace, attr = c(2,3))
#  resnvca2 = CalFairness(NVCAace, attr = c(4,5))
#  
#  # Figure S5
#  p1 <- PlotFairness(resfta1, top.margin = 0.02, y.max = 0.3) +
#    labs(title = "Failure to Appear (FTA)") + ylab("maximal sungroup difference")
#  p4 <- PlotFairness(resfta2, top.margin = 0.02, y.max = 0.3) +
#    labs(title = "Failure to Appear (FTA)") + ylab("maximal sungroup difference")
#  p2 <- PlotFairness(resnca1, top.margin = 0.02, y.max = 0.3, label = F) +
#    labs(title = "New Criminal Activity (NCA)")
#  p5 <- PlotFairness(resnca2, top.margin = 0.02, y.max = 0.3, label = F) +
#    labs(title = "New Criminal Activity (NCA)")
#  p3 <- PlotFairness(resnvca1, top.margin = 0.02, y.max = 0.3, label = F) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  p6 <- PlotFairness(resnvca2, top.margin = 0.02, y.max = 0.3, label = F) +
#    labs(title = "New Violent Criminal Activity (NVCA)")
#  
#  pdf("figs/fair_gender.pdf", height = 5, width = 24)
#  cowplot::plot_grid(p1,p2,p3, nrow = 1)
#  dev.off()
#  
#  pdf("figs/fair_race.pdf", height = 5, width = 24)
#  cowplot::plot_grid(p4,p5,p6, nrow = 1)
#  dev.off()

## ----optimal, eval = FALSE----------------------------------------------------
#  # ?CalOptimalDecision # Please check the details
#  synth_dmf = sample(0:1, nrow(synth), replace = TRUE) # random dmf recommendation
#  sample_optd_ci = CalOptimalDecision(data = synth,
#                                   mcmc.re = sample_mcmc,
#                                   c0.ls = seq(0,5,1), c1.ls = seq(0,5,1),
#                                   dmf = synth_dmf,
#                                   include.utility.diff.mcmc = TRUE,
#                                   # because of the above argument, the output is now a list
#                                   size = 2)
#  sample_optd = sample_optd_ci$res.i
#  # Suppose we want to plot the proportion of cases for which *cash bond*
#  # (either d1, d2 or d3) is optimal
#  sample_optd$cash = sample_optd$d1 + sample_optd$d2 + sample_optd$d3
#  # Specify the column name of decision to be plotted, which is "cash" in this case.
#  PlotOptimalDecision(sample_optd, "cash")

## ----optimal_rep, eval=FALSE--------------------------------------------------
#  # Optimal Decision
#  optd_fta_ci = CalOptimalDecision(data = FTAdata, mcmc.re = FTAmcmc,
#                                c0.ls = seq(0,10,0.5), c1.ls = seq(0,3,0.1),
#                                dmf = PSAdata$DMF,  size = 5,
#                                include.utility.diff.mcmc = TRUE)
#  optd_nca_ci = CalOptimalDecision(data = NCAdata, mcmc.re = NCAmcmc,
#                                c0.ls = seq(0,10,0.5), c1.ls = seq(0,3,0.1),
#                                dmf = PSAdata$DMF,  size = 5,
#                                include.utility.diff.mcmc = TRUE)
#  optd_nvca_ci = CalOptimalDecision(data = NVCAdata, mcmc.re = NVCAmcmc,
#                                 c0.ls = seq(0,10,0.5), c1.ls = seq(0,3,0.1),
#                                 dmf = PSAdata$DMF,  size = 5,
#                                 include.utility.diff.mcmc = TRUE)
#  optd_fta = optd_fta_ci$res.i
#  optd_nca = optd_nca_ci$res.i
#  optd_nvca = optd_nvca_ci$res.i
#  optd_fta$cash = optd_fta$d1 + optd_fta$d2
#  optd_nca$cash = optd_nca$d1 + optd_nca$d2
#  optd_nvca$cash = optd_nvca$d1 + optd_nvca$d2
#  
#  # Figure 6
#  p1 <- PlotOptimalDecision(res = optd_fta, colname.d = "cash", idx = which(PSAdata$DMF == 0)) +
#    labs(title = "Failure to Appear (FTA)", x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p2 <- PlotOptimalDecision(res = optd_nca, colname.d = "cash", idx = which(PSAdata$DMF == 0)) +
#    labs(title = "New Criminal Activity (NCA)", x = expression("Cost of NCA ("*c[0]*")"), y = NULL)
#  p3 <- PlotOptimalDecision(res = optd_nvca, colname.d = "cash", idx = which(PSAdata$DMF == 0),
#                            label.place = label_placement_fraction(0.9)) +
#    labs(title = "New Violent Criminal Activity (NVCA)",
#         x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  p4 <- PlotOptimalDecision(res = optd_fta, colname.d = "cash", idx = which(PSAdata$DMF == 1)) +
#    labs(x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p5 <- PlotOptimalDecision(res = optd_nca, colname.d = "cash", idx = which(PSAdata$DMF == 1)) +
#    labs(x = expression("Cost of NCA ("*c[0]*")"), y =NULL)
#  p6 <- PlotOptimalDecision(res = optd_nvca, colname.d = "cash", idx = which(PSAdata$DMF == 1),
#                            label.place = label_placement_fraction(0.9)) +
#    labs(x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  
#  
#  pdf("figs/optd_combined_signature.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p1, p2, p3, nrow = 1)
#  dev.off()
#  
#  pdf("figs/optd_combined_cash.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p4, p5, p6, nrow = 1)
#  dev.off()
#  
#  # Figure S16
#  p1 <- PlotOptimalDecision(res = optd_fta, colname.d = "cash", idx = which(PSAdata$FTAScore<=4)) +
#    labs(title = "Failure to Appear (FTA)", subtitle = "FTA Score: 1 - 4",
#         x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p2 <- PlotOptimalDecision(res = optd_nca, colname.d = "cash", idx = which(PSAdata$NCAScore<=4)) +
#    labs(title = "New Criminal Activity (NCA)", subtitle = "NCA Score: 1 - 4",
#         x = "NCA Score: 1 - 4", y = NULL)
#  p3 <- PlotOptimalDecision(res = optd_nvca, colname.d = "cash", idx = which(PSAdata$NVCAFlag==0),
#                            label.place = label_placement_fraction(0.9)) +
#    labs(title = "New Violent Criminal Activity (NVCA)", subtitle = "NVCA Flag: 0",
#         x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  p4 <- PlotOptimalDecision(res = optd_fta, colname.d = "cash", idx = which(PSAdata$FTAScore>4)) +
#    labs(subtitle = "FTA Score: 5 - 6",  x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p5 <- PlotOptimalDecision(res = optd_nca, colname.d = "cash", idx = which(PSAdata$NCAScore>4)) +
#    labs(subtitle = "NCA Score: 5 - 6",  x = expression("Cost of NCA ("*c[0]*")"), y =NULL)
#  p6 <- PlotOptimalDecision(res = optd_nvca, colname.d = "cash", idx = which(PSAdata$NVCAFlag==1),
#                            label.place = label_placement_fraction(0.9)) +
#    labs(subtitle = "NVCA Flag: 1", x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  
#  
#  pdf("figs/optd_separate_signature.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p1, p2, p3, nrow = 1)
#  dev.off()
#  
#  pdf("figs/optd_separate_cash.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p4, p5, p6, nrow = 1)
#  dev.off()

## ----comp, eval=FALSE---------------------------------------------------------
#  PlotUtilityDiff(sample_optd_ci$res.i)
#  PlotUtilityDiffCI(sample_optd_ci$res.mcmc)

## ----comp_rep, eval=FALSE-----------------------------------------------------
#  # Figure 7
#  p1 <- PlotUtilityDiff(optd_fta, which(PSAdata$Z==1)) +
#    labs(title = "Failure to Appear (FTA)",
#         x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p2 <- PlotUtilityDiff(optd_nca, which(PSAdata$Z==1)) +
#    labs(title = "New Criminal Activity (NCA)",
#         x = expression("Cost of NCA ("*c[0]*")"), y = NULL)
#  p3 <- PlotUtilityDiff(optd_nvca, which(PSAdata$Z==1)) +
#    labs(title = "New Violent Criminal Activity (NVCA)",
#         x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  p4 <- PlotUtilityDiff(optd_fta, which(PSAdata$Z==0)) +
#    labs(x = expression("Cost of FTA ("*c[0]*")"),
#         y = expression("Cost of unnecessarily harsh decision ("*c[1]*")"))
#  p5 <- PlotUtilityDiff(optd_nca, which(PSAdata$Z==0)) +
#    labs(x = expression("Cost of NCA ("*c[0]*")"), y =NULL)
#  p6 <- PlotUtilityDiff(optd_nvca, which(PSAdata$Z==0)) +
#    labs(x = expression("Cost of NVCA ("*c[0]*")"), y = NULL)
#  
#  pdf("figs/utility_treatment.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p1, p2, p3, nrow = 1)
#  dev.off()
#  
#  pdf("figs/utility_control.pdf", width = 16, height = 5.2)
#  cowplot::plot_grid(p4, p5, p6, nrow = 1)
#  dev.off()
#  
#  # Figure S17
#  p.fta <- PlotUtilityDiffCI(optd_fta_ci$res.mcmc)
#  p.nca <- PlotUtilityDiffCI(optd_nca_ci$res.mcmc)
#  p.nvca <- PlotUtilityDiffCI(optd_nvca_ci$res.mcmc)
#  p1 <- p.fta$p.treated + labs(title = "Failure to Appear (FTA)",
#                               y = "Difference in the Expected Utility",
#                               x = expression("Cost of FTA ("*c[0]*")"))
#  p2 <- p.nca$p.treated + labs(title = "New Criminal Activity (NCA)",
#                               y = "Difference in the Expected Utility",
#                               x = expression("Cost of NCA ("*c[0]*")"))
#  p3 <- p.nvca$p.treated + labs(title = "New Violent Criminal Activity (NVCA)",
#                                y = "Difference in the Expected Utility",
#                                x = expression("Cost of NVCA ("*c[0]*")"))
#  p4 <- p.fta$p.control + labs(title = "Failure to Appear (FTA)",
#                               y = "Difference in the Expected Utility",
#                               x = expression("Cost of FTA ("*c[0]*")"))
#  p5 <- p.nca$p.control + labs(title = "New Criminal Activity (NCA)",
#                               y = "Difference in the Expected Utility",
#                               x = expression("Cost of NCA ("*c[0]*")"))
#  p6 <- p.nvca$p.control + labs(title = "New Violent Criminal Activity (NVCA)",
#                                y = "Difference in the Expected Utility",
#                                x = expression("Cost of NVCA ("*c[0]*")"))
#  
#  pdf("figs/utility_treat_ci.pdf", width = 18, height = 6)
#  cowplot::plot_grid(p1, p2, p3, nrow = 1)
#  dev.off()
#  
#  pdf("figs/utility_control_ci.pdf", width = 18, height = 6)
#  cowplot::plot_grid(p4, p5, p6, nrow = 1)
#  dev.off()

## ----crt, eval=FALSE----------------------------------------------------------
#  # CRT
#  data(hearingdate_synth)
#  crt <- SpilloverCRT(D = synth$D,
#                      Z = synth$Z,
#                      CourtEvent_HearingDate = hearingdate_synth,
#                      n = 100) # increase the permutation size to 10000
#  PlotSpilloverCRT(crt)
#  
#  # Power analysis
#  crt_power <- SpilloverCRTpower(D = synth$D,
#                                 Z = synth$Z,
#                                 CourtEvent_HearingDate = hearingdate_synth)
#  PlotSpilloverCRTpower(crt_power)

## ----crt_rep, eval=FALSE------------------------------------------------------
#  data(HearingDate)
#  crt_data <- data.frame(
#    D = FTAdata$D,
#    Z = FTAdata$Z,
#    CourtEvent_HearingDate = HearingDate
#  )
#  # CRT
#  crt <- SpilloverCRT(D = crt_data$D,
#                      Z = crt_data$Z,
#                      CourtEvent_HearingDate = crt_data$CourtEvent_HearingDate,
#                      n = 10000)
#  # Figure S8
#  pdf("figs/hist_crt.pdf", width = 4, height = 6)
#  PlotSpilloverCRT(crt)
#  dev.off()
#  
#  # Power analysis
#  crt_power <- SpilloverCRTpower(D = crt_data$D,
#                                 Z = crt_data$Z,
#                                 CourtEvent_HearingDate = crt_data$CourtEvent_HearingDate,
#                                 size = 5,
#                                 n = 1000,
#                                 m = 1000,
#                                 cand_omegaZtilde = seq(-1.5, 1.5, by = 0.5))
#  # Figure S9
#  pdf("figs/crt_power_prop.pdf", width = 4, height = 6)
#  PlotSpilloverCRTpower(crt_power)
#  dev.off()

## ----freq---------------------------------------------------------------------
synth$SexWhite = synth$Sex * synth$White
freq_apce = CalAPCEipw(synth)
boot_apce = BootstrapAPCEipw(synth, rep = 10)
# subgroup analysis
data_s0 = subset(synth, synth$Sex==0,select=-c(Sex,SexWhite))
freq_s0 = CalAPCEipw(data_s0)
boot_s0 = BootstrapAPCEipw(data_s0, rep = 10)
data_s1 = subset(synth, synth$Sex==1,select=-c(Sex,SexWhite))
freq_s1 = CalAPCEipw(data_s1)
boot_s1 = BootstrapAPCEipw(data_s1, rep = 10)
data_s1w0 = subset(synth, synth$Sex==1&synth$White==0,select=-c(Sex,White,SexWhite))
freq_s1w0 = CalAPCEipw(data_s1w0)
boot_s1w0 = BootstrapAPCEipw(data_s1w0, rep = 10)
data_s1w1 = subset(synth, synth$Sex==1&synth$White==1,select=-c(Sex,White,SexWhite))
freq_s1w1 = CalAPCEipw(data_s1w1)
boot_s1w1 = BootstrapAPCEipw(data_s1w1, rep = 10)

freq_apce_summary <- APCEsummaryipw(freq_apce, freq_s0, freq_s1, 
                                    freq_s1w0, freq_s1w1, 
                                    boot_apce, boot_s0, boot_s1, 
                                    boot_s1w0, boot_s1w0)
PlotAPCE(freq_apce_summary, y.max = 0.25, 
         decision.labels = c("signature","small cash","middle cash","large cash"), 
         shape.values = c(16, 17, 15, 18), 
         col.values = c("blue", "black", "red", "brown", "purple"), label = FALSE)

## ----freq_rep, eval=FALSE-----------------------------------------------------
#  set.seed(123) # seed for bootstrap
#  ## Frequentist approach
#  # FTA
#  freq_apce = CalAPCEipw(FTAdata)
#  boot_apce = BootstrapAPCEipw(FTAdata, rep=1000)
#  data_s0 = subset(FTAdata, FTAdata$Sex==0,select=-c(Sex,SexWhite))
#  freq_s0 = CalAPCEipw(data_s0)
#  boot_s0 = BootstrapAPCEipw(data_s0, rep = 1000)
#  data_s1 = subset(FTAdata, FTAdata$Sex==1,select=-c(Sex,SexWhite))
#  freq_s1 = CalAPCEipw(data_s1)
#  boot_s1 = BootstrapAPCEipw(data_s1, rep = 1000)
#  data_s1w0 = subset(FTAdata, FTAdata$Sex==1&FTAdata$White==0,select=-c(Sex,White,SexWhite))
#  freq_s1w0 = CalAPCEipw(data_s1w0)
#  boot_s1w0 = BootstrapAPCEipw(data_s1w0, rep = 1000)
#  data_s1w1 = subset(FTAdata, FTAdata$Sex==1&FTAdata$White==1,select=-c(Sex,White,SexWhite))
#  freq_s1w1 = CalAPCEipw(data_s1w1)
#  boot_s1w1 = BootstrapAPCEipw(data_s1w1, rep = 1000)
#  fta_apce_summary <- APCEsummaryipw(freq_apce, freq_s0, freq_s1,
#                                      freq_s1w0, freq_s1w1,
#                                      boot_apce, boot_s0, boot_s1,
#                                      boot_s1w0, boot_s1w0)
#  # NCA
#  freq_apce = CalAPCEipw(NCAdata)
#  boot_apce = BootstrapAPCEipw(NCAdata, rep=1000)
#  data_s0 = subset(NCAdata, NCAdata$Sex==0,select=-c(Sex,SexWhite))
#  freq_s0 = CalAPCEipw(data_s0)
#  boot_s0 = BootstrapAPCEipw(data_s0, rep = 1000)
#  data_s1 = subset(NCAdata, NCAdata$Sex==1,select=-c(Sex,SexWhite))
#  freq_s1 = CalAPCEipw(data_s1)
#  boot_s1 = BootstrapAPCEipw(data_s1, rep = 1000)
#  data_s1w0 = subset(NCAdata, NCAdata$Sex==1&NCAdata$White==0,select=-c(Sex,White,SexWhite))
#  freq_s1w0 = CalAPCEipw(data_s1w0)
#  boot_s1w0 = BootstrapAPCEipw(data_s1w0, rep = 1000)
#  data_s1w1 = subset(NCAdata, NCAdata$Sex==1&NCAdata$White==1,select=-c(Sex,White,SexWhite))
#  freq_s1w1 = CalAPCEipw(data_s1w1)
#  boot_s1w1 = BootstrapAPCEipw(data_s1w1, rep = 1000)
#  nca_apce_summary <- APCEsummaryipw(freq_apce, freq_s0, freq_s1,
#                                      freq_s1w0, freq_s1w1,
#                                      boot_apce, boot_s0, boot_s1,
#                                      boot_s1w0, boot_s1w0)
#  
#  # Figure S10
#  pdf("figs/qoi_fta_freq.pdf",width = 9, height = 3)
#  PlotAPCE(fta_freq_apce_summary, y.max = 0.23, top.margin = 0.05, bottom.margin = 0.05,
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nca_freq.pdf",width = 9, height = 3.5)
#  PlotAPCE(nca_freq_apce_summary, y.max = 0.23, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)")
#  dev.off()
#  
#  ## Random effects
#  full.demographics = "Sex + White + SexWhite + Age"
#  full.other.cov = "PendingChargeAtTimeOfOffense + NCorNonViolentMisdemeanorCharge + ViolentMisdemeanorCharge + ViolentFelonyCharge + NonViolentFelonyCharge + PriorMisdemeanorConviction + PriorFelonyConviction + PriorViolentConviction + PriorSentenceToIncarceration + PriorFTAInPastTwoYears + PriorFTAOlderThanTwoYears + Staff_ReleaseRecommendation + (1|CourtEvent_HearingDate) + D"
#  
#  mod = paste0("Y ~ ", full.demographics, " + ", full.other.cov)
#  mod.s = paste0("Y ~ White + Age + ", full.other.cov)
#  mod.sw = paste0("Y ~ Age + ", full.other.cov)
#  
#  # FTA
#  freq_apce = CalAPCEipwRE(FTAdata, formula = mod)
#  boot_apce = BootstrapAPCEipwRE(FTAdata, rep=1000, formula = mod)
#  data_s0 = subset(FTAdata, FTAdata$Sex==0,select=-c(Sex,SexWhite))
#  freq_s0 = CalAPCEipwRE(data_s0, formula = mod.s)
#  boot_s0 = BootstrapAPCEipwRE(data_s0, rep = 1000, formula = mod.s)
#  data_s1 = subset(FTAdata, FTAdata$Sex==1,select=-c(Sex,SexWhite))
#  freq_s1 = CalAPCEipwRE(data_s1, formula = mod.s)
#  boot_s1 = BootstrapAPCEipwRE(data_s1, rep = 1000, formula = mod.s)
#  data_s1w0 = subset(FTAdata, FTAdata$Sex==1&FTAdata$White==0,select=-c(Sex,White,SexWhite))
#  freq_s1w0 = CalAPCEipwRE(data_s1w0, formula = mod.sw)
#  boot_s1w0 = BootstrapAPCEipwRE(data_s1w0, rep = 1000, formula = mod.sw)
#  data_s1w1 = subset(FTAdata, FTAdata$Sex==1&FTAdata$White==1,select=-c(Sex,White,SexWhite))
#  freq_s1w1 = CalAPCEipwRE(data_s1w1, formula = mod.sw)
#  boot_s1w1 = BootstrapAPCEipwRE(data_s1w1, rep = 1000, formula = mod.sw)
#  fta_re_apce_summary <- APCEsummaryipw(freq_apce, freq_s0, freq_s1,
#                                      freq_s1w0, freq_s1w1,
#                                      boot_apce, boot_s0, boot_s1,
#                                      boot_s1w0, boot_s1w0)
#  # NCA
#  freq_apce = CalAPCEipwRE(NCAdata, formula = mod)
#  boot_apce = BootstrapAPCEipwRE(NCAdata, rep=1000, formula = mod)
#  data_s0 = subset(NCAdata, NCAdata$Sex==0,select=-c(Sex,SexWhite))
#  freq_s0 = CalAPCEipwRE(data_s0, formula = mod.s)
#  boot_s0 = BootstrapAPCEipwRE(data_s0, rep = 1000, formula = mod.s)
#  data_s1 = subset(NCAdata, NCAdata$Sex==1,select=-c(Sex,SexWhite))
#  freq_s1 = CalAPCEipwRE(data_s1, formula = mod.s)
#  boot_s1 = BootstrapAPCEipwRE(data_s1, rep = 1000, formula = mod.s)
#  data_s1w0 = subset(NCAdata, NCAdata$Sex==1&NCAdata$White==0,select=-c(Sex,White,SexWhite))
#  freq_s1w0 = CalAPCEipwRE(data_s1w0, formula = mod.sw)
#  boot_s1w0 = BootstrapAPCEipwRE(data_s1w0, rep = 1000, formula = mod.sw)
#  data_s1w1 = subset(NCAdata, NCAdata$Sex==1&NCAdata$White==1,select=-c(Sex,White,SexWhite))
#  freq_s1w1 = CalAPCEipwRE(data_s1w1, formula = mod.sw)
#  boot_s1w1 = BootstrapAPCEipwRE(data_s1w1, rep = 1000, formula = mod.sw)
#  nca_re_apce_summary <- APCEsummaryipw(freq_apce, freq_s0, freq_s1,
#                                      freq_s1w0, freq_s1w1,
#                                      boot_apce, boot_s0, boot_s1,
#                                      boot_s1w0, boot_s1w0)
#  
#  # Figure S11
#  pdf("figs/qoi_fta_freq_re.pdf",width = 9, height = 3)
#  PlotAPCE(fta_freq_apce_summary, y.max = 0.34, top.margin = 0.1, bottom.margin = 0.1
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nca_freq_re.pdf",width = 9, height = 3.5)
#  PlotAPCE(nca_freq_apce_summary, y.max = 0.34, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)")
#  dev.off()
#  
#  ## Age subgroup
#  # FTA
#  data_age1 = subset(FTAdata, FTAdata$Age<=22)
#  freq_age1 = CalAPCEipw(data_age1)
#  boot_age1 = BootstrapAPCEipw(data_age1, rep = 1000)
#  data_age2 = subset(FTAdata, FTAdata$Age>22 & FTAdata$Age<=28)
#  freq_age2 = CalAPCEipw(data_age2)
#  boot_age2 = BootstrapAPCEipw(data_age2, rep = 1000)
#  data_age3 = subset(FTAdata, FTAdata$Age>28 & FTAdata$Age<=35)
#  freq_age3 = CalAPCEipw(data_age3)
#  boot_age3 = BootstrapAPCEipw(data_age3, rep = 1000)
#  data_age4 = subset(FTAdata, FTAdata$Age>35 & FTAdata$Age<=45)
#  freq_age4 = CalAPCEipw(data_age4)
#  boot_age4 = BootstrapAPCEipw(data_age4, rep = 1000)
#  data_age5 = subset(FTAdata, FTAdata$Age>45)
#  freq_age5 = CalAPCEipw(data_age5)
#  boot_age5 = BootstrapAPCEipw(data_age5, rep = 1000)
#  fta_apce_summary <- APCEsummaryipw(freq_age1, freq_age2,freq_age3,
#                                     freq_age4, freq_age5,
#                                     boot_age1, boot_age2,boot_age3,
#                                     boot_age4, boot_age5)
#  # NCA
#  data_age1 = subset(NCAdata, NCAdata$Age<=22)
#  freq_age1 = CalAPCEipw(data_age1)
#  boot_age1 = BootstrapAPCEipw(data_age1, rep = 1000)
#  data_age2 = subset(NCAdata, NCAdata$Age>22 & NCAdata$Age<=28)
#  freq_age2 = CalAPCEipw(data_age2)
#  boot_age2 = BootstrapAPCEipw(data_age2, rep = 1000)
#  data_age3 = subset(NCAdata, NCAdata$Age>28 & NCAdata$Age<=35)
#  freq_age3 = CalAPCEipw(data_age3)
#  boot_age3 = BootstrapAPCEipw(data_age3, rep = 1000)
#  data_age4 = subset(NCAdata, NCAdata$Age>35 & NCAdata$Age<=45)
#  freq_age4 = CalAPCEipw(data_age4)
#  boot_age4 = BootstrapAPCEipw(data_age4, rep = 1000)
#  data_age5 = subset(NCAdata, NCAdata$Age>45)
#  freq_age5 = CalAPCEipw(data_age5)
#  boot_age5 = BootstrapAPCEipw(data_age5, rep = 1000)
#  fta_apce_summary <- APCEsummaryipw(freq_age1, freq_age2,freq_age3,
#                                     freq_age4, freq_age5,
#                                     boot_age1, boot_age2,boot_age3,
#                                     boot_age4, boot_age5)
#  # Figure S12
#  pdf("figs/qoi_fta_freq_age.pdf",width = 9, height = 3)
#  PlotAPCE(fta_freq_apce_summary, y.max = 0.25, top.margin = 0.13, bottom.margin = 0.09,
#           label.position = c("top", "bottom", "top", "bottom"),
#           name.group = c("17~22", "23~28", "29~35", "36~45", "46~")) +
#    labs(title = "Failure to Appear (FTA)") +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/qoi_nca_freq_age.pdf",width = 9, height = 3.5)
#  PlotAPCE(nca_freq_apce_summary, y.max = 0.25, label = FALSE,
#           name.group = c("17~22", "23~28", "29~35", "36~45", "46~")) +
#    labs(title = "New Criminal Activity (NCA)")
#  dev.off()

## ----sens_rep, eval=FALSE-----------------------------------------------------
#  ## rho = 0.05
#  ## Main analysis
#  # MCMC
#  FTAmcmc = AiEvalmcmc(FTAdata,rho=0.05,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NCAmcmc = AiEvalmcmc(NCAdata,rho=0.05,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NVCAmcmc = AiEvalmcmc(NVCAdata,rho=0.05,n.mcmc=60000,verbose=TRUE,out.length=500)
#  
#  # APCE
#  FTAace <- CalAPCEparallel(FTAdata,FTAmcmc,subgroup=subg,rho=0.05,burnin=2/3,size=5)
#  FTAqoi <- APCEsummary(FTAace[["APCE.mcmc"]])
#  
#  NCAace <- CalAPCEparallel(NCAdata,NCAmcmc,subgroup=subg,rho=0.05,burnin=2/3,size=5)
#  NCAqoi <- APCEsummary(NCAace[["APCE.mcmc"]])
#  
#  NVCAace <- CalAPCEparallel(NVCAdata,NVCAmcmc,subgroup=subg,rho=0.05,burnin=2/3,size=5)
#  NVCAqoi <- APCEsummary(NVCAace[["APCE.mcmc"]])
#  
#  # Figure S13
#  pdf("figs/sens_fta_005.pdf", width = 9, height = 3)
#  PlotAPCE(FTAqoi, y.max = 0.18, top.margin = 0.05, bottom.margin = 0.05,
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)", subtitle = expression(paste(rho, "= 0.05"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nca_005.pdf", width = 9, height = 3)
#  PlotAPCE(NCAqoi, y.max = 0.18, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)", subtitle = expression(paste(rho, "= 0.05"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nvca_005.pdf", width = 9, height = 3.5)
#  PlotAPCE(NVCAqoi, y.max = 0.3, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)", subtitle = expression(paste(rho, "= 0.05")))
#  dev.off()
#  
#  ## rho = 0.1
#  ## Main analysis
#  # MCMC
#  FTAmcmc = AiEvalmcmc(FTAdata,rho=0.1,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NCAmcmc = AiEvalmcmc(NCAdata,rho=0.1,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NVCAmcmc = AiEvalmcmc(NVCAdata,rho=0.1,n.mcmc=60000,verbose=TRUE,out.length=500)
#  
#  # APCE
#  FTAace <- CalAPCEparallel(FTAdata,FTAmcmc,subgroup=subg,rho=0.1,burnin=2/3,size=5)
#  FTAqoi <- APCEsummary(FTAace[["APCE.mcmc"]])
#  
#  NCAace <- CalAPCEparallel(NCAdata,NCAmcmc,subgroup=subg,rho=0.1,burnin=2/3,size=5)
#  NCAqoi <- APCEsummary(NCAace[["APCE.mcmc"]])
#  
#  NVCAace <- CalAPCEparallel(NVCAdata,NVCAmcmc,subgroup=subg,rho=0.1,burnin=2/3,size=5)
#  NVCAqoi <- APCEsummary(NVCAace[["APCE.mcmc"]])
#  
#  # Figure S14
#  pdf("figs/sens_fta_01.pdf", width = 9, height = 3)
#  PlotAPCE(FTAqoi, y.max = 0.19, top.margin = 0.05, bottom.margin = 0.05,
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)", subtitle = expression(paste(rho, "= 0.1"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nca_01.pdf", width = 9, height = 3)
#  PlotAPCE(NCAqoi, y.max = 0.19, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)", subtitle = expression(paste(rho, "= 0.1"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nvca_01.pdf", width = 9, height = 3.5)
#  PlotAPCE(NVCAqoi, y.max = 0.38, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)", subtitle = expression(paste(rho, "= 0.1")))
#  dev.off()
#  
#  ## rho = 0.3
#  ## Main analysis
#  # MCMC
#  FTAmcmc = AiEvalmcmc(FTAdata,rho=0.3,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NCAmcmc = AiEvalmcmc(NCAdata,rho=0.3,n.mcmc=60000,verbose=TRUE,out.length=500)
#  NVCAmcmc = AiEvalmcmc(NVCAdata,rho=0.3,n.mcmc=60000,verbose=TRUE,out.length=500)
#  
#  # APCE
#  FTAace <- CalAPCEparallel(FTAdata,FTAmcmc,subgroup=subg,rho=0.3,burnin=2/3,size=5)
#  FTAqoi <- APCEsummary(FTAace[["APCE.mcmc"]])
#  
#  NCAace <- CalAPCEparallel(NCAdata,NCAmcmc,subgroup=subg,rho=0.3,burnin=2/3,size=5)
#  NCAqoi <- APCEsummary(NCAace[["APCE.mcmc"]])
#  
#  NVCAace <- CalAPCEparallel(NVCAdata,NVCAmcmc,subgroup=subg,rho=0.3,burnin=2/3,size=5)
#  NVCAqoi <- APCEsummary(NVCAace[["APCE.mcmc"]])
#  
#  # Figure S15
#  pdf("figs/sens_fta_03.pdf", width = 9, height = 3)
#  PlotAPCE(FTAqoi, y.max = 0.16, top.margin = 0.05, bottom.margin = 0.05,
#           label.position = c("top", "bottom", "top", "bottom")) +
#    labs(title = "Failure to Appear (FTA)", subtitle = expression(paste(rho, "= 0.3"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nca_03.pdf", width = 9, height = 3)
#  PlotAPCE(NCAqoi, y.max = 0.16, label = FALSE) +
#    labs(title = "New Criminal Activity (NCA)", subtitle = expression(paste(rho, "= 0.3"))) +
#    theme(legend.position = "none")
#  dev.off()
#  pdf("figs/sens_nvca_03.pdf", width = 9, height = 3.5)
#  PlotAPCE(NVCAqoi, y.max = 0.62, label = FALSE) +
#    labs(title = "New Violent Criminal Activity (NVCA)", subtitle = expression(paste(rho, "= 0.3")))
#  dev.off()

