## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(warning = FALSE, message = FALSE)

## -----------------------------------------------------------------------------
# install.packages("maicplus")
library(maicplus)

## -----------------------------------------------------------------------------
library(dplyr)

## -----------------------------------------------------------------------------
data(centered_ipd_sat)
data(adtte_sat)
data(pseudo_ipd_sat)

centered_colnames <- c("AGE", "AGE_SQUARED", "SEX_MALE", "ECOG0", "SMOKE", "N_PR_THER_MEDIAN")
centered_colnames <- paste0(centered_colnames, "_CENTERED")

weighted_data <- estimate_weights(
  data = centered_ipd_sat,
  centered_colnames = centered_colnames
)

result <- maic_unanchored(
  weights_object = weighted_data,
  ipd = adtte_sat,
  pseudo_ipd = pseudo_ipd_sat,
  trt_ipd = "A",
  trt_agd = "B",
  normalize_weight = FALSE,
  endpoint_name = "Overall Survival",
  endpoint_type = "tte",
  eff_measure = "HR",
  time_scale = "month",
  km_conf_type = "log-log"
)

## -----------------------------------------------------------------------------
result$descriptive$summary

# Not shown due to long output
# result$descriptive$survfit_before
# result$descriptive$survfit_after

## -----------------------------------------------------------------------------
result$inferential$summary

## -----------------------------------------------------------------------------
result$inferential$fit$km_before
result$inferential$fit$model_before
result$inferential$fit$res_AB_unadj

## -----------------------------------------------------------------------------
result$inferential$fit$km_after
result$inferential$fit$model_after
result$inferential$fit$res_AB

## ----eval = FALSE, echo = FALSE-----------------------------------------------
# # heuristic check
# # merge in adtte with ipd_matched
# ipd_matched <- weighted_data$data
# combined_data_tte <- ipd_matched %>%
#   left_join(adtte_sat, by = c("USUBJID", "ARM"))
# pseudo_ipd <- pseudo_ipd_sat
# pseudo_ipd$weights <- 1
# 
# combined_data_tte <- rbind(
#   combined_data_tte[, colnames(pseudo_ipd)],
#   pseudo_ipd
# )
# 
# # Change the reference treatment to B
# combined_data_tte$ARM <- stats::relevel(as.factor(combined_data_tte$ARM), ref = "B")
# 
# # Fit a Cox model with/without weights to estimate the HR
# unweighted_cox <- coxph(Surv(TIME, EVENT == 1) ~ ARM, data = combined_data_tte)
# weighted_cox <- coxph(Surv(TIME, EVENT == 1) ~ ARM,
#   data = combined_data_tte, weights = combined_data_tte$weights, robust = TRUE
# )
# 
# unweighted_cox
# weighted_cox
# 
# kmobj <- survfit(Surv(TIME, EVENT) ~ ARM, combined_data_tte, conf.type = "log-log")
# kmobj_adj <- survfit(Surv(TIME, EVENT) ~ ARM,
#   combined_data_tte,
#   weights = combined_data_tte$weights, conf.type = "log-log"
# )
# 
# # Derive median survival time
# medSurv <- medSurv_makeup(kmobj, legend = "before matching", time_scale = "day")
# medSurv_adj <- medSurv_makeup(kmobj_adj, legend = "after matching", time_scale = "day")
# medSurv_out <- rbind(medSurv, medSurv_adj)
# medSurv_out

## -----------------------------------------------------------------------------
weighted_data2 <- estimate_weights(
  data = centered_ipd_sat,
  centered_colnames = centered_colnames,
  n_boot_iteration = 100,
  set_seed_boot = 1234
)

result_boot <- maic_unanchored(
  weights_object = weighted_data2,
  ipd = adtte_sat,
  pseudo_ipd = pseudo_ipd_sat,
  trt_ipd = "A",
  trt_agd = "B",
  normalize_weight = FALSE,
  endpoint_name = "Overall Survival",
  endpoint_type = "tte",
  eff_measure = "HR",
  boot_ci_type = "perc",
  time_scale = "month",
  km_conf_type = "log-log"
)

result_boot$inferential$fit$boot_res_AB