rm(list = ls())
gc()
options(warn = -1)
options(digits = 8)
options(scipen = 999)

library(reshape2)
library(ggplot2)
library(ggsci)
library(ggeasy)

setwd("D:/")
df <- read.csv("life_table.csv", header = T, stringsAsFactors = F)

new_folder_path <- "Life_expectancy"
dir.create(new_folder_path, recursive = TRUE)
if (dir.exists(new_folder_path)) {
  unlink(new_folder_path, recursive = TRUE)
  dir.create(new_folder_path, recursive = TRUE)
}

setwd(paste0("D:/", new_folder_path, "/"))

################################################################################

exposure_name <- "Family income-to-poverty ratio"
leplot_two <- c("Employed, students, or retired vs Unemployed")
leplot_three <- c("≥1.3 & <3.5 (intermediate) vs ≥3.5 (high)", "<1.3 (low) vs ≥3.5 (high)") 
leplot_four <-  c("Education attainment College or AA degree vs College Graduate or above", "High school or equivalent vs College Graduate or above", "Less than high school vs College Graduate or above")
#Education attainment College or AA degree vs College Graduate or above, High school or equivalent vs College Graduate or above,Less than high school vs College Graduate or above"
expname_two <- c("Employed, students, or retired", "Unemployed")
expname_three <- c(">=3.5 (high)",">=1.3 & <3.5 (intermediate)","<1.3 (low)")
expname_four <- c("College Graduate or above", "College or AA degree", "High school or equivalent", "Less than high school")
#"College Graduate or above", "College or AA degree", "High school or equivalent", "Less than high school"
label_three <- c("Others", "Cancer", "CVD")
upper_age <- 100

pointsize <- 4
ystepsize <- 0.5
expand_axis <- 0.01
le_age_at <- 50
dpi_value <- 300
legend_text_size <- 12
legendp_x <- 0.4
legendp_y <- 0.85
delegendp_x <- 0.8
delegendp_y <- 0.8
delegendp_xm <- 0.4
delegendp_ym <- 0.85
bar_xminr <- 0.75
bar_xmaxr <- 0.99
bar_yminr <- 0.65
bar_ymaxr <- 0.99
plot_width <- 40
plot_height <- 30

################################################################################
if (ncol(df)==26) {
  expo_num <- 5
  disease_num <- 3
} else if (ncol(df)==11) {
  expo_num <- 2
  disease_num <- 3
} else if (ncol(df)==17) {
  expo_num <- 4
  disease_num <- 2
} else if (ncol(df)==16) {
  expo_num <- 3
  disease_num <- 3
} else if (ncol(df)==13) {
  expo_num <- 3
  disease_num <- 2
} else if (ncol(df)==21 & ("g5d2" %in% names(df))) {
  expo_num <- 5
  disease_num <- 2
} else if (ncol(df)==21 & ("g4d3" %in% names(df))) {
  expo_num <- 4
  disease_num <- 3
} else if (ncol(df)==19) {
  expo_num <- 3
  disease_num <- 4
} else if (ncol(df)==23) {
  expo_num <- 4
  disease_num <- 4
} else if (ncol(df)==31 & ("g5d4" %in% names(df))) {
  expo_num <- 5
  disease_num <- 4
} else if (ncol(df)==31 & ("g6d3" %in% names(df))) {
  expo_num <- 6
  disease_num <- 3
}

nr <- sum(!is.na(df$tt_qx))
nl <- nrow(df)
df$tt_mx <- NA

for (i in 1:(nr-1)) {
  df$tt_mx[i] <- df$tt_qx[i]/(1-0.5*df$tt_qx[i])
}

df$tt_mx[nr] <- df$tt_qx[nr]/(20-(20-10)*df$tt_qx[nr])

for (i in 1:expo_num) {
  df[paste0("t_irx", i)] <- NA
}

for (i in 1:nr) {
  sum_result <- df$t_px1[i]
  for (j in 2:expo_num) {
    sum_result <- sum_result + df[i, paste0("t_px", j)]*df[i, paste0("t_hrx", j)]
  }
  df$t_irx1[i] <-  df$tt_mx[i]/sum_result
}

for (i in 2:expo_num) {
  df[paste0("t_irx", i)] <- df$t_irx1*df[paste0("t_hrx", i)]
}

for (i in 1:expo_num) {
  df[nr, paste0("t_irx", i)] <- 0.5
}

for (i in 1:expo_num) {
  df[paste0("t_lx", i)] <- NA
  df[1, paste0("t_lx", i)] <- 100000 
  df[paste0("t_dx", i)] <- NA
  df[1, paste0("t_dx", i)] <- 100000*df[1, paste0("t_irx", i)]
}

for (i in 2:nr) {
  for (j in 1:expo_num) {
    df[i, paste0("t_lx", j)] <- df[i-1, paste0("t_lx", j)] - df[i-1, paste0("t_dx", j)]
    df[i, paste0("t_dx", j)] <- df[i, paste0("t_lx", j)]*df[i, paste0("t_irx", j)]
}}

for (i in 1:expo_num) {
  df[paste0("t_llx", i)] <- NA
}

for (i in 1:(nr-1)) {
  for (j in 1:expo_num) {
    df[i, paste0("t_llx", j)] <- (df[i, paste0("t_lx", j)] + df[i+1, paste0("t_lx", j)])/2
}}

for (i in 1:expo_num) {
  df[nr, paste0("t_llx", i)] <- df[nr, paste0("t_lx", i)]/df[nr, paste0("t_irx", i)]
}

for (i in 1:expo_num) {
  df[paste0("t_tx", i)] <- NA
  df[nr, paste0("t_tx", i)] <- df[nr, paste0("t_llx", i)]
}

for (i in 1:(nr-1)) {
  for (j in 1:expo_num) {
    df[nr-i, paste0("t_tx", j)] <- df[nr-i+1, paste0("t_tx", j)] + df[nr-i, paste0("t_llx", j)]
}}

for (i in 1:expo_num) {
  df[paste0("t_ex", i)] <- NA
}

for (i in 1:nr) {
  for (j in 1:expo_num) {
    df[i, paste0("t_ex", j)] <- df[i, paste0("t_tx", j)]/df[i, paste0("t_lx", j)]
}}

for (i in 1:expo_num) {
  df[nr, paste0("t_ex", i)] <- NA
  df[nr, paste0("t_dx", i)] <- NA
  df[nr, paste0("t_llx", i)] <- NA
}

df$dage <- df$agegroup
df$dage[nr:nl] <- NA
tempx <- (1+0):(nl+0)
newdata <- data.frame(dage = tempx, t_llx1 = 1, t_llx2 = 1, t_llx3 = 1, t_llx4 = 1, t_llx5 = 1, t_llx6 = 1) 
i <- 1
while (i <= expo_num) {
  pm <- glm(as.formula(paste0("t_dx", i, " ~ ", "offset(log(t_llx", i, ")) + dage + dage^2")), data=df, family = poisson) 
  df[,paste0("pt_irx", i)] <- exp(predict(pm, newdata=newdata, se.fit=T)$fit)
  df[,paste0("pt_irx", i, "_low")] <- exp(predict(pm, newdata=newdata, se.fit=T)$fit - 1.96*predict(pm, newdata=newdata, se.fit=T)$se)
  df[,paste0("pt_irx", i, "_high")] <- exp(predict(pm, newdata=newdata, se.fit=T)$fit + 1.96*predict(pm, newdata=newdata, se.fit=T)$se)
  i <- i + 1
}

mortdf <- data.frame(Exposure = numeric(0), Mortalityrate = numeric(0), Lowlimit95 = numeric(0), Highlimit95 = numeric(0))
for (i in 1:expo_num) {
  mortdf[i, "Exposure"] <- i
  mortdf[i, "Mortalityrate"] <- mean(df[,paste0("pt_irx", i)])
  mortdf[i, "Lowlimit95"] <- mean(df[,paste0("pt_irx", i, "_low")])
  mortdf[i, "Highlimit95"] <- mean(df[,paste0("pt_irx", i, "_high")])
}
write.csv(mortdf, paste0("Mortality_rate_", Sys.Date(), ".csv"), row.names = FALSE)

for (i in 1:nl) {
  for (j in 1:expo_num) {
    df[i, paste0("pt_irx", j)] <- ifelse(df[i, paste0("pt_irx", j)] >= 1, 1, df[i, paste0("pt_irx", j)])
}}

for (i in 1:expo_num) {
  df[nl, paste0("pt_irx", i)] <- 0.99
}

for (i in 1:expo_num) {
  df[paste0("pt_lx", i)] <- NA
  df[1, paste0("pt_lx", i)] <- 100000
  df[paste0("pt_dx", i)] <- NA
  df[1, paste0("pt_dx", i)] <- 100000*df[1, paste0("pt_irx", i)]
}

for (i in 2:nl) {
  for (j in 1:expo_num) {
    df[i, paste0("pt_lx", j)] <- df[i-1, paste0("pt_lx", j)] - df[i-1, paste0("pt_dx", j)]
    df[i, paste0("pt_dx", j)] <- df[i, paste0("pt_lx", j)]*df[i, paste0("pt_irx", j)]
}}

for (i in 1:expo_num) {
  df[paste0("pt_llx", i)] <- NA
}

for (i in 1:(nl-1)) {
  for (j in 1:expo_num) {
    df[i, paste0("pt_llx", j)] <- (df[i, paste0("pt_lx", j)] + df[i+1, paste0("pt_lx", j)])/2
}}

for (i in 1:expo_num) {
  df[nl, paste0("pt_llx", i)] <- df[nl, paste0("pt_lx", i)]/df[nl, paste0("pt_irx", i)]
  df[paste0("pt_tx", i)] <- NA
  df[nl, paste0("pt_tx", i)] <- df[nl, paste0("pt_llx", i)]
}

for (i in 1:(nl-1)) {
  for (j in 1:expo_num) {
    df[nl-i, paste0("pt_tx", j)] <- df[nl-i+1, paste0("pt_tx", j)] + df[nl-i, paste0("pt_llx", j)]
}}

for (i in 1:expo_num) {
  df[paste0("pt_ex", i)] <- NA
}

for (i in 1:nl) {
  for (j in 1:expo_num) {
    df[i, paste0("pt_ex", j)] <- df[i, paste0("pt_tx", j)]/df[i, paste0("pt_lx", j)]
}}

for (i in 1:expo_num) {
  df[paste0("pt_ex", i)] <- df[paste0("pt_ex", i)]*(df[1, paste0("t_ex", i)]/df[1, paste0("pt_ex", i)])
}

#LE's 95% CI (Eayres DP, Williams ES, Evaluation of methodologies for small area life expectancy estimation. J Epidemiol Community Health 2004; 58:243-249)
for (i in 1:expo_num) {
  df[paste0("pt_q", i)] <- df[paste0("pt_irx", i)]/(1 + (1-0.5)*df[paste0("pt_irx", i)])
  df[paste0("pt_p", i)] <- 1 - df[paste0("pt_q", i)]
  df[paste0("Spi", i)] <- NA
}

for (j in 1:expo_num) {
  for (i in 1:nl) {
    df[i, paste0("Spi", j)] <- ifelse(df[i, paste0("pt_dx", j)] == 0, 0, (df[i, paste0("pt_q", j)]^2*(1- df[i, paste0("pt_q", j)]))/df[i, paste0("pt_dx", j)])
}}

for (j in 1:expo_num) {
  df[nl, paste0("Spi", j)] <- (df[nl, paste0("pt_irx", j)]*(1 - df[nl, paste0("pt_irx", j)]))/(df[nl, paste0("pt_p", j)])
}

for (j in 1:expo_num) {
  for (i in 1:nl) {
    df[i, paste0("pt_ex", j)] <- ifelse(is.nan(df[i, paste0("pt_ex", j)]), 0, df[i, paste0("pt_ex", j)])
}}

for (j in 1:expo_num) {
  df[paste0("WSpi", j)] <- NA
}

for (j in 1:expo_num) {
  for (i in 1:(nl-1)) {
  df[i, paste0("WSpi", j)] <- (df[i, paste0("pt_lx", j)]^2)*(((1-0.5)*1 + df[i+1, paste0("pt_ex", j)])^2)*df[i, paste0("Spi", j)]
}}

for (j in 1:expo_num) {
  df[nl, paste0("WSpi", j)] <- ((df[nl, paste0("pt_lx", j)]^2))/(df[nl, paste0("pt_irx", j)]^4)*df[nl, paste0("Spi", j)]
}

for (j in 1:expo_num) {
  for (i in 1:nl) {
    df[i, paste0("WSpi", j)] <- ifelse(is.na(df[i, paste0("WSpi", j)]), 0, df[i, paste0("WSpi", j)])
}}

for (i in 1:expo_num) {
  df[paste0("Sti", i)] <- NA
  df[nl, paste0("Sti", i)] <- df[nl, paste0("WSpi", i)]
}

for (j in 1:expo_num) {
  for (i in 1:(nl-1)) {
    df[nl-i, paste0("Sti", j)] <- df[nl-i+1, paste0("Sti", j)] + df[nl-i, paste0("WSpi", j)]
}}

for (j in 1:expo_num) {
  df[paste0("Sei", j)] <- sqrt(df[paste0("Sti", j)]/(df[paste0("pt_lx", j)]^2))
  df[paste0("pt_exlow", j)] <- df[paste0("pt_ex", j)] - 1.96*df[paste0("Sei", j)]
  df[paste0("pt_exhigh", j)] <- df[paste0("pt_ex", j)] + 1.96*df[paste0("Sei", j)]
}

if (expo_num == 3) {
  simdf <- subset(df, select = c(agegroup, pt_ex1, pt_exlow1, pt_exhigh1, pt_ex2, pt_exlow2, pt_exhigh2, pt_ex3, pt_exlow3, pt_exhigh3))
} else if (expo_num == 4) {
  simdf <- subset(df, select = c(agegroup, pt_ex1, pt_exlow1, pt_exhigh1, pt_ex2, pt_exlow2, pt_exhigh2, pt_ex3, pt_exlow3, pt_exhigh3, pt_ex4, pt_exlow4, pt_exhigh4))
} else if (expo_num == 5) {
  simdf <- subset(df, select = c(agegroup, pt_ex1, pt_exlow1, pt_exhigh1, pt_ex2, pt_exlow2, pt_exhigh2, pt_ex3, pt_exlow3, pt_exhigh3, pt_ex4, pt_exlow4, pt_exhigh4, pt_ex5, pt_exlow5, pt_exhigh5))
} else if (expo_num == 6) {
  simdf <- subset(df, select = c(agegroup, pt_ex1, pt_exlow1, pt_exhigh1, pt_ex2, pt_exlow2, pt_exhigh2, pt_ex3, pt_exlow3, pt_exhigh3, pt_ex4, pt_exlow4, pt_exhigh4, pt_ex5, pt_exlow5, pt_exhigh5, pt_ex6, pt_exlow6, pt_exhigh6))
} else if (expo_num == 2) {
  simdf <- subset(df, select = c(agegroup, pt_ex1, pt_exlow1, pt_exhigh1, pt_ex2, pt_exlow2, pt_exhigh2))
}

write.csv(simdf, paste0("Expected_Life_95CI_", Sys.Date(), ".csv"), row.names = FALSE)

for (i in 1:expo_num) {
  df99 <- df[1:(nl-1),]
  df2 <- data.frame(x=df99$agegroup, y=df99[,paste0("pt_irx", i)]*100000)
  df79 <- df99[1:(nr-1),]
  df1 <- data.frame(x=df79$agegroup, y=df79[,paste0("pt_irx", i)])
  loe <- loess(y ~ x + x^2, df1, span = 3, degree = 2, family = c("gaussian"))
  df1$ynew <- predict(loe, newdata = data.frame(x = seq(min(df1$x), max(df1$x),1)))*100000
  
  spp <- ggplot() +
    geom_point(data=df1, aes(x=x, y=ynew), color="#00A1D5FF", fill = "#00A1D5FF",  size = pointsize, shape = 21) +
    geom_point(data=df2, aes(x=x, y=y), color="#B24745FF", fill = "#B24745FF", size = pointsize, shape = 8) +
    scale_x_continuous(breaks = seq(min(df$agegroup), max(df$agegroup), 5), expand = c(expand_axis, expand_axis))
  
  spp <- spp + labs(x = "Age (years)", y = "Mortality rate per 100,000") + easy_text_size(legend_text_size) + theme_bw()
  ggsave(paste0("Obs_Pred_MR_", i, "_", Sys.Date(), ".pdf"), spp, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
}

plong <- data.frame(age = df$agegroup)
i <- 1
while (i <= expo_num) {
  plong[, paste0("ex", i)] <- df[, paste0("pt_ex", i)]
  i <- i + 1
}

for (i in 2:expo_num) {
  plong[, paste0("dex", i)] <- plong[, paste0("ex", 1)] - plong[, paste0("ex", i)]
}

for (i in 1:expo_num) {
  plong[, paste0("ex", i)] <- NULL
}

plong[] <- lapply(plong, function(x) ifelse(is.na(x) | is.nan(x) | is.infinite(x), 0, x)) # x < 0

pdf <- melt(plong, id.vars = "age", variable.name = "Expo", value.name = "Years_lost")

max_LE <- ifelse(max(pdf$Years_lost) < (ceiling(max(pdf$Years_lost))-0.2), ceiling(max(pdf$Years_lost)), ceiling(max(pdf$Years_lost))+1)
low_LE <- ifelse(min(pdf$Years_lost) < 0, ceiling(min(pdf$Years_lost))-1, 0)

if (expo_num == 3) {
  pdf$Exposure <- ifelse(pdf$Expo == "dex2", leplot_three[1], leplot_three[2])
  pdf$Exposure <- factor(pdf$Exposure, levels = c(leplot_three[2], leplot_three[1]), ordered = TRUE)
} else if (expo_num == 4) {
  pdf$Exposure <- ifelse(pdf$Expo == "dex2", leplot_four[1], ifelse(pdf$Expo == "dex3", leplot_four[2], leplot_four[3]))
  pdf$Exposure <- factor(pdf$Exposure, levels = c(leplot_four[3], leplot_four[2], leplot_four[1]), ordered = TRUE)
} else if (expo_num == 5) {
  pdf$Exposure <- ifelse(pdf$Expo == "dex2", leplot_five[1], ifelse(pdf$Expo == "dex3", leplot_five[2], ifelse(pdf$Expo == "dex4", leplot_five[3], leplot_five[4])))
  pdf$Exposure <- factor(pdf$Exposure, levels = c(leplot_five[4], leplot_five[3], leplot_five[2], leplot_five[1]), ordered = TRUE)
} else if (expo_num == 6) {
  pdf$Exposure <- ifelse(pdf$Expo == "dex2", leplot_six[1], ifelse(pdf$Expo == "dex3", leplot_six[2], ifelse(pdf$Expo == "dex4", leplot_six[3], ifelse(pdf$Expo == "dex5", leplot_six[4], leplot_six[5]))))
  pdf$Exposure <- factor(pdf$Exposure, levels = c(leplot_six[5], leplot_six[4], leplot_six[3], leplot_six[2], leplot_six[1]), ordered = TRUE)
} else if (expo_num == 2) {
  pdf$Exposure <- leplot_two
  pdf$Exposure <- factor(pdf$Exposure)
}

qq0 <- ggplot(data=pdf, aes(x = age, y = Years_lost, fill = Exposure, shape = Exposure)) +
  geom_line(size = 1)+
  geom_point(size=pointsize, color = "grey50") +
  scale_fill_jama() +
  scale_shape_manual(values = c(21, 21, 21, 21, 21)) +
  scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
  scale_y_continuous(limits = c(low_LE, max_LE), breaks = seq(low_LE, max_LE, ystepsize), expand = c(0.04, 0.04)) +
  ylab(paste0("Life expectancy ", "lost", " (years)")) + 
  xlab("Age (years)") +
  theme_classic() + easy_add_legend_title(exposure_name) + easy_text_size(legend_text_size)
qq1 <- qq0 + theme(legend.background = element_blank(), legend.position = c(legendp_x, legendp_y), legend.key.size = unit(0.6, "cm")) + geom_hline(yintercept=0, color = "#80796BFF", linewidth = 1.5, linetype = "dashed")
ggsave(paste0("LE_", Sys.Date(), ".pdf"), qq1, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")

#Arriaga's decomposition of the life expectancy gap
nr <- nrow(df)
for (i in 1:expo_num) {
  df[, paste0("mx", i)] <- df[, paste0("pt_irx", i)]
  df[, paste0("lx", i)] <- df[, paste0("pt_lx", i)]
  df[, paste0("llx", i)] <- df[, paste0("pt_llx", i)]
  df[, paste0("tx", i)] <- df[, paste0("pt_tx", i)]
}

for (i in 2:expo_num) {
  df[, paste0("dex1", i)] <- df[, "pt_ex1"] - df[, paste0("pt_ex", i)]
  df[, paste0("cont1", i, "age")] <- NA
}

for (j in 2:expo_num) {
  for (i in 1:(nr-1)) {
    df[i, paste0("cont1", j, "age")] <- (df[i, paste0("lx", j)]/100000)*((df$llx1[i]/df$lx1[i])-(df[i, paste0("llx", j)]/df[i, paste0("lx", j)])) + (df$tx1[i+1]/100000)*((df[i, paste0("lx", j)]/df$lx1[i])-(df[i+1, paste0("lx", j)]/df$lx1[i+1]))
}}

for (j in 2:expo_num) {
  df[nr, paste0("cont1", j, "age")] <- ((df[nr, paste0("lx", j)]/100000)*((df$tx1[nr]/df$lx1[nr])-(df[nr, paste0("tx", j)]/df[nr, paste0("lx", j)])))
}

for (j in 2:expo_num) {
  for (i in 1:disease_num) {
    df[paste0("cont1", j, "d", i)] <- NA
    df[paste0("cont1", j, "d", i)] <- df[paste0("cont1", j, "age")]*(((df[paste0("g1d", i)]*df$mx1)-(df[paste0("g2d", i)]*df[paste0("mx", j)]))/(df$mx1 - df[paste0("mx", j)]))
    df[, paste0("cont1", j, "d", i, "percent")] <- df[, paste0("cont1", j, "d", i)]/df[, paste0("cont1", j, "age")]
}}

if (expo_num == 2 & disease_num == 3) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent)
} else if (expo_num == 3 & disease_num == 3) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent)
} else if (expo_num == 3 & disease_num == 2) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent)
} else if (expo_num == 4 & disease_num == 3) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d14_3 = df$cont14d3percent)
} else if (expo_num == 4 & disease_num == 2) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent)
} else if (expo_num == 5 & disease_num == 3) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, dex_15 = df$dex15, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d14_3 = df$cont14d3percent, d15_1 = df$cont15d1percent, d15_2 = df$cont15d2percent, d15_3 = df$cont15d3percent)
} else if (expo_num == 5 & disease_num == 2) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, dex_15 = df$dex15, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d15_1 = df$cont15d1percent, d15_2 = df$cont15d2percent)
} else if (expo_num == 3 & disease_num == 4) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d12_4 = df$cont12d4percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d13_4 = df$cont13d4percent)
} else if (expo_num == 4 & disease_num == 4) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d12_4 = df$cont12d4percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d13_4 = df$cont13d4percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d14_3 = df$cont14d3percent, d14_4 = df$cont14d4percent)
} else if (expo_num == 5 & disease_num == 4) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, dex_15 = df$dex15, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d12_4 = df$cont12d4percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d13_4 = df$cont13d4percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d14_3 = df$cont14d3percent, d14_4 = df$cont14d4percent, d15_1 = df$cont15d1percent, d15_2 = df$cont15d2percent, d15_3 = df$cont15d3percent, d15_4 = df$cont15d4percent)
} else if (expo_num == 6 & disease_num == 3) {
  areadf <- data.frame(age = df$agegroup, dex_12 = df$dex12, dex_13 = df$dex13, dex_14 = df$dex14, dex_15 = df$dex15, dex_16 = df$dex16, d12_1 = df$cont12d1percent, d12_2 = df$cont12d2percent, d12_3 = df$cont12d3percent, d13_1 = df$cont13d1percent, d13_2 = df$cont13d2percent, d13_3 = df$cont13d3percent, d14_1 = df$cont14d1percent, d14_2 = df$cont14d2percent, d14_3 = df$cont14d3percent, d15_1 = df$cont15d1percent, d15_2 = df$cont15d2percent, d15_3 = df$cont15d3percent, d16_1 = df$cont16d1percent, d16_2 = df$cont16d2percent, d16_3 = df$cont16d3percent)
}

for (j in 2:expo_num) {
  for (i in 1:disease_num) {
    areadf[paste0("cd1",j,"_",i)] <- areadf[paste0("dex_1", j)]*areadf[paste0("d1",j,"_",i)]
}}

areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))

if (expo_num == 2 & disease_num == 3) {
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }
  
  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
  
  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, dex_12))
  write.csv(df12, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, dex_12))
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_three[1], ifelse(df12$Causes=="ind12_2", label_three[2], label_three[3]))
  
  df12$Death_causes <- factor(df12$Death_causes, levels = label_three, ordered = T)

  listdf <- list(df12)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)

} else if (expo_num == 3 & disease_num == 3) {
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }
  
  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
  
  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, dex_12))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, dex_13))
  write.csv(df13, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, dex_13))
  
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_three[1], ifelse(df12$Causes=="ind12_2", label_three[2], label_three[3]))
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_three[1], ifelse(df13$Causes=="ind13_2", label_three[2], label_three[3]))

  df12$Death_causes <- factor(df12$Death_causes, levels = label_three, ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = label_three, ordered = T)
  
  listdf <- list(df12, df13)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 4 & disease_num == 3) {
  
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[, paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[, paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[, paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }

  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))

  df12 <- subset(areadf, select = c("age", "nd12_1", "nd12_2", "nd12_3", "dex_12"))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, dex_13))
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, dex_13))
  df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, nd14_3, dex_14))
  write.csv(df14, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14$ind14_3 <- df14$dex_14*(df14$nd14_3/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14 <- subset(df14, select = -c(nd14_1, nd14_2, nd14_3, dex_14))
  
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_three[1], ifelse(df12$Causes=="ind12_2", label_three[2], label_three[3]))
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_three[1], ifelse(df13$Causes=="ind13_2", label_three[2], label_three[3]))
  df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_three[1], ifelse(df14$Causes=="ind14_2", label_three[2], label_three[3]))
  
  df12$Death_causes <- factor(df12$Death_causes, levels = label_three, ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = label_three, ordered = T)
  df14$Death_causes <- factor(df14$Death_causes, levels = label_three, ordered = T)
  
  listdf <- list(df12, df13, df14)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num==5 & disease_num==3) {

  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess15 <- loess(as.formula(paste0("cd15_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd15_", i)] <- predict(loess15, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }
  
  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))

  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, dex_12))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, dex_13))
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, dex_13))
  df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, nd14_3, dex_14))
  df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14$ind14_3 <- df14$dex_14*(df14$nd14_3/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
  df14 <- subset(df14, select = -c(nd14_1, nd14_2, nd14_3, dex_14))
  df15 <- subset(areadf, select = c(age, nd15_1, nd15_2, nd15_3, dex_15))
  write.csv(df15, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df15$ind15_1 <- df15$dex_15*(df15$nd15_1/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
  df15$ind15_2 <- df15$dex_15*(df15$nd15_2/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
  df15$ind15_3 <- df15$dex_15*(df15$nd15_3/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
  df15 <- subset(df15, select = -c(nd15_1, nd15_2, nd15_3, dex_15))
  
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
  df15 <- melt(df15, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_three[1], ifelse(df12$Causes=="ind12_2", label_three[2], label_three[3]))
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_three[1], ifelse(df13$Causes=="ind13_2", label_three[2], label_three[3]))
  df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_three[1], ifelse(df14$Causes=="ind14_2", label_three[2], label_three[3]))
  df15$Death_causes <- ifelse(df15$Causes=="ind15_1", label_three[1], ifelse(df15$Causes=="ind15_2", label_three[2], label_three[3])) 
  
  df12$Death_causes <- factor(df12$Death_causes, levels = label_three, ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = label_three, ordered = T)
  df14$Death_causes <- factor(df14$Death_causes, levels = label_three, ordered = T)
  df15$Death_causes <- factor(df15$Death_causes, levels = label_three, ordered = T)

  listdf <- list(df12, df13, df14, df15)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 3 & disease_num == 2) {
  
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }
  
  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
  
  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, dex_12))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, dex_13))
  write.csv(df13, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, dex_13))
  
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_two[1], label_two[2])
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_two[1], label_two[2])

  df12$Death_causes <- factor(df12$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  
  listdf <- list(df12, df13)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 4 & disease_num == 2) {
  
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }
  
  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
  
  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, dex_12))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, dex_13))
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, dex_13))
  df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, dex_14))
  write.csv(df14, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2))
  df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2))
  df14 <- subset(df14, select = -c(nd14_1, nd14_2, dex_14))
  
  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_two[1], label_two[2])
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_two[1], label_two[2])
  df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_two[1], label_two[2])
  
  df12$Death_causes <- factor(df12$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df14$Death_causes <- factor(df14$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)

  listdf <- list(df12, df13, df14)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 5 & disease_num == 2) {
  
  i <- 1
  while (i <= disease_num) {
    loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    loess15 <- loess(as.formula(paste0("cd15_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
    areadf[,paste0("nd15_", i)] <- predict(loess15, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
    i <- i + 1
  }

  areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
  
  df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, dex_12))
  df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2))
  df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2))
  df12 <- subset(df12, select = -c(nd12_1, nd12_2, dex_12))
  df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, dex_13))
  df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2))
  df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2))
  df13 <- subset(df13, select = -c(nd13_1, nd13_2, dex_13))
  df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, dex_14))
  df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2))
  df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2))
  df14 <- subset(df14, select = -c(nd14_1, nd14_2, dex_14))
  df15 <- subset(areadf, select = c(age, nd15_1, nd15_2, dex_15))
  write.csv(df15, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
  df15$ind15_1 <- df15$dex_15*(df15$nd15_1/(df15$nd15_1 + df15$nd15_2))
  df15$ind15_2 <- df15$dex_15*(df15$nd15_2/(df15$nd15_1 + df15$nd15_2))
  df15 <- subset(df15, select = -c(nd15_1, nd15_2, dex_15))

  df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
  df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
  df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
  df15 <- melt(df15, id.vars = "age", variable.name = "Causes", value.name = "value")
  
  df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_two[1], label_two[2])
  df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_two[1], label_two[2])
  df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_two[1], label_two[2])
  df15$Death_causes <- ifelse(df15$Causes=="ind15_1", label_two[1], label_two[2])
  
  df12$Death_causes <- factor(df12$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df13$Death_causes <- factor(df13$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df14$Death_causes <- factor(df14$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  df15$Death_causes <- factor(df15$Death_causes, levels = c(label_two[1], label_two[2]), ordered = T)
  
  listdf <- list(df12, df13, df14, df15)
  for (j in 2:expo_num) {
    qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
    ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
  }
  qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
    geom_area(position = "stack", alpha = 0.8) +
    xlab("Age (years)") +
    ylab(paste0("Life expectancy ", "lost", " (years)")) +
    scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
    scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
    theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 3 & disease_num == 4) {
  
    i <- 1
    while (i <= disease_num) {
      loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      i <- i + 1
    }
    
    areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x)) 
    
    df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_4 <- df12$dex_12*(df12$nd12_4/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, nd13_4, dex_13))
    write.csv(df13, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
    df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_4 <- df13$dex_13*(df13$nd13_4/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, nd13_4, dex_13))

    df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
    df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
    
    df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_four[1], ifelse(df12$Causes=="ind12_2", label_four[2], ifelse(df12$Causes=="ind12_3", label_four[3], label_four[4])))
    df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_four[1], ifelse(df13$Causes=="ind13_2", label_four[2], ifelse(df13$Causes=="ind13_3", label_four[3], label_four[4])))
    
    df12$Death_causes <- factor(df12$Death_causes, levels = label_four, ordered = T)
    df13$Death_causes <- factor(df13$Death_causes, levels = label_four, ordered = T)
    
    listdf <- list(df12, df13)
    for (j in 2:expo_num) {
      qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
        geom_area(position = "stack", alpha = 0.8) +
        xlab("Age (years)") +
        ylab(paste0("Life expectancy ", "lost", " (years)")) +
        scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
        scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
        theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
      ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
    }
    qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 4 & disease_num == 4) {
    
    i <- 1
    while (i <= disease_num) {
      loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      i <- i + 1
    }
    
    areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))

    df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_4 <- df12$dex_12*(df12$nd12_4/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, nd13_4, dex_13))
    df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_4 <- df13$dex_13*(df13$nd13_4/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, nd13_4, dex_13))
    df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, nd14_3, nd14_4, dex_14))
    write.csv(df14, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
    df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_3 <- df14$dex_14*(df14$nd14_3/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_4 <- df14$dex_14*(df14$nd14_4/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14 <- subset(df14, select = -c(nd14_1, nd14_2, nd14_3, nd14_4, dex_14))
    
    df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
    df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
    df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
    
    df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_four[1], ifelse(df12$Causes=="ind12_2", label_four[2], ifelse(df12$Causes=="ind12_3", label_four[3], label_four[4])))
    df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_four[1], ifelse(df13$Causes=="ind13_2", label_four[2], ifelse(df13$Causes=="ind13_3", label_four[3], label_four[4])))
    df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_four[1], ifelse(df14$Causes=="ind14_2", label_four[2], ifelse(df14$Causes=="ind14_3", label_four[3], label_four[4])))
    
    df12$Death_causes <- factor(df12$Death_causes, levels = label_four, ordered = T)
    df13$Death_causes <- factor(df13$Death_causes, levels = label_four, ordered = T)
    df14$Death_causes <- factor(df14$Death_causes, levels = label_four, ordered = T)
    
    listdf <- list(df12, df13, df14)
    for (j in 2:expo_num) {
      qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
        geom_area(position = "stack", alpha = 0.8) +
        xlab("Age (years)") +
        ylab(paste0("Life expectancy ", "lost", " (years)")) +
        scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
        scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
        theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
      ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
    }
    qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 5 & disease_num == 4) {
    
    i <- 1
    while (i <= disease_num) {
      loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess15 <- loess(as.formula(paste0("cd15_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd15_", i)] <- predict(loess15, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      i <- i + 1
    }
    
    areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))

    df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_3 <- df12$dex_12*(df12$nd12_3/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12$ind12_4 <- df12$dex_12*(df12$nd12_4/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3 + df12$nd12_4))
    df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, nd12_4, dex_12))
    df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, nd13_4, dex_13))
    df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13$ind13_4 <- df13$dex_13*(df13$nd13_4/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3 + df13$nd13_4))
    df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, nd13_4, dex_13))
    df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, nd14_3, nd14_4, dex_14))
    df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_3 <- df14$dex_14*(df14$nd14_3/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14$ind14_4 <- df14$dex_14*(df14$nd14_4/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3 + df14$nd14_4))
    df14 <- subset(df14, select = -c(nd14_1, nd14_2, nd14_3, nd14_4, dex_14))
    df15 <- subset(areadf, select = c(age, nd15_1, nd15_2, nd15_3, nd15_4, dex_15))
    write.csv(df15, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
    df15$ind15_1 <- df15$dex_15*(df15$nd15_1/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3 + df15$nd15_4))
    df15$ind15_2 <- df15$dex_15*(df15$nd15_2/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3 + df15$nd15_4))
    df15$ind15_3 <- df15$dex_15*(df15$nd15_3/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3 + df15$nd15_4))
    df15$ind15_4 <- df15$dex_15*(df15$nd15_4/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3 + df15$nd15_4))
    df15 <- subset(df15, select = -c(nd15_1, nd15_2, nd15_3, nd15_4, dex_15))

    df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
    df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
    df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
    df15 <- melt(df15, id.vars = "age", variable.name = "Causes", value.name = "value")
    
    df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_four[1], ifelse(df12$Causes=="ind12_2", label_four[2], iflese(df12$Causes=="ind12_3", label_four[3], label_four[4])))
    df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_four[1], ifelse(df13$Causes=="ind13_2", label_four[2], ifelse(df13$Causes=="ind13_3", label_four[3], label_four[4])))
    df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_four[1], ifelse(df14$Causes=="ind14_2", label_four[2], ifelse(df14$Causes=="ind14_3", label_four[3], label_four[4])))
    df15$Death_causes <- ifelse(df15$Causes=="ind15_1", label_four[1], ifelse(df15$Causes=="ind15_2", label_four[2], ifelse(df15$Causes=="ind15_3", label_four[3], label_four[4])))
    
    df12$Death_causes <- factor(df12$Death_causes, levels = label_four, ordered = T)
    df13$Death_causes <- factor(df13$Death_causes, levels = label_four, ordered = T)
    df14$Death_causes <- factor(df14$Death_causes, levels = label_four, ordered = T)
    df15$Death_causes <- factor(df15$Death_causes, levels = label_four, ordered = T)
    
    listdf <- list(df12, df13, df14, df15)
    for (j in 2:expo_num) {
      qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
        geom_area(position = "stack", alpha = 0.8) +
        xlab("Age (years)") +
        ylab(paste0("Life expectancy ", "lost", " (years)")) +
        scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
        scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
        theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
      ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
    }
    qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  } else if (expo_num == 6 & disease_num == 3) {
    
    i <- 1
    while (i <= disease_num) {
      loess12 <- loess(as.formula(paste0("cd12_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd12_", i)] <- predict(loess12, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess13 <- loess(as.formula(paste0("cd13_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd13_", i)] <- predict(loess13, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess14 <- loess(as.formula(paste0("cd14_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd14_", i)] <- predict(loess14, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess15 <- loess(as.formula(paste0("cd15_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd15_", i)] <- predict(loess15, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      loess16 <- loess(as.formula(paste0("cd16_", i, " ~ age + age^2")), areadf, span = 3, degree = 2, family = c("gaussian"))
      areadf[,paste0("nd16_", i)] <- predict(loess16, newdata = data.frame(age = seq(min(df$agegroup), max(df$agegroup), 1)))
      i <- i + 1
    }
    
    areadf[] <- lapply(areadf, function(x) ifelse(is.na(x) | x<0 | is.infinite(x) | is.nan(x), 0, x))
    
    df12 <- subset(areadf, select = c(age, nd12_1, nd12_2, nd12_3, dex_12))
    df12$ind12_1 <- df12$dex_12*(df12$nd12_1/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
    df12$ind12_2 <- df12$dex_12*(df12$nd12_2/(df12$nd12_1 + df12$nd12_2 + df12$nd12_3))
    df12 <- subset(df12, select = -c(nd12_1, nd12_2, nd12_3, dex_12))
    df13 <- subset(areadf, select = c(age, nd13_1, nd13_2, nd13_3, dex_13))
    df13$ind13_1 <- df13$dex_13*(df13$nd13_1/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
    df13$ind13_2 <- df13$dex_13*(df13$nd13_2/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
    df13$ind13_3 <- df13$dex_13*(df13$nd13_3/(df13$nd13_1 + df13$nd13_2 + df13$nd13_3))
    df13 <- subset(df13, select = -c(nd13_1, nd13_2, nd13_3, dex_13))
    df14 <- subset(areadf, select = c(age, nd14_1, nd14_2, nd14_3, dex_14))
    df14$ind14_1 <- df14$dex_14*(df14$nd14_1/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
    df14$ind14_2 <- df14$dex_14*(df14$nd14_2/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
    df14$ind14_3 <- df14$dex_14*(df14$nd14_3/(df14$nd14_1 + df14$nd14_2 + df14$nd14_3))
    df14 <- subset(df14, select = -c(nd14_1, nd14_2, nd14_3, dex_14))
    df15 <- subset(areadf, select = c(age, nd15_1, nd15_2, nd15_3, dex_15))
    df15$ind15_1 <- df15$dex_15*(df15$nd15_1/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
    df15$ind15_2 <- df15$dex_15*(df15$nd15_2/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
    df15$ind15_3 <- df15$dex_15*(df15$nd15_3/(df15$nd15_1 + df15$nd15_2 + df15$nd15_3))
    df15 <- subset(df15, select = -c(nd15_1, nd15_2, nd15_3, dex_15))
    df16 <- subset(areadf, select = c(age, nd16_1, nd16_2, nd16_3, dex_16))
    write.csv(df16, paste0("Decomposition_", Sys.Date(), ".csv"), row.names = FALSE)
    df16$ind16_1 <- df16$dex_16*(df16$nd16_1/(df16$nd16_1 + df16$nd16_2 + df16$nd16_3))
    df16$ind16_2 <- df16$dex_16*(df16$nd16_2/(df16$nd16_1 + df16$nd16_2 + df16$nd16_3))
    df16$ind16_3 <- df16$dex_16*(df16$nd16_3/(df16$nd16_1 + df16$nd16_2 + df16$nd16_3))
    df16 <- subset(df16, select = -c(nd16_1, nd16_2, nd16_3, dex_16))
    
    df12 <- melt(df12, id.vars = "age", variable.name = "Causes", value.name = "value")
    df13 <- melt(df13, id.vars = "age", variable.name = "Causes", value.name = "value")
    df14 <- melt(df14, id.vars = "age", variable.name = "Causes", value.name = "value")
    df15 <- melt(df15, id.vars = "age", variable.name = "Causes", value.name = "value")
    df16 <- melt(df16, id.vars = "age", variable.name = "Causes", value.name = "value")
    
    df12$Death_causes <- ifelse(df12$Causes=="ind12_1", label_three[1], ifelse(df12$Causes=="ind12_2", label_three[2], label_three[3]))
    df13$Death_causes <- ifelse(df13$Causes=="ind13_1", label_three[1], ifelse(df13$Causes=="ind13_2", label_three[2], label_three[3]))
    df14$Death_causes <- ifelse(df14$Causes=="ind14_1", label_three[1], ifelse(df14$Causes=="ind14_2", label_three[2], label_three[3]))
    df15$Death_causes <- ifelse(df15$Causes=="ind15_1", label_three[1], ifelse(df15$Causes=="ind15_2", label_three[2], label_three[3])) 
    df16$Death_causes <- ifelse(df16$Causes=="ind16_1", label_three[1], ifelse(df16$Causes=="ind16_2", label_three[2], label_three[3])) 
    
    df12$Death_causes <- factor(df12$Death_causes, levels = label_three, ordered = T)
    df13$Death_causes <- factor(df13$Death_causes, levels = label_three, ordered = T)
    df14$Death_causes <- factor(df14$Death_causes, levels = label_three, ordered = T)
    df15$Death_causes <- factor(df15$Death_causes, levels = label_three, ordered = T)
    df16$Death_causes <- factor(df16$Death_causes, levels = label_three, ordered = T)
    
    listdf <- list(df12, df13, df14, df15, df16)
    for (j in 2:expo_num) {
      qq <- ggplot(listdf[[j-1]], aes(x = age, y = value, fill = Death_causes)) +
        geom_area(position = "stack", alpha = 0.8) +
        xlab("Age (years)") +
        ylab(paste0("Life expectancy ", "lost", " (years)")) +
        scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
        scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
        theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_x, delegendp_y)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
      ggsave(paste0("LE_", j, "_", Sys.Date(), ".pdf"), qq, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")
    }
    qqmax <- ggplot(listdf[[expo_num-1]], aes(x = age, y = value, fill = Death_causes)) +
      geom_area(position = "stack", alpha = 0.8) +
      xlab("Age (years)") +
      ylab(paste0("Life expectancy ", "lost", " (years)")) +
      scale_x_continuous(limits = c(min(df$agegroup), upper_age), breaks = seq(min(df$agegroup), upper_age, 5), expand = c(expand_axis, expand_axis)) +
      scale_y_continuous(limits = c(0, max_LE), breaks = seq(0, max_LE, ystepsize), expand = c(expand_axis, expand_axis)) +
      theme_classic() + scale_fill_jama() + theme(legend.position = c(delegendp_xm, delegendp_ym)) + easy_add_legend_title("Death Causes") + easy_text_size(legend_text_size)
  }

selected_rows <- simdf$agegroup == le_age_at
selected_data <- simdf[selected_rows, ]
selected_data <- subset(selected_data, select = -agegroup)
mdf <- as.matrix(selected_data)
data <- matrix(mdf, ncol=3, byrow = TRUE)
data <- as.data.frame(data)

if (expo_num == 2) {
  data$category <- expname_two
  data$category <- factor(data$category, levels = expname_two, ordered = TRUE)
  names(data) <- c("elvalue", "low", "high", "category")
  data$diff <- 0
  data$diff[2] <- data$elvalue[1] - data$elvalue[2]
  data$difflow <- 0
  data$diffhigh <- 0
  data$diffhigh[2] <- data$high[1] - data$low[2]
  data$difflow[2] <- data$low[1] - data$high[2]
  write.csv(data, paste0("LE_LYY_95CI", Sys.Date(), ".csv"), row.names = FALSE)
  
  pp <- ggplot(data = data, aes(x = category, y = elvalue)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("grey70", "#DF8F44FF")) +
    scale_y_continuous(limits = c(0, apply(selected_data[1,], 1, max)), breaks = seq(0, apply(selected_data[1,], 1, max), 10), expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  pp1 <- pp + geom_errorbar(aes(ymin = low, ymax = high), width = 0.2, color="#374E55FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("Life expectancy at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  ppdiff <- ggplot(data = data, aes(x = category, y = diff)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("#8491B4FF", "#8491B4FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  ppdiff1 <- ppdiff + geom_errorbar(aes(ymin = difflow, ymax = diffhigh), width = 0.2, color="#8491B4FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("YLL at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
} else if (expo_num == 3) {
  data$category <- expname_three
  data$category <- factor(data$category, levels = expname_three, ordered = TRUE)
  names(data) <- c("elvalue", "low", "high", "category")
  data$diff <- 0
  data$diff[2] <- data$elvalue[1] - data$elvalue[2]
  data$diff[3] <- data$elvalue[1] - data$elvalue[3]
  data$difflow <- 0
  data$diffhigh <- 0
  data$diffhigh[2] <- data$high[1] - data$low[2]
  data$difflow[2] <- data$low[1] - data$high[2]
  data$diffhigh[3] <-  data$high[1] - data$low[3]
  data$difflow[3] <- data$low[1] - data$high[3]
  write.csv(data, paste0("LE_LYY_95CI", Sys.Date(), ".csv"), row.names = FALSE)
  
  data$low <- data$low - 3*abs(data$elvalue - data$low)
  data$high <- data$high + 3*abs(data$elvalue - data$high)
  
  pp <- ggplot(data = data, aes(x = category, y = elvalue)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("grey70", "#DF8F44FF", "#374E55FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  pp1 <- pp + geom_errorbar(aes(ymin = low, ymax = high), width = 0.2, color="#374E55FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("LE at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  
  ppdiff <- ggplot(data = data, aes(x = category, y = diff)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("#8491B4FF", "#8491B4FF", "#8491B4FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  ppdiff1 <- ppdiff + geom_errorbar(aes(ymin = difflow, ymax = diffhigh), width = 0.2, color="#8491B4FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("YLL at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  
} else if (expo_num == 4) {
  data$category <- expname_four
  data$category <- factor(data$category, levels = expname_four, ordered = TRUE)
  names(data) <- c("elvalue", "low", "high", "category")
  data$diff <- 0
  data$diff[2] <- data$elvalue[1] - data$elvalue[2]
  data$diff[3] <- data$elvalue[1] - data$elvalue[3]
  data$diff[4] <- data$elvalue[1] - data$elvalue[4]
  data$difflow <- 0
  data$diffhigh <- 0
  data$diffhigh[2] <- data$high[1] - data$low[2]
  data$difflow[2] <- data$low[1] - data$high[2]
  data$diffhigh[3] <-  data$high[1] - data$low[3]
  data$difflow[3] <- data$low[1] - data$high[3]
  data$diffhigh[4] <-  data$high[1] - data$low[4]
  data$difflow[4] <- data$low[1] - data$high[4]
  write.csv(data, paste0("LE_LYY_95CI", Sys.Date(), ".csv"), row.names = FALSE)

  pp <- ggplot(data = data, aes(x = category, y = elvalue)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("grey70","#00A1D5FF", "#DF8F44FF", "#374E55FF")) +
    scale_y_continuous(limits = c(0, apply(selected_data[1,], 1, max)), breaks = seq(0, apply(selected_data[1,], 1, max), 10), expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  pp1 <- pp + geom_errorbar(aes(ymin = low, ymax = high), width = 0.2, color="#374E55FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("Life expectancy at age ", le_age_at," years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  ppdiff <- ggplot(data = data, aes(x = category, y = diff)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  ppdiff1 <- ppdiff + geom_errorbar(aes(ymin = difflow, ymax = diffhigh), width = 0.2, color="#8491B4FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("YLL at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
} else if (expo_num == 5) {
  data$category <- expname_five
  data$category <- factor(data$category, levels = expname_five, ordered = TRUE)
  names(data) <- c("elvalue", "low", "high", "category")
  data$diff <- 0
  data$diff[2] <- data$elvalue[1] - data$elvalue[2]
  data$diff[3] <- data$elvalue[1] - data$elvalue[3]
  data$diff[4] <- data$elvalue[1] - data$elvalue[4]
  data$diff[5] <- data$elvalue[1] - data$elvalue[5]
  data$difflow <- 0
  data$diffhigh <- 0
  data$diffhigh[2] <- data$high[1] - data$low[2]
  data$difflow[2] <- data$low[1] - data$high[2]
  data$diffhigh[3] <-  data$high[1] - data$low[3]
  data$difflow[3] <- data$low[1] - data$high[3]
  data$diffhigh[4] <-  data$high[1] - data$low[4]
  data$difflow[4] <- data$low[1] - data$high[4]
  data$diffhigh[5] <-  data$high[1] - data$low[5]
  data$difflow[5] <- data$low[1] - data$high[5]
  write.csv(data, paste0("LE_LYY_95CI", Sys.Date(), ".csv"), row.names = FALSE)
  
  pp <- ggplot(data = data, aes(x = category, y = elvalue)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("grey70", "#B24745FF", "#00A1D5FF", "#DF8F44FF", "#374E55FF")) +
    scale_y_continuous(limits = c(0, apply(selected_data[1,], 1, max)), breaks = seq(0, apply(selected_data[1,], 1, max), 10), expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  pp1 <- pp + geom_errorbar(aes(ymin = low, ymax = high), width = 0.2, color="#374E55FF", linewidth = 0.7, alpha = 0.9) + labs(x = "Death Causes", y = paste0("Life expectancy at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  
  ppdiff <- ggplot(data = data, aes(x = category, y = diff)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  ppdiff1 <- ppdiff + geom_errorbar(aes(ymin = difflow, ymax = diffhigh), width = 0.2, color="#8491B4FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("YLL at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  
} else if (expo_num == 6) {
  data$category <- expname_six
  data$category <- factor(data$category, levels = expname_six, ordered = TRUE)
  names(data) <- c("elvalue", "low", "high", "category")
  data$diff <- 0
  data$diff[2] <- data$elvalue[1] - data$elvalue[2]
  data$diff[3] <- data$elvalue[1] - data$elvalue[3]
  data$diff[4] <- data$elvalue[1] - data$elvalue[4]
  data$diff[5] <- data$elvalue[1] - data$elvalue[5]
  data$diff[6] <- data$elvalue[1] - data$elvalue[6]
  data$difflow <- 0
  data$diffhigh <- 0
  data$diffhigh[2] <- data$high[1] - data$low[2]
  data$difflow[2] <- data$low[1] - data$high[2]
  data$diffhigh[3] <-  data$high[1] - data$low[3]
  data$difflow[3] <- data$low[1] - data$high[3]
  data$diffhigh[4] <-  data$high[1] - data$low[4]
  data$difflow[4] <- data$low[1] - data$high[4]
  data$diffhigh[5] <-  data$high[1] - data$low[5]
  data$difflow[5] <- data$low[1] - data$high[5]
  data$diffhigh[6] <-  data$high[1] - data$low[6]
  data$difflow[6] <- data$low[1] - data$high[6]
  write.csv(data, paste0("LE_LYY_95CI", Sys.Date(), ".csv"), row.names = FALSE)
  
  pp <- ggplot(data = data, aes(x = category, y = elvalue)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("grey70", "#79AF97FF", "#B24745FF", "#00A1D5FF", "#DF8F44FF", "#374E55FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  pp1 <- pp + geom_errorbar(aes(ymin = low, ymax = high), width = 0.2, color="#374E55FF", linewidth = 0.7, alpha = 0.9) + labs(x = "Death Causes", y = paste0("Life expectancy at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
  
  ppdiff <- ggplot(data = data, aes(x = category, y = diff)) +
    geom_bar(stat = "identity", width = 0.7, linewidth = 0.25, alpha = 0.7, fill = c("#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF", "#8491B4FF")) +
    scale_y_continuous(expand = c(expand_axis, expand_axis)) +
    theme(
      axis.title = element_text(face = "plain", color = "black"),
      axis.text = element_text(face = "plain", color = "black")
    ) +
    theme_classic()
  
  ppdiff1 <- ppdiff + geom_errorbar(aes(ymin = difflow, ymax = diffhigh), width = 0.2, color="#8491B4FF", linewidth = 0.7, alpha=0.9) + labs(x = "Death Causes", y = paste0("YLL at age ", le_age_at, " years")) + theme(axis.text.x = element_text(size=11), axis.text.y = element_text(size=11)) + theme(legend.position = 'none') + coord_flip() + easy_text_size(legend_text_size)
}

gg1 <- ggplotGrob(pp1 + theme(plot.background = element_rect(color = "white")))
qqpp1 <- qq1 + annotation_custom(grob = gg1, xmin = upper_age*bar_xminr, xmax = upper_age*bar_xmaxr, ymin = max_LE*bar_yminr, ymax = max_LE*bar_ymaxr)
ggsave(paste0("LE_ABSOLUTE_", Sys.Date(), ".pdf"), qqpp1, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")

gg2 <- ggplotGrob(ppdiff1 + theme(plot.background = element_rect(color = "white")))
qqpp2 <- qq1 + annotation_custom(grob = gg2, xmin = upper_age*bar_xminr, xmax = upper_age*bar_xmaxr, ymin = max_LE*bar_yminr, ymax = max_LE*bar_ymaxr)
ggsave(paste0("LYY_RELATIVE_", Sys.Date(), ".pdf"), qqpp2, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")

gg3 <- ggplotGrob(ppdiff1 + theme(plot.background = element_rect(color = "white")))
qqpp3 <- qqmax + annotation_custom(grob = gg3, xmin = upper_age*bar_xminr, xmax = upper_age*bar_xmaxr, ymin = max_LE*bar_yminr, ymax = max_LE*bar_ymaxr)
ggsave(paste0("MAX_LYY_DEATH_", Sys.Date(), ".pdf"), qqpp3, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")

gg4 <- ggplotGrob(pp1 + theme(plot.background = element_rect(color = "white")))
qqpp4 <- qqmax + annotation_custom(grob = gg4, xmin = upper_age*bar_xminr, xmax = upper_age*bar_xmaxr, ymin = max_LE*bar_yminr, ymax = max_LE*bar_ymaxr)
ggsave(paste0("MAX_LE_DEATH_", Sys.Date(), ".pdf"), qqpp4, dpi = dpi_value, width = plot_width, height = plot_height, units = "cm")