Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(TrialEmulation)
## -----------------------------------------------------------------------------
trial_pp <- trial_sequence(estimand = "PP") # Per-protocol
trial_itt <- trial_sequence(estimand = "ITT") # Intention-to-treat
## -----------------------------------------------------------------------------
trial_pp_dir <- file.path(tempdir(), "trial_pp")
dir.create(trial_pp_dir)
trial_itt_dir <- file.path(tempdir(), "trial_itt")
dir.create(trial_itt_dir)
## -----------------------------------------------------------------------------
data("data_censored")
trial_pp <- trial_pp |>
set_data(
data = data_censored,
id = "id",
period = "period",
treatment = "treatment",
outcome = "outcome",
eligible = "eligible"
)
# Function style without pipes
trial_itt <- set_data(
trial_itt,
data = data_censored,
id = "id",
period = "period",
treatment = "treatment",
outcome = "outcome",
eligible = "eligible"
)
## -----------------------------------------------------------------------------
trial_itt
## -----------------------------------------------------------------------------
ipw_data(trial_itt)
## -----------------------------------------------------------------------------
trial_pp <- trial_pp |>
set_switch_weight_model(
numerator = ~age,
denominator = ~ age + x1 + x3,
model_fitter = stats_glm_logit(save_path = file.path(trial_pp_dir, "switch_models"))
)
trial_pp@switch_weights
## -----------------------------------------------------------------------------
trial_pp <- trial_pp |>
set_censor_weight_model(
censor_event = "censored",
numerator = ~x2,
denominator = ~ x2 + x1,
pool_models = "none",
model_fitter = stats_glm_logit(save_path = file.path(trial_pp_dir, "switch_models"))
)
trial_pp@censor_weights
## -----------------------------------------------------------------------------
trial_itt <- set_censor_weight_model(
trial_itt,
censor_event = "censored",
numerator = ~x2,
denominator = ~ x2 + x1,
pool_models = "numerator",
model_fitter = stats_glm_logit(save_path = file.path(trial_itt_dir, "switch_models"))
)
trial_itt@censor_weights
## -----------------------------------------------------------------------------
trial_pp <- trial_pp |> calculate_weights()
trial_itt <- calculate_weights(trial_itt)
## -----------------------------------------------------------------------------
show_weight_models(trial_itt)
## -----------------------------------------------------------------------------
trial_pp <- set_outcome_model(trial_pp)
trial_itt <- set_outcome_model(trial_itt, adjustment_terms = ~x2)
## -----------------------------------------------------------------------------
trial_pp <- set_expansion_options(
trial_pp,
output = save_to_datatable(),
chunk_size = 500
)
trial_itt <- set_expansion_options(
trial_itt,
output = save_to_datatable(),
chunk_size = 500
)
## ----eval = FALSE-------------------------------------------------------------
# trial_pp <- trial_pp |>
# set_expansion_options(
# output = save_to_csv(file.path(trial_pp_dir, "trial_csvs")),
# chunk_size = 500
# )
#
# trial_itt <- set_expansion_options(
# trial_itt,
# output = save_to_csv(file.path(trial_itt_dir, "trial_csvs")),
# chunk_size = 500
# )
#
# trial_itt <- set_expansion_options(
# trial_itt,
# output = save_to_duckdb(file.path(trial_itt_dir, "trial_duckdb")),
# chunk_size = 500
# )
#
# # For the purposes of this vignette the previous `save_to_datatable()` output
# # option is used in the following code.
## -----------------------------------------------------------------------------
trial_pp <- expand_trials(trial_pp)
trial_itt <- expand_trials(trial_itt)
## -----------------------------------------------------------------------------
trial_pp@expansion
## -----------------------------------------------------------------------------
trial_itt <- load_expanded_data(trial_itt, seed = 1234, p_control = 0.5)
## -----------------------------------------------------------------------------
x2_sq <- outcome_data(trial_itt)$x2^2
outcome_data(trial_itt)$x2_sq <- x2_sq
head(outcome_data(trial_itt))
## -----------------------------------------------------------------------------
trial_itt <- fit_msm(
trial_itt,
weight_cols = c("weight", "sample_weight"),
modify_weights = function(w) {
q99 <- quantile(w, probs = 0.99)
pmin(w, q99)
}
)
## -----------------------------------------------------------------------------
trial_itt@outcome_model
## -----------------------------------------------------------------------------
trial_itt@outcome_model@fitted@model$model
trial_itt@outcome_model@fitted@model$vcov
## -----------------------------------------------------------------------------
trial_itt
## -----------------------------------------------------------------------------
preds <- predict(
trial_itt,
newdata = outcome_data(trial_itt)[trial_period == 1, ],
predict_times = 0:10,
type = "survival",
)
plot(preds$difference$followup_time, preds$difference$survival_diff,
type = "l", xlab = "Follow up", ylab = "Survival difference"
)
lines(preds$difference$followup_time, preds$difference$`2.5%`, type = "l", col = "red", lty = 2)
lines(preds$difference$followup_time, preds$difference$`97.5%`, type = "l", col = "red", lty = 2)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.