From 51f8a0c0bd1fe9d529334ea3c85deb9870e9c831 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Fri, 19 Apr 2024 14:10:30 -0700 Subject: [PATCH 01/34] General ipsi shift function --- DESCRIPTION | 4 ++-- NAMESPACE | 1 + R/shift.R | 42 ++++++++++++++++++++++++++++++++++++++++++ man/ipsi.Rd | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 man/ipsi.Rd diff --git a/DESCRIPTION b/DESCRIPTION index b60d77f8..15558265 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: lmtp Title: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies -Version: 1.3.3 +Version: 1.3.4 Authors@R: c(person(given = "Nicholas", family = "Williams", @@ -24,7 +24,7 @@ License: AGPL-3 Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.1 +RoxygenNote: 7.2.3 Imports: stats, nnls, diff --git a/NAMESPACE b/NAMESPACE index ca2eef58..57cf4378 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -5,6 +5,7 @@ S3method(print,lmtp_contrast) S3method(tidy,lmtp) export(create_node_list) export(event_locf) +export(ipsi) export(lmtp_contrast) export(lmtp_ipw) export(lmtp_sdr) diff --git a/R/shift.R b/R/shift.R index 4a8a693d..56349597 100644 --- a/R/shift.R +++ b/R/shift.R @@ -69,3 +69,45 @@ static_binary_on <- function(data, trt) { static_binary_off <- function(data, trt) { rep(0, length(data[[trt]])) } + +#' IPSI Function Factory +#' +#' A function factory that returns a shift function for increasing or decreasing +#' the probability of exposure when exposure is binary. +#' +#' @param delta \[\code{numeric(1)}\]\cr +#' A risk ratio between 0 and Inf. +#' +#' @seealso [ipsi_down()], [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] +#' @return A shift function. +#' @export +#' +#' @examples +#' \donttest{ +#' data("iptwExWide", package = "twang") +#' a <- paste0("tx", 1:3) +#' baseline <- c("gender", "age") +#' tv <- list(c("use0"), c("use1"), c("use2")) +#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, +#' shift = ipsi(0.5), outcome_type = "continuous", folds = 2) +#' } +ipsi <- function(delta) { + if (delta > 1) { + return(ipsi_up(1 / delta)) + } + ipsi_down(delta) +} + +ipsi_up <- function(delta) { + function(data, trt) { + eps <- runif(nrow(data), 0, 1) + ifelse(eps < delta, data[[trt]], 1) + } +} + +ipsi_down <- function(delta) { + function(data, trt) { + eps <- runif(nrow(data), 0, 1) + ifelse(eps < delta, data[[trt]], 0) + } +} diff --git a/man/ipsi.Rd b/man/ipsi.Rd new file mode 100644 index 00000000..0d1845c3 --- /dev/null +++ b/man/ipsi.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shift.R +\name{ipsi} +\alias{ipsi} +\title{IPSI Function Factory} +\usage{ +ipsi(delta) +} +\arguments{ +\item{delta}{[\code{numeric(1)}]\cr +A risk ratio between 0 and Inf.} +} +\value{ +A shift function. +} +\description{ +A function factory that returns a shift function for increasing or decreasing +the probability of exposure when exposure is binary. +} +\examples{ +\donttest{ +data("iptwExWide", package = "twang") +a <- paste0("tx", 1:3) +baseline <- c("gender", "age") +tv <- list(c("use0"), c("use1"), c("use2")) +lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, + shift = ipsi(0.5), outcome_type = "continuous", folds = 2) +} +} +\seealso{ +\code{\link[=ipsi_down]{ipsi_down()}}, \code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} +} From 3dec8a0f1218ac32fb02030792b869613a28cf67 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 11:59:17 -0700 Subject: [PATCH 02/34] Checks for trt being a character or a list --- R/checks.R | 23 +++++++++++++++++++++++ R/estimators.R | 8 ++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/R/checks.R b/R/checks.R index d684e954..13b6fb9f 100644 --- a/R/checks.R +++ b/R/checks.R @@ -15,6 +15,14 @@ check_lmtp_data <- function(x, trt, outcome, baseline, time_vary, cens, id) { assertLmtpData <- checkmate::makeAssertionFunction(check_lmtp_data) +assert_trt <- function(trt, tau) { + is_list <- is.list(trt) + if (!isTRUE(is_list)) { + return(assertTrtCharacter(trt, tau)) + } + assertTrtList(trt, tau) +} + check_trt_character <- function(trt, tau) { is_character <- checkmate::check_character(trt) if (!isTRUE(is_character)) { @@ -30,6 +38,21 @@ check_trt_character <- function(trt, tau) { assertTrtCharacter <- checkmate::makeAssertionFunction(check_trt_character) +check_trt_list <- function(trt, tau) { + is_list <- checkmate::check_list(trt) + if (!isTRUE(is_list)) { + return(is_list) + } + + if (length(trt) != 1 && length(trt) != tau) { + return(paste0("'trt' should be of length 1 or ", tau)) + } + + TRUE +} + +assertTrtList <- checkmate::makeAssertionFunction(check_trt_list) + check_reserved_names <- function(x) { bad_names <- c("lmtp_id", "tmp_lmtp_stack_indicator", "tmp_lmtp_scaled_outcome") %in% names(x) if (!any(bad_names)) { diff --git a/R/estimators.R b/R/estimators.R index 0651dd40..950e00cb 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -117,7 +117,7 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, tau <- determine_tau(outcome, trt) - assertTrtCharacter(trt, tau) + assert_trt(trt, tau) checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) @@ -308,7 +308,7 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, tau <- determine_tau(outcome, trt) - assertTrtCharacter(trt, tau) + assert_trt(trt, tau) checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) @@ -468,7 +468,7 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens tau <- determine_tau(outcome, trt) - assertTrtCharacter(trt, tau) + assert_trt(trt, tau) checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) @@ -627,7 +627,7 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens tau <- determine_tau(outcome, trt) - assertTrtCharacter(trt, tau) + assert_trt(trt, tau) checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) From 9e84b13470561f751b70b44d0d6cad52ae803c5c Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:01:30 -0700 Subject: [PATCH 03/34] Adding flag to task for if trt is multivariate --- R/lmtp_Task.R | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R index 74795bd7..79b4842c 100644 --- a/R/lmtp_Task.R +++ b/R/lmtp_Task.R @@ -16,7 +16,10 @@ lmtp_Task <- R6::R6Class( bounds = NULL, folds = NULL, weights = NULL, - initialize = function(data, trt, outcome, time_vary, baseline, cens, k, shift, shifted, id, outcome_type = NULL, V = 10, weights = NULL, bounds = NULL, bound = NULL) { + multivariate = NULL, + initialize = function(data, trt, outcome, time_vary, baseline, cens, k, + shift, shifted, id, outcome_type = NULL, V = 10, + weights = NULL, bounds = NULL, bound = NULL) { self$tau <- determine_tau(outcome, trt) self$n <- nrow(data) self$trt <- trt @@ -29,6 +32,7 @@ lmtp_Task <- R6::R6Class( data$lmtp_id <- create_ids(data, id) self$id <- data$lmtp_id self$folds <- setup_cv(data, data$lmtp_id, V) + self$multivariate <- is.list(trt) shifted <- { if (is.null(shifted) && !is.null(shift)) From 6d4e35512bd8327d8960a26bb0b5c6e240267fab Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:05:18 -0700 Subject: [PATCH 04/34] Modifying create_node_list to work with a list --- R/nodelist.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/nodelist.R b/R/nodelist.R index 773f1c5f..ec40d128 100644 --- a/R/nodelist.R +++ b/R/nodelist.R @@ -53,7 +53,7 @@ trt_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { if (length(trt) == tau) { for (i in 1:tau) { if (i > 1) { - out[[i]] <- c(time_vary[[i]], trt[i - 1]) + out[[i]] <- c(time_vary[[i]], trt[[i - 1]]) } else { out[[i]] <- c(time_vary[[i]]) } @@ -62,14 +62,14 @@ trt_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { if (length(trt) != tau) { for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], trt) + out[[i]] <- c(time_vary[[i]], unlist(trt)) } } } else { if (length(trt) == tau) { for (i in 1:tau) { if (i > 1) { - out[[i]] <- c(out[[i]], time_vary[[i]], trt[i - 1]) + out[[i]] <- c(out[[i]], time_vary[[i]], trt[[i - 1]]) } else { out[[i]] <- c(out[[i]], time_vary[[i]]) } @@ -78,7 +78,7 @@ trt_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { if (length(trt) != tau) { for (i in 1:tau) { - out[[i]] <- c(out[[i]], time_vary[[i]], trt) + out[[i]] <- c(out[[i]], time_vary[[i]], unlist(trt)) } } } @@ -101,13 +101,13 @@ outcome_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { if (length(trt) == tau) { for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], trt[i]) + out[[i]] <- c(time_vary[[i]], trt[[i]]) } } if (length(trt) != tau) { for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], trt) + out[[i]] <- c(time_vary[[i]], unlist(trt)) } } From 7c7dd85786b5c5e20c92787d5bbf19f5190e72e2 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:12:14 -0700 Subject: [PATCH 05/34] Modifiying shift_data to detect list vs character --- R/shift.R | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/R/shift.R b/R/shift.R index 56349597..59542632 100644 --- a/R/shift.R +++ b/R/shift.R @@ -2,6 +2,12 @@ shift_data <- function(data, trt, cens, shift) { if (is.null(shift)) { return(shift_cens(data, cens)) } + + is_multivariate <- is.list(trt) + if (isTRUE(is_multivariate)) { + return(shift_trt_list(shift_cens(data, cens), trt, shift)) + } + shift_trt(shift_cens(data, cens), trt, shift) } @@ -13,13 +19,23 @@ shift_cens <- function(data, cens) { as.data.frame(out, check.names = FALSE) } -shift_trt <- function(data, trt, .f) { +shift_trt_character <- function(data, trt, .f) { for (a in trt) { data[[a]] <- .f(data, a) } data } +shift_trt_list <- function(data, trt, .f) { + for (a in trt) { + new <- .f(data, a) + for (col in a) { + data[[col]] <- new[[col]] + } + } + data +} + #' Turn All Treatment Nodes On #' #' A pre-packaged shift function for use with provided estimators when the exposure is binary. From 1aa5c3554883fbcc993468ee99a2cbca6785242a Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:20:01 -0700 Subject: [PATCH 06/34] Check correct data structure with list or character trt argument --- R/checks.R | 6 +++++- R/shift.R | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/R/checks.R b/R/checks.R index 13b6fb9f..be50deaf 100644 --- a/R/checks.R +++ b/R/checks.R @@ -2,7 +2,11 @@ check_lmtp_data <- function(x, trt, outcome, baseline, time_vary, cens, id) { for (t in 1:determine_tau(outcome, trt)) { ci <- censored(x, cens, t)$j di <- at_risk(x, risk_indicators(outcome), t, TRUE) - trt_t <- ifelse(length(trt) == 1, trt, trt[t]) + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } data_t <- x[ci & di, c(trt_t, baseline, unlist(time_vary[t])), drop = FALSE] if (any(is.na(data_t))) { diff --git a/R/shift.R b/R/shift.R index 59542632..b90cda2c 100644 --- a/R/shift.R +++ b/R/shift.R @@ -8,7 +8,7 @@ shift_data <- function(data, trt, cens, shift) { return(shift_trt_list(shift_cens(data, cens), trt, shift)) } - shift_trt(shift_cens(data, cens), trt, shift) + shift_trt_character(shift_cens(data, cens), trt, shift) } shift_cens <- function(data, cens) { From f03f973d6df8c6079863853bca2f47628af72445 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:26:00 -0700 Subject: [PATCH 07/34] Refactor stacking of data for density ratios --- R/density_ratios.R | 8 ++++++-- R/utils.R | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/R/density_ratios.R b/R/density_ratios.R index 2abbfb95..03f53268 100644 --- a/R/density_ratios.R +++ b/R/density_ratios.R @@ -30,7 +30,11 @@ estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learne jrv <- censored(natural$valid, cens, t)$j drv <- at_risk(natural$valid, risk, t) - trt_t <- ifelse(length(trt) > 1, trt[t], trt) + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } frv <- followed_rule(natural$valid[[trt_t]], shifted$valid[[trt_t]], mtp) @@ -68,7 +72,7 @@ stack_data <- function(natural, shifted, trt, cens, tau) { shifted_half <- natural if (length(trt) > 1 || tau == 1) { - shifted_half[[trt[tau]]] <- shifted[[trt[tau]]] + shifted_half[, trt[[tau]]] <- shifted[, trt[[tau]]] } if (!is.null(cens)) { diff --git a/R/utils.R b/R/utils.R index a686f03c..14dca938 100644 --- a/R/utils.R +++ b/R/utils.R @@ -93,6 +93,9 @@ at_risk <- function(data, risk, tau, check = FALSE) { followed_rule <- function(obs_trt, shifted_trt, mtp) { if (mtp) { + if (inherits(obs_trt, "data.frame")) { + return(rep(TRUE, nrow(obs_trt))) + } return(rep(TRUE, length(obs_trt))) } From 7f8fb5a404a9c7ff7a967998bd0733fcecd33564 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:54:48 -0700 Subject: [PATCH 08/34] Testing with multivariate shift --- R/density_ratios.R | 2 +- R/estimators.R | 12 ++++-------- R/gcomp.R | 12 ++++++------ R/sdr.R | 12 ++++++------ R/tmle.R | 23 ++++++++--------------- tests/testthat/test-checks.R | 2 +- tests/testthat/test-survey.R | 2 +- 7 files changed, 27 insertions(+), 38 deletions(-) diff --git a/R/density_ratios.R b/R/density_ratios.R index 03f53268..357a729f 100644 --- a/R/density_ratios.R +++ b/R/density_ratios.R @@ -36,7 +36,7 @@ estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learne trt_t <- trt[[1]] } - frv <- followed_rule(natural$valid[[trt_t]], shifted$valid[[trt_t]], mtp) + frv <- followed_rule(natural$valid[, trt_t], shifted$valid[, trt_t], mtp) vars <- c(node_list[[t]], cens[[t]]) stacked <- stack_data(natural$train, shifted$train, trt, cens, t) diff --git a/R/estimators.R b/R/estimators.R index 950e00cb..21f7793d 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -121,7 +121,7 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) assertOutcomeTypes(data, outcome, match.arg(outcome_type)) assertReservedNames(data) @@ -133,7 +133,6 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) checkmate::assertNumber(.learners_outcome_folds, null.ok = TRUE) checkmate::assertNumber(.learners_trt_folds, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) checkmate::assertNumber(.bound) checkmate::assertNumber(.trim, upper = 1) checkmate::assertLogical(.return_full_fits, len = 1) @@ -312,7 +311,7 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) assertOutcomeTypes(data, outcome, match.arg(outcome_type)) assertReservedNames(data) @@ -324,7 +323,6 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) checkmate::assertNumber(.learners_outcome_folds, null.ok = TRUE) checkmate::assertNumber(.learners_trt_folds, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) checkmate::assertNumber(.bound) checkmate::assertNumber(.trim, upper = 1) checkmate::assertLogical(.return_full_fits, len = 1) @@ -472,7 +470,7 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) assertOutcomeTypes(data, outcome, match.arg(outcome_type)) assertReservedNames(data) @@ -483,7 +481,6 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertNumber(k, lower = 0, upper = Inf) checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) checkmate::assertNumber(.learners_folds, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) checkmate::assertNumber(.bound) checkmate::assertLogical(.return_full_fits, len = 1) @@ -631,7 +628,7 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) assertOutcomeTypes(data, outcome, match.arg(outcome_type)) assertReservedNames(data) @@ -641,7 +638,6 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertNumber(k, lower = 0, upper = Inf) checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) checkmate::assertNumber(.learners_folds, null.ok = TRUE) - checkmate::assertSubset(c(trt, outcome, baseline, unlist(time_vary), cens, id), names(data)) checkmate::assertNumber(.bound) checkmate::assertNumber(.trim, upper = 1) checkmate::assertLogical(.return_full_fits, len = 1) diff --git a/R/gcomp.R b/R/gcomp.R index 5125dbda..8bbb3899 100644 --- a/R/gcomp.R +++ b/R/gcomp.R @@ -5,8 +5,8 @@ cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { out[[fold]] <- future::future({ estimate_sub( get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, Task$trt, drop = F], Task$folds, fold), - outcome, + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, learners, lrnr_folds, pb, full_fits @@ -23,7 +23,7 @@ cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { ) } -estimate_sub <- function(natural, shifted, outcome, node_list, cens, risk, +estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, outcome_type, learners, lrnr_folds, pb, full_fits) { m <- matrix(nrow = nrow(natural$valid), ncol = tau) @@ -61,12 +61,12 @@ estimate_sub <- function(natural, shifted, outcome, node_list, cens, risk, fits[[t]] <- extract_sl_weights(fit) } - trt_var <- names(shifted$train)[t] + trt_var <- trt[[t]] under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[[trt_var]] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[[trt_var]] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] natural$train[jt & rt, pseudo] <- bound(SL_predict(fit, under_shift_train), 1e-05) m[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) diff --git a/R/sdr.R b/R/sdr.R index 05674c89..bfb8be74 100644 --- a/R/sdr.R +++ b/R/sdr.R @@ -4,8 +4,8 @@ cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { out[[fold]] <- future::future({ estimate_sdr( get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, Task$trt, drop = F], Task$folds, fold), - outcome, Task$node_list$outcome, + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, get_folded_data(ratios, Task$folds, fold)$train, learners, lrnr_folds, pb, full_fits @@ -21,7 +21,7 @@ cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { fits = lapply(out, function(x) x[["fits"]])) } -estimate_sdr <- function(natural, shifted, outcome, node_list, cens, risk, tau, +estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { m_natural_train <- m_shifted_train <- @@ -82,12 +82,12 @@ estimate_sdr <- function(natural, shifted, outcome, node_list, cens, risk, tau, } } - trt_var <- names(shifted$train)[t] + trt_var <- trt[[t]] under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[[trt_var]] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[[trt_var]] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) diff --git a/R/tmle.R b/R/tmle.R index 0584830e..e350e799 100644 --- a/R/tmle.R +++ b/R/tmle.R @@ -9,11 +9,10 @@ cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) out[[fold]] <- future::future({ estimate_tmle( get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, Task$trt, drop = F], Task$folds, fold), - outcome, Task$node_list$outcome, Task$cens, Task$risk, + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, get_folded_data(ratios, Task$folds, fold)$train, - Task$weights[Task$folds[[fold]]$training_set], learners, lrnr_folds, pb, full_fits ) }, @@ -29,7 +28,8 @@ cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) ) } -estimate_tmle <- function(natural, shifted, outcome, node_list, cens, risk, tau, outcome_type, ratios, weights, learners, lrnr_folds, pb, full_fits) { +estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, + risk, tau, outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) @@ -66,29 +66,22 @@ estimate_tmle <- function(natural, shifted, outcome, node_list, cens, risk, tau, fits[[t]] <- extract_sl_weights(fit) } - trt_var <- names(shifted$train)[t] + trt_var <- trt[[t]] under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[[trt_var]] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[[trt_var]] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) - wts <- { - if (is.null(weights)) - ratios[i & rt, t] - else - ratios[i & rt, t] * weights[i & rt] - } - fit <- sw( glm( natural$train[i & rt, ][[outcome]] ~ offset(qlogis(m_natural_train[i & rt, t])), - weights = wts, + weights = ratios[i & rt, t], family = "binomial" ) ) diff --git a/tests/testthat/test-checks.R b/tests/testthat/test-checks.R index 31cce903..e8d20622 100644 --- a/tests/testthat/test-checks.R +++ b/tests/testthat/test-checks.R @@ -59,7 +59,7 @@ test_that("Variables dont exist", { expect_error( lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'c(trt, outcome, baseline, unlist(time_vary), cens, id)' failed: Must be a subset of {'L1','A1','C1','L2','A2','C2','Y'}, but has additional elements {'A'}.", + "Assertion on 'c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id)' failed: Must be a subset of {'L1','A1','C1','L2','A2','C2','Y'}, but has additional elements {'A'}.", fixed = TRUE ) }) diff --git a/tests/testthat/test-survey.R b/tests/testthat/test-survey.R index 4cef245d..2cdd6d5c 100644 --- a/tests/testthat/test-survey.R +++ b/tests/testthat/test-survey.R @@ -6,7 +6,7 @@ n <- 1e4 W1 <- rbinom(n, size = 1, prob = 0.5) W2 <- rbinom(n, size = 1, prob = 0.65) A <- rbinom(n, size = 1, prob = plogis(-0.4 + 0.2 * W2 + 0.15 * W1)) -Y.1 <-rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) +Y.1 <- rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) Y.0 <- rbinom(n, size = 1, prob = plogis(-1 + 0 - 0.1 * W1 + 0.3 * W2)) Y <- Y.1 * A + Y.0 * (1 - A) From a05242a74eeda981e16c8c536e2023572d153ded Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 12:55:55 -0700 Subject: [PATCH 09/34] Adding and documenting multivariate example data --- R/data.R | 16 ++++++++++++++++ data/multivariate_data.rda | Bin 0 -> 94038 bytes man/multivariate_data.Rd | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 data/multivariate_data.rda create mode 100644 man/multivariate_data.Rd diff --git a/R/data.R b/R/data.R index af177331..cd7fb70c 100644 --- a/R/data.R +++ b/R/data.R @@ -82,3 +82,19 @@ #' \item{Y2}{Final outcome node.} #' } "sim_timevary_surv" + +#' Simulated Multivariate Exposure Data +#' +#' A dataset with a continuous outcome, three baseline covariates, +#' and two treatment variables. +#' +#' @format A data frame with 2000 rows and 6 variables: +#' \describe{ +#' \item{C1}{Continuous baseline variable.} +#' \item{C2}{Continuous baseline variable.} +#' \item{C3}{Continuous baseline variable.} +#' \item{D1}{Treatment variable one at baseline.} +#' \item{D2}{Treatment variable two at baseline.} +#' \item{Y}{Continuous outcome} +#' } +"multivariate_data" diff --git a/data/multivariate_data.rda b/data/multivariate_data.rda new file mode 100644 index 0000000000000000000000000000000000000000..7bd9a9115a5d9b1f748e59b8f0356bb65cc13f90 GIT binary patch literal 94038 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�d=%W83=ZdGzZYm7U#} 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 DexZe; literal 0 HcmV?d00001 diff --git a/man/multivariate_data.Rd b/man/multivariate_data.Rd new file mode 100644 index 00000000..41d7cd36 --- /dev/null +++ b/man/multivariate_data.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{multivariate_data} +\alias{multivariate_data} +\title{Simulated Multivariate Exposure Data} +\format{ +A data frame with 2000 rows and 6 variables: +\describe{ +\item{C1}{Continuous baseline variable.} +\item{C2}{Continuous baseline variable.} +\item{C3}{Continuous baseline variable.} +\item{D1}{Treatment variable one at baseline.} +\item{D2}{Treatment variable two at baseline.} +\item{Y}{Continuous outcome} +} +} +\usage{ +multivariate_data +} +\description{ +A dataset with a continuous outcome, three baseline covariates, +and two treatment variables. +} +\keyword{datasets} From 0f442df5d2ed5be87db595045183628e97f3e13c Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:01:53 -0700 Subject: [PATCH 10/34] Updating docs on the specifics of the trt argument --- R/estimators.R | 20 ++++++++++++++++---- man/lmtp_ipw.Rd | 7 +++++-- man/lmtp_sdr.Rd | 7 +++++-- man/lmtp_sub.Rd | 7 +++++-- man/lmtp_tmle.Rd | 7 +++++-- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/R/estimators.R b/R/estimators.R index 21f7793d..88a33f25 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -7,8 +7,11 @@ #' @param data \[\code{data.frame}\]\cr #' A \code{data.frame} in wide format containing all necessary variables #' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\]\cr +#' @param trt \[\code{character}\] or \[\code{list}\]\cr #' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. #' @param outcome \[\code{character}\]\cr #' The column name of the outcome variable. In the case of time-to-event #' analysis, a vector containing the columns names of intermediate outcome variables and the final @@ -196,8 +199,11 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, #' @param data \[\code{data.frame}\]\cr #' A \code{data.frame} in wide format containing all necessary variables #' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\]\cr +#' @param trt \[\code{character}\] or \[\code{list}\]\cr #' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. #' @param outcome \[\code{character}\]\cr #' The column name of the outcome variable. In the case of time-to-event #' analysis, a vector containing the columns names of intermediate outcome variables and the final @@ -386,8 +392,11 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, #' @param data \[\code{data.frame}\]\cr #' A \code{data.frame} in wide format containing all necessary variables #' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\]\cr +#' @param trt \[\code{character}\] or \[\code{list}\]\cr #' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. #' @param outcome \[\code{character}\]\cr #' The column name of the outcome variable. In the case of time-to-event #' analysis, a vector containing the columns names of intermediate outcome variables and the final @@ -529,8 +538,11 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens #' @param data \[\code{data.frame}\]\cr #' A \code{data.frame} in wide format containing all necessary variables #' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\]\cr +#' @param trt \[\code{character}\] or \[\code{list}\]\cr #' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. #' @param outcome \[\code{character}\]\cr #' The column name of the outcome variable. In the case of time-to-event #' analysis, a vector containing the columns names of intermediate outcome variables and the final diff --git a/man/lmtp_ipw.Rd b/man/lmtp_ipw.Rd index 6d9156aa..8d5c9188 100644 --- a/man/lmtp_ipw.Rd +++ b/man/lmtp_ipw.Rd @@ -32,8 +32,11 @@ lmtp_ipw( A \code{data.frame} in wide format containing all necessary variables for the estimation problem. Must not be a \code{data.table}.} -\item{trt}{[\code{character}]\cr -A vector containing the column names of treatment variables ordered by time.} +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} \item{outcome}{[\code{character}]\cr The column name of the outcome variable. In the case of time-to-event diff --git a/man/lmtp_sdr.Rd b/man/lmtp_sdr.Rd index 3bf9217d..8279fad4 100644 --- a/man/lmtp_sdr.Rd +++ b/man/lmtp_sdr.Rd @@ -35,8 +35,11 @@ lmtp_sdr( A \code{data.frame} in wide format containing all necessary variables for the estimation problem. Must not be a \code{data.table}.} -\item{trt}{[\code{character}]\cr -A vector containing the column names of treatment variables ordered by time.} +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} \item{outcome}{[\code{character}]\cr The column name of the outcome variable. In the case of time-to-event diff --git a/man/lmtp_sub.Rd b/man/lmtp_sub.Rd index d9018b9f..d9db1c8a 100644 --- a/man/lmtp_sub.Rd +++ b/man/lmtp_sub.Rd @@ -30,8 +30,11 @@ lmtp_sub( A \code{data.frame} in wide format containing all necessary variables for the estimation problem. Must not be a \code{data.table}.} -\item{trt}{[\code{character}]\cr -A vector containing the column names of treatment variables ordered by time.} +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} \item{outcome}{[\code{character}]\cr The column name of the outcome variable. In the case of time-to-event diff --git a/man/lmtp_tmle.Rd b/man/lmtp_tmle.Rd index b00e3770..b43f14d8 100644 --- a/man/lmtp_tmle.Rd +++ b/man/lmtp_tmle.Rd @@ -35,8 +35,11 @@ lmtp_tmle( A \code{data.frame} in wide format containing all necessary variables for the estimation problem. Must not be a \code{data.table}.} -\item{trt}{[\code{character}]\cr -A vector containing the column names of treatment variables ordered by time.} +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} \item{outcome}{[\code{character}]\cr The column name of the outcome variable. In the case of time-to-event From 573fc30cab765f1e608ed60f5c532c0a0c8f59a3 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:04:36 -0700 Subject: [PATCH 11/34] Adding multivariate example to docs --- inst/examples/ipw-ex.R | 19 +++++++++++++++++++ inst/examples/sdr-ex.R | 19 +++++++++++++++++++ inst/examples/sub-ex.R | 19 +++++++++++++++++++ inst/examples/tmle-ex.R | 19 +++++++++++++++++++ man/lmtp_ipw.Rd | 19 +++++++++++++++++++ man/lmtp_sdr.Rd | 19 +++++++++++++++++++ man/lmtp_sub.Rd | 19 +++++++++++++++++++ man/lmtp_tmle.Rd | 19 +++++++++++++++++++ 8 files changed, 152 insertions(+) diff --git a/inst/examples/ipw-ex.R b/inst/examples/ipw-ex.R index cade3566..46abc4c7 100644 --- a/inst/examples/ipw-ex.R +++ b/inst/examples/ipw-ex.R @@ -141,4 +141,23 @@ lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_ipw(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } diff --git a/inst/examples/sdr-ex.R b/inst/examples/sdr-ex.R index caaae42a..e1a4ec1a 100644 --- a/inst/examples/sdr-ex.R +++ b/inst/examples/sdr-ex.R @@ -143,4 +143,23 @@ lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sdr(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } diff --git a/inst/examples/sub-ex.R b/inst/examples/sub-ex.R index ca5f6890..0ae063fc 100644 --- a/inst/examples/sub-ex.R +++ b/inst/examples/sub-ex.R @@ -137,4 +137,23 @@ lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sub(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1) } diff --git a/inst/examples/tmle-ex.R b/inst/examples/tmle-ex.R index 25d353fd..a6631c97 100644 --- a/inst/examples/tmle-ex.R +++ b/inst/examples/tmle-ex.R @@ -140,4 +140,23 @@ lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_tmle(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } diff --git a/man/lmtp_ipw.Rd b/man/lmtp_ipw.Rd index 8d5c9188..f217669a 100644 --- a/man/lmtp_ipw.Rd +++ b/man/lmtp_ipw.Rd @@ -281,5 +281,24 @@ by some amount, use \code{mtp = TRUE}}. lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_ipw(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } } diff --git a/man/lmtp_sdr.Rd b/man/lmtp_sdr.Rd index 8279fad4..bffabcd8 100644 --- a/man/lmtp_sdr.Rd +++ b/man/lmtp_sdr.Rd @@ -303,5 +303,24 @@ by some amount, use \code{mtp = TRUE}}. lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sdr(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } } diff --git a/man/lmtp_sub.Rd b/man/lmtp_sub.Rd index d9db1c8a..f19858b8 100644 --- a/man/lmtp_sub.Rd +++ b/man/lmtp_sub.Rd @@ -259,5 +259,24 @@ continuous, or time-to-event outcomes. Supports binary, categorical, and continu lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sub(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1) } } diff --git a/man/lmtp_tmle.Rd b/man/lmtp_tmle.Rd index b43f14d8..a0bb7a56 100644 --- a/man/lmtp_tmle.Rd +++ b/man/lmtp_tmle.Rd @@ -300,5 +300,24 @@ by some amount, use \code{mtp = TRUE}}. lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_tmle(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) } } From 4f526cce48d224e9b83295b13da1c504d5c0b847 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:05:04 -0700 Subject: [PATCH 12/34] Updated NEWS --- NEWS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NEWS.md b/NEWS.md index e104c821..e962febc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,13 @@ +# lmtp 1.4.0 + +### New Features + +- Can now estimate the effects of simultaneous interventions on multiple variables. + +### Buf Fixes + +### General + # lmtp 1.3.3 ### New Features From fd93ad835394101357d8f2aa04a90c3dba49cf59 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:05:12 -0700 Subject: [PATCH 13/34] Version bump --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 15558265..14c2e99d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: lmtp Title: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies -Version: 1.3.4 +Version: 1.4.0 Authors@R: c(person(given = "Nicholas", family = "Williams", From b9ebfbb68d589508bb5a417910cafc82b9eab439 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:07:16 -0700 Subject: [PATCH 14/34] Updated NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index e962febc..19f3b96b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ ### New Features - Can now estimate the effects of simultaneous interventions on multiple variables. +- New pre-packaged shift function, `ipsi()` for estimating IPSI effects using the risk ratio. ### Buf Fixes From e164a5f685e26feed452e5c15287b7fdc2c91e29 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Tue, 23 Apr 2024 13:08:49 -0700 Subject: [PATCH 15/34] Updated README --- README.Rmd | 100 ++++++++++++++++++++++++++--------------------------- README.md | 58 +++++++++++++++++-------------- 2 files changed, 82 insertions(+), 76 deletions(-) diff --git a/README.Rmd b/README.Rmd index 5d829a9e..5ad2fe4a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -13,24 +13,21 @@ knitr::opts_chunk$set( ) ``` -# lmtp +# lmtp -[![CRAN status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) -![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) -[![R build status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) -[![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) -[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) -[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) + +[![CRAN status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) ![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) [![R build status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) [![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) + > Non-parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies Nick Williams and Ivan Diaz ---- +------------------------------------------------------------------------ -**lmtp** is an R package that provides an estimation framework for the casual effects of feasible interventions based on point-treatment and longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck (2020). Two primary estimators are supported, a targeted maximum likelihood (TML) estimator and a sequentially doubly robust (SDR) estimator (a G-computation and an inverse probability of treatment weighting estimator are provided for the sake of being thorough but their use is recommended against in favor of the TML and SDR estimators). Both binary and continuous outcomes (both with censoring) are allowed. **lmtp** is built atop the [`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) package to utilize ensemble machine learning for estimation. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type providing decreased computation time when treatment is continuous. Dynamic treatment regimes are also supported. +**lmtp** is an R package that provides an estimation framework for the casual effects of feasible interventions based on point-treatment and longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck (2020). Two primary estimators are supported, a targeted maximum likelihood (TML) estimator and a sequentially doubly robust (SDR) estimator (a G-computation and an inverse probability of treatment weighting estimator are provided for the sake of being thorough but their use is recommended against in favor of the TML and SDR estimators). Both binary and continuous outcomes (both with censoring) are allowed. **lmtp** is built atop the [`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) package to utilize ensemble machine learning for estimation. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type providing decreased computation time when treatment is continuous. Dynamic treatment regimes are also supported. A list of papers using **lmtp** is [here](https://gist.github.com/nt-williams/15068f5849a67ff4d2cb7f2dcf97b3de). @@ -38,54 +35,56 @@ For an in-depth look at the package's functionality, please consult the accompan ## Installation -**lmtp** can be installed from CRAN with: +**lmtp** can be installed from CRAN with: -```r +``` r install.packages("lmtp") ``` -The stable, development version can be installed from GitHub with: +The stable, development version can be installed from GitHub with: -```r +``` r devtools::install_github("nt-williams/lmtp@devel") ``` -A version allowing for different covariates sets for the treatment, censoring, and outcome regressions: +A version allowing for different covariates sets for the treatment, censoring, and outcome regressions: -```r +``` r devtools::install_github("nt-williams/lmtp@separate-variable-sets") ``` -## What even is a modified treatment policy? +## What even is a modified treatment policy? -Modified treatment policies (MTP) are interventions that can depend on the *natural* value of the treatment (the treatment value in the absence of intervention). A key assumption for causal inference is the *positivity assumption* which states that all observations have a non-zero probability of experiencing a treatment value. **When working with continuous or multivalued treatments, violations of the positivity assumption are likely to occur. MTPs offer a solution to this problem.** +Modified treatment policies (MTP) are interventions that can depend on the *natural* value of the treatment (the treatment value in the absence of intervention). A key assumption for causal inference is the *positivity assumption* which states that all observations have a non-zero probability of experiencing a treatment value. **When working with continuous or multivalued treatments, violations of the positivity assumption are likely to occur. MTPs offer a solution to this problem.** -## Can lmtp estimate other effects? +## Can lmtp estimate other effects? -Yes! **lmtp** can estimate the effects of deterministic, static treatment effects (such as the ATE) and deterministic, dynamic treatment regimes for binary, continuous, and survival outcomes. +Yes! **lmtp** can estimate the effects of deterministic, static treatment effects (such as the ATE) and deterministic, dynamic treatment regimes for binary, continuous, and survival outcomes. ### Features -| Feature | Status | -|---------------------------------|:-----------:| -| Point treatment | ✓ | -| Longitudinal treatment | ✓ | -| Modified treatment intervention | ✓ | -| Static intervention | ✓ | -| Dynamic intervention | ✓ | -| Continuous treatment | ✓ | -| Binary treatment | ✓ | -| Categorical treatment | ✓ | -| Missingness in treatment | | -| Continuous outcome | ✓ | -| Binary outcome | ✓ | -| Censored outcome | ✓ | -| Mediation | | -| Survey weights | ✓ | -| Super learner | ✓ | -| Clustered data | ✓ | -| Parallel processing | ✓ | -| Progress bars | ✓ | +| Feature | Status | +|---------------------------------------------------------|:-------------:| +| Point treatment | ✓ | +| Longitudinal treatment | ✓ | +| Modified treatment intervention | ✓ | +| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | +| Static intervention | ✓ | +| Dynamic intervention | ✓ | +| Continuous treatment | ✓ | +| Binary treatment | ✓ | +| Categorical treatment | ✓ | +| Multivariate treatment | ✓ | +| Missingness in treatment | | +| Continuous outcome | ✓ | +| Binary outcome | ✓ | +| Censored outcome | ✓ | +| Mediation | | +| Survey weights | ✓ | +| Super learner | ✓ | +| Clustered data | ✓ | +| Parallel processing | ✓ | +| Progress bars | ✓ | ## Example @@ -114,7 +113,7 @@ A <- c("A_1", "A_2", "A_3", "A_4") L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) ``` -We can now estimate the effect of our treatment policy, `d`. In this example, we'll use the cross-validated TML estimator with 10 folds. +We can now estimate the effect of our treatment policy, `d`. In this example, we'll use the cross-validated TML estimator with 10 folds. ```{r, eval = FALSE} lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mtp", folds = 10) @@ -131,35 +130,35 @@ lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mt #### Single time point - + #### Time-varying exposure and confounders, not survival outcome - + #### Single exposure, survival outcome - + #### Time-varying exposure and confounders, survival outcome - + ## Similar Implementations A variety of other R packages perform similar tasks as **lmtp**. However, **lmtp** is the only R package currently capable of estimating causal effects for binary, categorical, and continuous exposures in both the point treatment and longitudinal setting using traditional causal effects or modified treatment policies. -- [`txshift`](https://github.com/nhejazi/txshift) -- [`tmle3`](https://github.com/tlverse/tmle3) -- [`tmle3shift`](https://github.com/tlverse/tmle3shift) -- [`ltmle`](https://CRAN.R-project.org/package=ltmle) -- [`tmle`](https://CRAN.R-project.org/package=tmle) +- [`txshift`](https://github.com/nhejazi/txshift)\ +- [`tmle3`](https://github.com/tlverse/tmle3)\ +- [`tmle3shift`](https://github.com/tlverse/tmle3shift) +- [`ltmle`](https://CRAN.R-project.org/package=ltmle)\ +- [`tmle`](https://CRAN.R-project.org/package=tmle) ## Citation Please cite the following when using **lmtp** in publications. Citation should include both the R package article and the paper establishing the statistical methodology. -``` +``` @article{, title = {lmtp: An R package for estimating the causal effects of modified treatment policies}, author = {Nicholas T Williams and Iván Díaz}, @@ -182,4 +181,3 @@ Please cite the following when using **lmtp** in publications. Citation should i ## References Iván Díaz, Nicholas Williams, Katherine L. Hoffman & Edward J. Schenck (2021) Non-parametric causal effects based on longitudinal modified treatment policies, Journal of the American Statistical Association, DOI: 10.1080/01621459.2021.1955691 - diff --git a/README.md b/README.md index c3845f1b..76cd0676 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# lmtp +# lmtp @@ -15,6 +15,7 @@ v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/li [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) + > Non-parametric Causal Effects of Feasible Interventions Based on @@ -87,31 +88,38 @@ regimes for binary, continuous, and survival outcomes. ### Features -| Feature | Status | -|---------------------------------|:------:| -| Point treatment | ✓ | -| Longitudinal treatment | ✓ | -| Modified treatment intervention | ✓ | -| Static intervention | ✓ | -| Dynamic intervention | ✓ | -| Continuous treatment | ✓ | -| Binary treatment | ✓ | -| Categorical treatment | ✓ | -| Missingness in treatment | | -| Continuous outcome | ✓ | -| Binary outcome | ✓ | -| Censored outcome | ✓ | -| Mediation | | -| Survey weights | ✓ | -| Super learner | ✓ | -| Clustered data | ✓ | -| Parallel processing | ✓ | -| Progress bars | ✓ | +| Feature | Status | +|------------------------------------------------------------------|:------:| +| Point treatment | ✓ | +| Longitudinal treatment | ✓ | +| Modified treatment intervention | ✓ | +| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | +| Static intervention | ✓ | +| Dynamic intervention | ✓ | +| Continuous treatment | ✓ | +| Binary treatment | ✓ | +| Categorical treatment | ✓ | +| Multivariate treatment | ✓ | +| Missingness in treatment | | +| Continuous outcome | ✓ | +| Binary outcome | ✓ | +| Censored outcome | ✓ | +| Mediation | | +| Survey weights | ✓ | +| Super learner | ✓ | +| Clustered data | ✓ | +| Parallel processing | ✓ | +| Progress bars | ✓ | ## Example ``` r library(lmtp) +#> Loading required package: mlr3superlearner +#> Loading required package: mlr3learners +#> Warning: package 'mlr3learners' was built under R version 4.2.3 +#> Loading required package: mlr3 +#> Warning: package 'mlr3' was built under R version 4.2.3 # the data: 4 treatment nodes with time varying covariates and a binary outcome head(sim_t4) @@ -163,19 +171,19 @@ lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mt #### Single time point - + #### Time-varying exposure and confounders, not survival outcome - + #### Single exposure, survival outcome - + #### Time-varying exposure and confounders, survival outcome - + ## Similar Implementations From 3133a02a9c641912ae23c4b5847993c14dfbe3ff Mon Sep 17 00:00:00 2001 From: nt-williams Date: Wed, 24 Apr 2024 11:40:58 -0700 Subject: [PATCH 16/34] Updated NAMESPACE, fixing bugs in examples, pre-allocating lists in for loops --- NAMESPACE | 1 + R/density_ratios.R | 4 ++-- R/gcomp.R | 16 ++++++++++------ R/lmtp-package.R | 2 +- R/sdr.R | 15 ++++++++++----- R/shift.R | 2 +- R/theta.R | 1 - R/tmle.R | 16 ++++++++++------ man/ipsi.Rd | 2 +- 9 files changed, 36 insertions(+), 23 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 57cf4378..8b8838b1 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -32,6 +32,7 @@ importFrom(stats,predict) importFrom(stats,qlogis) importFrom(stats,qnorm) importFrom(stats,quantile) +importFrom(stats,runif) importFrom(stats,sd) importFrom(stats,var) importFrom(stats,weighted.mean) diff --git a/R/density_ratios.R b/R/density_ratios.R index 357a729f..344dbcdb 100644 --- a/R/density_ratios.R +++ b/R/density_ratios.R @@ -1,7 +1,7 @@ cf_r <- function(Task, learners, mtp, lrnr_folds, trim, full_fits, pb) { fopts <- options("lmtp.bound", "lmtp.trt.length") - out <- list() + out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ options(fopts) @@ -21,7 +21,7 @@ cf_r <- function(Task, learners, mtp, lrnr_folds, trim, full_fits, pb) { estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, lrnr_folds, full_fits) { densratios <- matrix(nrow = nrow(natural$valid), ncol = tau) - fits <- list() + fits <- vector("list", length = tau) for (t in 1:tau) { jrt <- rep(censored(natural$train, cens, t)$j, 2) diff --git a/R/gcomp.R b/R/gcomp.R index 8bbb3899..bb074458 100644 --- a/R/gcomp.R +++ b/R/gcomp.R @@ -1,6 +1,5 @@ cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { - out <- list() - + out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ estimate_sub( @@ -27,7 +26,7 @@ estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, outcome_type, learners, lrnr_folds, pb, full_fits) { m <- matrix(nrow = nrow(natural$valid), ncol = tau) - fits <- list() + fits <- vector("list", length = tau) for (t in tau:1) { i <- censored(natural$train, cens, t)$i @@ -61,12 +60,17 @@ estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, fits[[t]] <- extract_sl_weights(fit) } - trt_var <- trt[[t]] + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] natural$train[jt & rt, pseudo] <- bound(SL_predict(fit, under_shift_train), 1e-05) m[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) diff --git a/R/lmtp-package.R b/R/lmtp-package.R index 319994d1..cf0c16f4 100644 --- a/R/lmtp-package.R +++ b/R/lmtp-package.R @@ -1,4 +1,4 @@ -#' @importFrom stats as.formula coef glm plogis predict qlogis qnorm pnorm sd quantile var binomial gaussian na.omit weighted.mean +#' @importFrom stats runif as.formula coef glm plogis predict qlogis qnorm pnorm sd quantile var binomial gaussian na.omit weighted.mean #' @keywords internal "_PACKAGE" diff --git a/R/sdr.R b/R/sdr.R index bfb8be74..099a1428 100644 --- a/R/sdr.R +++ b/R/sdr.R @@ -1,5 +1,5 @@ cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { - out <- list() + out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ estimate_sdr( @@ -29,7 +29,7 @@ estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, m_natural_valid <- m_shifted_valid <- cbind(matrix(nrow = nrow(natural$valid), ncol = tau), natural$valid[[outcome]]) - fits <- list() + fits <- vector("list", length = tau) for (t in tau:1) { i <- censored(natural$train, cens, t)$i @@ -82,12 +82,17 @@ estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, } } - trt_var <- trt[[t]] + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) diff --git a/R/shift.R b/R/shift.R index b90cda2c..115f77a7 100644 --- a/R/shift.R +++ b/R/shift.R @@ -94,7 +94,7 @@ static_binary_off <- function(data, trt) { #' @param delta \[\code{numeric(1)}\]\cr #' A risk ratio between 0 and Inf. #' -#' @seealso [ipsi_down()], [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] +#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] #' @return A shift function. #' @export #' diff --git a/R/theta.R b/R/theta.R index 986625a1..09bdcfd3 100644 --- a/R/theta.R +++ b/R/theta.R @@ -70,7 +70,6 @@ theta_dr <- function(eta, augmented = FALSE) { tau = eta$tau, shifted = eta$m$shifted, natural = eta$m$natural) - theta <- { if (augmented) if (is.null(eta$weights)) diff --git a/R/tmle.R b/R/tmle.R index e350e799..7cd9b783 100644 --- a/R/tmle.R +++ b/R/tmle.R @@ -1,6 +1,5 @@ cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { - out <- list() - + out <- vector("list", length = length(Task$folds)) ratios <- matrix(t(apply(ratios, 1, cumprod)), nrow = nrow(ratios), ncol = ncol(ratios)) @@ -33,7 +32,7 @@ estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) - fits <- list() + fits <- vector("list", length = tau) for (t in tau:1) { i <- censored(natural$train, cens, t)$i jt <- censored(natural$train, cens, t)$j @@ -66,12 +65,17 @@ estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, fits[[t]] <- extract_sl_weights(fit) } - trt_var <- trt[[t]] + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_var] <- shifted$train[jt & rt, trt_var] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_var] <- shifted$valid[jv & rv, trt_var] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) diff --git a/man/ipsi.Rd b/man/ipsi.Rd index 0d1845c3..9fcc91d2 100644 --- a/man/ipsi.Rd +++ b/man/ipsi.Rd @@ -28,5 +28,5 @@ lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, } } \seealso{ -\code{\link[=ipsi_down]{ipsi_down()}}, \code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} +\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} } From 55a6146da1504a9f783d8091ddae7cc31c744e35 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Wed, 24 Apr 2024 12:00:55 -0700 Subject: [PATCH 17/34] Fully deprecating intervention_type arg --- R/estimators.R | 24 -------------------- man/lmtp_ipw.Rd | 2 -- man/lmtp_sdr.Rd | 2 -- man/lmtp_tmle.Rd | 2 -- tests/testthat/test-shifted.R | 6 ++--- tests/testthat/test-time_varying_treatment.R | 6 ++--- 6 files changed, 6 insertions(+), 36 deletions(-) diff --git a/R/estimators.R b/R/estimators.R index 88a33f25..9ee40e26 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -71,7 +71,6 @@ #' The number of cross-validation folds for \code{learners_trt}. #' @param .return_full_fits \[\code{logical(1)}\]\cr #' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' @param ... Extra arguments. Exists for backwards compatibility. #' #' @details #' ## Should \code{mtp = TRUE}? @@ -140,13 +139,6 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(.trim, upper = 1) checkmate::assertLogical(.return_full_fits, len = 1) - extras <- list(...) - if ("intervention_type" %in% names(extras)) { - mtp <- extras$intervention_type == "mtp" - warning("The `intervention_type` argument of `lmtp_tmle()` is deprecated as of lmtp 1.3.1", - call. = FALSE) - } - Task <- lmtp_Task$new( data = data, trt = trt, @@ -263,7 +255,6 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, #' The number of cross-validation folds for \code{learners_trt}. #' @param .return_full_fits \[\code{logical(1)}\]\cr #' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' @param ... Extra arguments. Exists for backwards compatibility. #' #' @details #' ## Should \code{mtp = TRUE}? @@ -351,13 +342,6 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, bound = .bound ) - extras <- list(...) - if ("intervention_type" %in% names(extras)) { - mtp <- extras$intervention_type == "mtp" - warning("The `intervention_type` argument of `lmtp_sdr()` is deprecated as of lmtp 1.3.1", - call. = FALSE) - } - pb <- progressr::progressor(Task$tau*folds*2) ratios <- cf_r(Task, learners_trt, mtp, .learners_trt_folds, .trim, .return_full_fits, pb) @@ -594,7 +578,6 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens #' The number of cross-validation folds for \code{learners}. #' @param .return_full_fits \[\code{logical(1)}\]\cr #' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' @param ... Extra arguments. Exists for backwards compatibility. #' #' @details #' ## Should \code{mtp = TRUE}? @@ -674,13 +657,6 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens pb <- progressr::progressor(Task$tau*folds) - extras <- list(...) - if ("intervention_type" %in% names(extras)) { - mtp <- extras$intervention_type == "mtp" - warning("The `intervention_type` argument of `lmtp_ipw()` is deprecated as of lmtp 1.3.1", - call. = FALSE) - } - ratios <- cf_r(Task, learners, mtp, .learners_folds, .trim, .return_full_fits, pb) theta_ipw( diff --git a/man/lmtp_ipw.Rd b/man/lmtp_ipw.Rd index f217669a..702e7ec1 100644 --- a/man/lmtp_ipw.Rd +++ b/man/lmtp_ipw.Rd @@ -105,8 +105,6 @@ The number of cross-validation folds for \code{learners}.} \item{.return_full_fits}{[\code{logical(1)}]\cr Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} - -\item{...}{Extra arguments. Exists for backwards compatibility.} } \value{ A list of class \code{lmtp} containing the following components: diff --git a/man/lmtp_sdr.Rd b/man/lmtp_sdr.Rd index bffabcd8..6a09186b 100644 --- a/man/lmtp_sdr.Rd +++ b/man/lmtp_sdr.Rd @@ -119,8 +119,6 @@ The number of cross-validation folds for \code{learners_trt}.} \item{.return_full_fits}{[\code{logical(1)}]\cr Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} - -\item{...}{Extra arguments. Exists for backwards compatibility.} } \value{ A list of class \code{lmtp} containing the following components: diff --git a/man/lmtp_tmle.Rd b/man/lmtp_tmle.Rd index a0bb7a56..a138ae0c 100644 --- a/man/lmtp_tmle.Rd +++ b/man/lmtp_tmle.Rd @@ -119,8 +119,6 @@ The number of cross-validation folds for \code{learners_trt}.} \item{.return_full_fits}{[\code{logical(1)}]\cr Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} - -\item{...}{Extra arguments. Exists for backwards compatibility.} } \value{ A list of class \code{lmtp} containing the following components: diff --git a/tests/testthat/test-shifted.R b/tests/testthat/test-shifted.R index 1f80130c..b85f90ba 100644 --- a/tests/testthat/test-shifted.R +++ b/tests/testthat/test-shifted.R @@ -15,17 +15,17 @@ sub <- ipw <- sw(lmtp_ipw(sim_cens, a, "Y", NULL, nodes, - cens, k = 0, shifted = sc, folds = 2, intervention_type = "mtp")) + cens, k = 0, shifted = sc, folds = 2, mtp = TRUE)) tmle <- sw(lmtp_tmle(sim_cens, a, "Y", nodes, baseline = NULL, cens, k = 0, shifted = sc, - outcome_type = "binomial", folds = 2, intervention_type = "mtp")) + outcome_type = "binomial", folds = 2, mtp = TRUE)) sdr <- sw(lmtp_sdr(sim_cens, a, "Y", nodes, baseline = NULL, cens, k = 0, shifted = sc, - outcome_type = "binomial", folds = 2, intervention_type = "mtp")) + outcome_type = "binomial", folds = 2, mtp = TRUE)) # tests test_that("estimator fidelity with shifted data supplied", { diff --git a/tests/testthat/test-time_varying_treatment.R b/tests/testthat/test-time_varying_treatment.R index dc797933..7e7cd1e0 100644 --- a/tests/testthat/test-time_varying_treatment.R +++ b/tests/testthat/test-time_varying_treatment.R @@ -24,9 +24,9 @@ d <- function(data, trt) { truth <- 0.305 sub <- sw(lmtp_sub(tmp, a, "Y", time_vary = time_varying, shift = d, folds = 1)) -ipw <- sw(lmtp_ipw(tmp, a, "Y", time_vary = time_varying, shift = d, intervention_type = "mtp", folds = 1)) -tmle <- sw(lmtp_tmle(tmp, a, "Y", time_vary = time_varying, shift = d, intervention_type = "mtp", folds = 1)) -sdr <- sw(lmtp_sdr(tmp, a, "Y", time_vary = time_varying, shift = d, intervention_type = "mtp", folds = 1)) +ipw <- sw(lmtp_ipw(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) +tmle <- sw(lmtp_tmle(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) +sdr <- sw(lmtp_sdr(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) test_that("time varying treatment fidelity, t = 4", { expect_equal(truth, sub$theta, tolerance = 0.025) From e9ef945ff390750d2d8763191ebfbfab93e34c47 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Wed, 24 Apr 2024 12:20:51 -0700 Subject: [PATCH 18/34] Switching use of extra arguments to lmtp_control --- .Rbuildignore | 14 - .covrignore | 1 - .github/.gitignore | 1 - .github/ISSUE_TEMPLATE/feature_request.md | 22 - .github/ISSUE_TEMPLATE/issue-report.md | 28 - .github/workflows/R-CMD-check.yaml | 52 -- .gitignore | 4 - DESCRIPTION | 48 -- LICENSE.md | 659 ------------------ NAMESPACE | 38 -- NEWS.md | 161 ----- R/checks.R | 173 ----- R/contrasts.R | 184 ----- R/data.R | 100 --- R/density_ratios.R | 90 --- R/estimators.R | 681 ------------------- R/gcomp.R | 85 --- R/lmtp-package.R | 9 - R/lmtp_Task.R | 73 -- R/nodelist.R | 143 ---- R/print.R | 23 - R/sdr.R | 113 --- R/shift.R | 129 ---- R/sl.R | 31 - R/theta.R | 119 ---- R/tidy.R | 30 - R/tmle.R | 109 --- R/utils.R | 217 ------ README.Rmd | 183 ----- README.md | 231 ------- codecov.yml | 14 - cran-comments.md | 13 - data/multivariate_data.rda | Bin 94038 -> 0 bytes data/sim_cens.rda | Bin 16749 -> 0 bytes data/sim_point_surv.rda | Bin 6805 -> 0 bytes data/sim_t4.rda | Bin 22802 -> 0 bytes data/sim_timevary_surv.rda | Bin 15488 -> 0 bytes inst/CITATION | 22 - inst/examples/contrasts-ex.R | 39 -- inst/examples/ipw-ex.R | 163 ----- inst/examples/sdr-ex.R | 165 ----- inst/examples/sub-ex.R | 159 ----- inst/examples/tmle-ex.R | 162 ----- lmtp.Rproj | 21 - man/create_node_list.Rd | 46 -- man/event_locf.Rd | 25 - man/figures/lmtp.png | Bin 295373 -> 0 bytes man/figures/pointtrt.png | Bin 34606 -> 0 bytes man/figures/survival.png | Bin 43332 -> 0 bytes man/figures/timevary.png | Bin 65748 -> 0 bytes man/figures/timevarysurvival.png | Bin 72075 -> 0 bytes man/ipsi.Rd | 32 - man/lmtp-package.Rd | 28 - man/lmtp_contrast.Rd | 69 -- man/lmtp_ipw.Rd | 302 -------- man/lmtp_sdr.Rd | 324 --------- man/lmtp_sub.Rd | 282 -------- man/lmtp_tmle.Rd | 321 --------- man/multivariate_data.Rd | 25 - man/reexports.Rd | 16 - man/sim_cens.Rd | 26 - man/sim_point_surv.Rd | 34 - man/sim_t4.Rd | 29 - man/sim_timevary_surv.Rd | 32 - man/static_binary_off.Rd | 33 - man/static_binary_on.Rd | 33 - man/tidy.lmtp.Rd | 28 - tests/testthat.R | 4 - tests/testthat/test-censoring.R | 19 - tests/testthat/test-checks.R | 179 ----- tests/testthat/test-dynamic.R | 56 -- tests/testthat/test-node-list.txt | 243 ------- tests/testthat/test-node_list.R | 33 - tests/testthat/test-point_treatment.R | 27 - tests/testthat/test-shifted.R | 36 - tests/testthat/test-survey.R | 40 -- tests/testthat/test-time_varying_treatment.R | 36 - 77 files changed, 6867 deletions(-) delete mode 100644 .Rbuildignore delete mode 100644 .covrignore delete mode 100644 .github/.gitignore delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/issue-report.md delete mode 100644 .github/workflows/R-CMD-check.yaml delete mode 100644 .gitignore delete mode 100644 DESCRIPTION delete mode 100755 LICENSE.md delete mode 100644 NAMESPACE delete mode 100644 NEWS.md delete mode 100644 R/checks.R delete mode 100644 R/contrasts.R delete mode 100644 R/data.R delete mode 100644 R/density_ratios.R delete mode 100644 R/estimators.R delete mode 100644 R/gcomp.R delete mode 100644 R/lmtp-package.R delete mode 100644 R/lmtp_Task.R delete mode 100644 R/nodelist.R delete mode 100644 R/print.R delete mode 100644 R/sdr.R delete mode 100644 R/shift.R delete mode 100644 R/sl.R delete mode 100644 R/theta.R delete mode 100644 R/tidy.R delete mode 100644 R/tmle.R delete mode 100644 R/utils.R delete mode 100644 README.Rmd delete mode 100644 README.md delete mode 100644 codecov.yml delete mode 100644 cran-comments.md delete mode 100644 data/multivariate_data.rda delete mode 100644 data/sim_cens.rda delete mode 100644 data/sim_point_surv.rda delete mode 100644 data/sim_t4.rda delete mode 100644 data/sim_timevary_surv.rda delete mode 100644 inst/CITATION delete mode 100644 inst/examples/contrasts-ex.R delete mode 100644 inst/examples/ipw-ex.R delete mode 100644 inst/examples/sdr-ex.R delete mode 100644 inst/examples/sub-ex.R delete mode 100644 inst/examples/tmle-ex.R delete mode 100755 lmtp.Rproj delete mode 100644 man/create_node_list.Rd delete mode 100644 man/event_locf.Rd delete mode 100644 man/figures/lmtp.png delete mode 100644 man/figures/pointtrt.png delete mode 100644 man/figures/survival.png delete mode 100644 man/figures/timevary.png delete mode 100644 man/figures/timevarysurvival.png delete mode 100644 man/ipsi.Rd delete mode 100644 man/lmtp-package.Rd delete mode 100644 man/lmtp_contrast.Rd delete mode 100644 man/lmtp_ipw.Rd delete mode 100644 man/lmtp_sdr.Rd delete mode 100644 man/lmtp_sub.Rd delete mode 100644 man/lmtp_tmle.Rd delete mode 100644 man/multivariate_data.Rd delete mode 100644 man/reexports.Rd delete mode 100644 man/sim_cens.Rd delete mode 100644 man/sim_point_surv.Rd delete mode 100644 man/sim_t4.Rd delete mode 100644 man/sim_timevary_surv.Rd delete mode 100644 man/static_binary_off.Rd delete mode 100644 man/static_binary_on.Rd delete mode 100644 man/tidy.lmtp.Rd delete mode 100644 tests/testthat.R delete mode 100644 tests/testthat/test-censoring.R delete mode 100644 tests/testthat/test-checks.R delete mode 100644 tests/testthat/test-dynamic.R delete mode 100644 tests/testthat/test-node-list.txt delete mode 100644 tests/testthat/test-node_list.R delete mode 100644 tests/testthat/test-point_treatment.R delete mode 100644 tests/testthat/test-shifted.R delete mode 100644 tests/testthat/test-survey.R delete mode 100644 tests/testthat/test-time_varying_treatment.R diff --git a/.Rbuildignore b/.Rbuildignore deleted file mode 100644 index 8fa1b2b9..00000000 --- a/.Rbuildignore +++ /dev/null @@ -1,14 +0,0 @@ -^lmtp\.Rproj$ -^\.Rproj\.user$ -^LICENSE\.md$ -^README\.Rmd$ -^codecov\.yml$ -^\.travis\.yml$ -^\.github$ -^\.covrignore$ -^vignettes/articles$ -^cran-comments\.md$ -^CRAN-RELEASE$ -^inst/examples$ -^paper/ -^CRAN-SUBMISSION$ diff --git a/.covrignore b/.covrignore deleted file mode 100644 index 358e5936..00000000 --- a/.covrignore +++ /dev/null @@ -1 +0,0 @@ -R/print.R diff --git a/.github/.gitignore b/.github/.gitignore deleted file mode 100644 index d3fc626f..00000000 --- a/.github/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.html diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index f0e77cfb..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for lmtp -title: '' -labels: '' -assignees: '' - ---- - -**First, go through the issues and make sure this hasn't already been requested** - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. Ex. "A change to the UI..." - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/issue-report.md b/.github/ISSUE_TEMPLATE/issue-report.md deleted file mode 100644 index 8c2613de..00000000 --- a/.github/ISSUE_TEMPLATE/issue-report.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: Issue report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the issue** -Please be clear and concise. - -**reprex** -Please include a reproducible example. This should include: -1. The code to create an example dataset. -2. The code necessary to arrive at the spot where the error occurs. - -More information on how and why to use a reprex can be found [here](https://community.rstudio.com/t/faq-whats-a-reproducible-example-reprex-and-how-do-i-do-one/5219). - -**Expected behavior** -Please include a description of the expected behavior. - -**Please include your R session info:** -``` -Put session info here -``` - -And lastly, please **be kind and respectful** :smile: diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml deleted file mode 100644 index 6e351e4e..00000000 --- a/.github/workflows/R-CMD-check.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. -# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions -on: - push: - branches: - - master - - devel - pull_request: - branches: - - master - - devel - -name: R-CMD-check - -jobs: - R-CMD-check: - runs-on: ${{ matrix.config.os }} - name: ${{ matrix.config.os }} (${{ matrix.config.r }}) - - strategy: - fail-fast: false - matrix: - config: - - {os: macOS-latest, r: 'release'} - - {os: macOS-latest, r: 'oldrel'} - - {os: windows-latest, r: 'release'} - - {os: windows-latest, r: 'oldrel'} - - {os: ubuntu-18.04, r: 'release'} - - env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} - - steps: - - uses: actions/checkout@v2 - - - uses: r-lib/actions/setup-pandoc@v2 - - - uses: r-lib/actions/setup-r@v2 - with: - r-version: ${{ matrix.config.r }} - http-user-agent: ${{ matrix.config.http-user-agent }} - use-public-rspm: true - - - uses: r-lib/actions/setup-r-dependencies@v2 - with: - extra-packages: any::rcmdcheck - needs: check - - - uses: r-lib/actions/check-r-package@v2 - with: - upload-snapshots: true diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 42defcc4..00000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.Rproj.user -.Rapp.history -.DS_Store -inst/doc diff --git a/DESCRIPTION b/DESCRIPTION deleted file mode 100644 index 14c2e99d..00000000 --- a/DESCRIPTION +++ /dev/null @@ -1,48 +0,0 @@ -Package: lmtp -Title: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies -Version: 1.4.0 -Authors@R: - c(person(given = "Nicholas", - family = "Williams", - role = c("aut", "cre", "cph"), - email = "ntwilliams.personal@gmail.com", - comment = c(ORCID = "0000-0002-1378-4831")), - person(given = "Iván", - family = "Díaz", - email = "ild2005@med.cornell.edu", - role = c("aut", "cph"), - comment = c(ORCID = "0000-0001-9056-2047"))) -Description: Non-parametric estimators for casual effects based on longitudinal modified treatment - policies as described in Diaz, Williams, Hoffman, and Schenck , traditional point treatment, - and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are - censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure - irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects - can be calculated and relative risks and odds ratios may be calculated for binary outcomes. -Depends: - R (>= 2.10) -License: AGPL-3 -Encoding: UTF-8 -LazyData: true -Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 -Imports: - stats, - nnls, - cli, - R6, - generics, - origami, - future (>= 1.17.0), - progressr, - data.table (>= 1.13.0), - checkmate (>= 2.1.0), - SuperLearner -URL: https://github.com/nt-williams/lmtp -BugReports: https://github.com/nt-williams/lmtp/issues -Suggests: - testthat (>= 2.1.0), - covr, - rmarkdown, - knitr, - ranger, - twang diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100755 index 6d4fac66..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,659 +0,0 @@ -GNU Affero General Public License -================================= - -_Version 3, 19 November 2007_ -_Copyright (C) 2007 Free Software Foundation, Inc. <>_ - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - -## Preamble - -The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - -The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains -free software for all its users. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - -Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - -A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - -The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - -An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing -under this license. - -The precise terms and conditions for copying, distribution and -modification follow. - -## TERMS AND CONDITIONS - -### 0. Definitions. - -"This License" refers to version 3 of the GNU Affero General Public -License. - -"Copyright" also means copyright-like laws that apply to other kinds -of works, such as semiconductor masks. - -"The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - -To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of -an exact copy. The resulting work is called a "modified version" of -the earlier work or a work "based on" the earlier work. - -A "covered work" means either the unmodified Program or a work based -on the Program. - -To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - -To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user -through a computer network, with no transfer of a copy, is not -conveying. - -An interactive user interface displays "Appropriate Legal Notices" to -the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - -### 1. Source Code. - -The "source code" for a work means the preferred form of the work for -making modifications to it. "Object code" means any non-source form of -a work. - -A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - -The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - -The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can -regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same -work. - -### 2. Basic Permissions. - -All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, -without conditions so long as your license otherwise remains in force. -You may convey covered works to others for the sole purpose of having -them make modifications exclusively for you, or provide you with -facilities for running those works, provided that you comply with the -terms of this License in conveying all material for which you do not -control copyright. Those thus making or running the covered works for -you must do so exclusively on your behalf, under your direction and -control, on terms that prohibit them from making any copies of your -copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the -conditions stated below. Sublicensing is not allowed; section 10 makes -it unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such -circumvention is effected by exercising rights under this License with -respect to the covered work, and you disclaim any intention to limit -operation or modification of the work as a means of enforcing, against -the work's users, your or third parties' legal rights to forbid -circumvention of technological measures. - -### 4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - -### 5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these -conditions: - -- a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. -- b) The work must carry prominent notices stating that it is - released under this License and any conditions added under - section 7. This requirement modifies the requirement in section 4 - to "keep intact all notices". -- c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. -- d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - -A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -### 6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of -sections 4 and 5, provided that you also convey the machine-readable -Corresponding Source under the terms of this License, in one of these -ways: - -- a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. -- b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the Corresponding - Source from a network server at no charge. -- c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. -- d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. -- e) Convey the object code using peer-to-peer transmission, - provided you inform other peers where the object code and - Corresponding Source of the work are being offered to the general - public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - -A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, -family, or household purposes, or (2) anything designed or sold for -incorporation into a dwelling. In determining whether a product is a -consumer product, doubtful cases shall be resolved in favor of -coverage. For a particular product received by a particular user, -"normally used" refers to a typical or common use of that class of -product, regardless of the status of the particular user or of the way -in which the particular user actually uses, or expects or is expected -to use, the product. A product is a consumer product regardless of -whether the product has substantial commercial, industrial or -non-consumer uses, unless such uses represent the only significant -mode of use of the product. - -"Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to -install and execute modified versions of a covered work in that User -Product from a modified version of its Corresponding Source. The -information must suffice to ensure that the continued functioning of -the modified object code is in no case prevented or interfered with -solely because modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or -updates for a work that has been modified or installed by the -recipient, or for the User Product in which it has been modified or -installed. Access to a network may be denied when the modification -itself materially and adversely affects the operation of the network -or violates the rules and protocols for communication across the -network. - -Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - -### 7. Additional Terms. - -"Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders -of that material) supplement the terms of this License with terms: - -- a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or -- b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or -- c) Prohibiting misrepresentation of the origin of that material, - or requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or -- d) Limiting the use for publicity purposes of names of licensors - or authors of the material; or -- e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or -- f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions - of it) with contractual assumptions of liability to the recipient, - for any liability that these contractual assumptions directly - impose on those licensors and authors. - -All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; the -above requirements apply either way. - -### 8. Termination. - -You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - -However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - -### 9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run -a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -### 10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - -An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - -### 11. Patents. - -A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - -A contributor's "essential patent claims" are all patent claims owned -or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - -In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - -If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - -A patent license is "discriminatory" if it does not include within the -scope of its coverage, prohibits the exercise of, or is conditioned on -the non-exercise of one or more of the rights that are specifically -granted under this License. You may not convey a covered work if you -are a party to an arrangement with a third party that is in the -business of distributing software, under which you make payment to the -third party based on the extent of your activity of conveying the -work, and under which the third party grants, to any of the parties -who would receive the covered work from you, a discriminatory patent -license (a) in connection with copies of the covered work conveyed by -you (or copies made from those copies), or (b) primarily for and in -connection with specific products or compilations that contain the -covered work, unless you entered into that arrangement, or that patent -license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - -### 12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under -this License and any other pertinent obligations, then as a -consequence you may not convey it at all. For example, if you agree to -terms that obligate you to collect a royalty for further conveying -from those to whom you convey the Program, the only way you could -satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -### 13. Remote Network Interaction; Use with the GNU General Public License. - -Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your -version supports such interaction) an opportunity to receive the -Corresponding Source of your version by providing access to the -Corresponding Source from a network server at no charge, through some -standard or customary means of facilitating copying of software. This -Corresponding Source shall include the Corresponding Source for any -work covered by version 3 of the GNU General Public License that is -incorporated pursuant to the following paragraph. - -Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions -of the GNU Affero General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever -published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions -of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - -Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - -### 15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE -DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -### 16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR -CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT -NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR -LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER -PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -### 17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -## How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - -To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively state -the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper -mail. - -If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for -the specific requirements. - -You should also get your employer (if you work as a programmer) or -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. For more information on this, and how to apply and follow -the GNU AGPL, see . diff --git a/NAMESPACE b/NAMESPACE deleted file mode 100644 index 8b8838b1..00000000 --- a/NAMESPACE +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by roxygen2: do not edit by hand - -S3method(print,lmtp) -S3method(print,lmtp_contrast) -S3method(tidy,lmtp) -export(create_node_list) -export(event_locf) -export(ipsi) -export(lmtp_contrast) -export(lmtp_ipw) -export(lmtp_sdr) -export(lmtp_sub) -export(lmtp_tmle) -export(static_binary_off) -export(static_binary_on) -export(tidy) -importFrom(R6,R6Class) -importFrom(data.table,.SD) -importFrom(data.table,`:=`) -importFrom(data.table,as.data.table) -importFrom(generics,tidy) -importFrom(nnls,nnls) -importFrom(stats,as.formula) -importFrom(stats,binomial) -importFrom(stats,coef) -importFrom(stats,gaussian) -importFrom(stats,glm) -importFrom(stats,na.omit) -importFrom(stats,plogis) -importFrom(stats,pnorm) -importFrom(stats,predict) -importFrom(stats,qlogis) -importFrom(stats,qnorm) -importFrom(stats,quantile) -importFrom(stats,runif) -importFrom(stats,sd) -importFrom(stats,var) -importFrom(stats,weighted.mean) diff --git a/NEWS.md b/NEWS.md deleted file mode 100644 index 19f3b96b..00000000 --- a/NEWS.md +++ /dev/null @@ -1,161 +0,0 @@ -# lmtp 1.4.0 - -### New Features - -- Can now estimate the effects of simultaneous interventions on multiple variables. -- New pre-packaged shift function, `ipsi()` for estimating IPSI effects using the risk ratio. - -### Buf Fixes - -### General - -# lmtp 1.3.3 - -### New Features - -### Bug Fixes - -- Fixed a bug where estimators return incorrect parameter estimates for a specific DGP (see issue \#130) - -### General - -# lmtp 1.3.2 - -### New Features - -### Bug Fixes - -- Fixed bug in calculation of EIF where density ratios were not non-cumulative product ratios. Previous variance estimates starting with version 1.0 were incorrect. Point-estimates remain unaffected. - -### General - -- Updating citations - -# lmtp 1.3.1 - -### New Features - -- Added parameter `.return_full_fits`. Allows the user to decide if full SuperLearner fit should be returned (issue \#119). -- `intervention_type` argument replaced with `mtp`. - -### Bug Fixes - -- Added a check for `fits$id` being `NULL`. Fixes a backwards compatibility bug (issue \#117). -- `data.table` version must be 1.13.0 or later. This was when the function `fcase` was released (issue \#122). - -### General - -- Changed 'effect' to 'estimate' in 'Population mean effects' portion of output (issue \#120). - -# lmtp 1.3.0 - -### New Features - -### Bug Fixes - -### General - -- Major internal refactor. Argument checking is now performed using *checkmate* package. -- `.SL_folds` argument split into `.learners_outcome_folds` and `.learners_trt_folds`. - -# lmtp 1.1.0 - -### New Features - -### Bug Fixes - -- Corrected standard errors when providing `id` with `lmtp_contrast` (issue \#110). - -### General - -- Removed the requirement that `folds` must be greater than 1 (issue \#112). - -# lmtp 1.0.0 - -### New Features - -- New `shifted` parameter for directly passing shifted data instead of using a shift function (issue \#89). -- New `intervention_type` parameter required for specifying if the intervention of interest is a static regime, a dynamic regime, or a modified treatment policy (issue \#94). -- `return_all_ratios` removed as an argument. Returned density ratios are now non-cumulative product ratios. - -### Bug Fixes - -- Density ratio trimming now occurs in the same spot for all estimators and is only performed on non-cumulative product ratios (issue #\93). -- Fixed issue where `lmtp_tmle` and `lmtp_sdr` weren't using validation set density ratios. -- No longer fails when `data` is a `data.table` (issue \#88). - -### General - -- Removing extra column in `sim_point_surv` data set (issue \#91). -- Paper citation updated with release in JASA (issue \#103). - -# lmtp 0.9.1 - -### Bug Fixes - -- Fixed a bug that caused failure when knitting the `getting-started.Rmd` vignette when using new version of the *future* package (issue \#100). - -### General - -- GitHub links added to DESCRIPTION (issue \# 99). - -### Bug Fixes - -- Fixed a bug that caused failure when no variation existed in the outcome at a type point (issue \#92). -- No longer fails when `data` is a `data.table` (issue \#88). - -### General - -- Removing extra column in `sim_point_surv` data set (issue \#91). - -# lmtp 0.9.0 - -### New Features - -- New `weights` parameter for observation sampling weights (issue \#78). - -- For time-to-event analysis, survival probability is now estimated instead of the cumulative incidence. This fixes a bug with IPW and survival problems. - -- Outcome type now accepts `"survival"` for explicit indication of a survival outcome (issue \#76). Because of this `lmtp_ipw()` now requires setting the outcome type. - -- New `.trimming` parameter for trimming extreme density ratios. - -- New `.SL_folds` parameter that controls the splits used for fitting the SuperLearner (issue \#84). - -- New `.return_all_ratios` parameter that allows for returning non-cumulative product density ratios to the user. - -- `bound` parameter renamed to `.bound`. - -### Bug Fixes - -- Fixed a bug that caused the final estimate to be incorrectly estimated with SDR (issue \#87). - -- Fixed a bug that outputted outcome regressions and density ratios in incorrect order compared to the original data. - -- Fixed a bug in the missing data check that threw an error for missing data after an observation experiences the outcome. - -- Fixed a bug in the calculation of standard errors when the `id` parameter is specified. - -- Fixed a bug that resulted in `NA` censoring indicators throwing an error for missing data. - -- Fixed a bug about `values()` being deprecated in the **future** package (issue \#82). - -- Fixed a warning from the **future** package regarding random number generation (issue \#81). - -- Fixed `create_node_list()` returns description (issue \#77). - -### Dependencies - -- **slider** dependency removed. - -- **data.table** added as a dependency. - -### General - -- `event_locf()` speed greatly improved (issue \#80). - -- Migrated continuous integration from Travis-CI to GitHub Actions. - -- Added a `NEWS.md` file to track changes to the package. - -- License change to GPL-3. diff --git a/R/checks.R b/R/checks.R deleted file mode 100644 index be50deaf..00000000 --- a/R/checks.R +++ /dev/null @@ -1,173 +0,0 @@ -check_lmtp_data <- function(x, trt, outcome, baseline, time_vary, cens, id) { - for (t in 1:determine_tau(outcome, trt)) { - ci <- censored(x, cens, t)$j - di <- at_risk(x, risk_indicators(outcome), t, TRUE) - if (length(trt) > 1) { - trt_t <- trt[[t]] - } else { - trt_t <- trt[[1]] - } - data_t <- x[ci & di, c(trt_t, baseline, unlist(time_vary[t])), drop = FALSE] - - if (any(is.na(data_t))) { - return("Missing data found in treatment and/or covariate nodes for uncensored observations") - } - } - - TRUE -} - -assertLmtpData <- checkmate::makeAssertionFunction(check_lmtp_data) - -assert_trt <- function(trt, tau) { - is_list <- is.list(trt) - if (!isTRUE(is_list)) { - return(assertTrtCharacter(trt, tau)) - } - assertTrtList(trt, tau) -} - -check_trt_character <- function(trt, tau) { - is_character <- checkmate::check_character(trt) - if (!isTRUE(is_character)) { - return(is_character) - } - - if (length(trt) != 1 && length(trt) != tau) { - return(paste0("'trt' should be of length 1 or ", tau)) - } - - TRUE -} - -assertTrtCharacter <- checkmate::makeAssertionFunction(check_trt_character) - -check_trt_list <- function(trt, tau) { - is_list <- checkmate::check_list(trt) - if (!isTRUE(is_list)) { - return(is_list) - } - - if (length(trt) != 1 && length(trt) != tau) { - return(paste0("'trt' should be of length 1 or ", tau)) - } - - TRUE -} - -assertTrtList <- checkmate::makeAssertionFunction(check_trt_list) - -check_reserved_names <- function(x) { - bad_names <- c("lmtp_id", "tmp_lmtp_stack_indicator", "tmp_lmtp_scaled_outcome") %in% names(x) - if (!any(bad_names)) { - return(TRUE) - } - "'lmtp_id', 'tmp_lmtp_stack_indicator', and 'tmp_lmtp_scaled_outcome' are reserved variable names" -} - -assertReservedNames <- checkmate::makeAssertionFunction(check_reserved_names) - -check_shifted_data <- function(x, natural, doesnt_change, cens, null.ok = TRUE) { - if (is.null(x)) { - if (null.ok) - return(TRUE) - return("Can't be 'NULL'") - } - - if (!(identical(natural[doesnt_change], x[doesnt_change]))) { - return("The only columns that can be different between `data` and `shifted` are those indicated in `trt` and `cens`") - } - - if (is.null(cens)) { - return(TRUE) - } - - if (!all(x[cens] == 1)) { - return("Censoring variables should be 1 in 'shifted'") - } - - TRUE -} - -assertShiftedData <- checkmate::makeAssertionFunction(check_shifted_data) - -check_not_data_table <- function(x) { - is_data_frame <- checkmate::checkDataFrame(x) - if (!isTRUE(is_data_frame)) { - return(is_data_frame) - } - - is_data_table <- data.table::is.data.table(x) - if (is_data_table) { - return("Must be a 'data.frame', not a 'data.table'") - } - TRUE -} - -assert_not_data_table <- assertNotDataTable <- checkmate::makeAssertionFunction(check_not_data_table) - -check_outcome_types <- function(x, outcomes, outcome_type) { - x <- x[, outcomes, drop = FALSE] - all_numeric <- checkmate::testDataFrame(x, types = "numeric") - if (!all_numeric) { - return("Outcome variables must be of type numeric") - } - - if (outcome_type %in% c("binomial", "survival")) { - vals <- lapply(outcomes, function(var) as.character(unique(na.omit(x[[var]])))) - all_binary <- all(unlist(vals) %in% c("0", "1")) - - if (!isTRUE(all_binary)) - return("Only 0 and 1 allowed in outcome variables if 'outcome_type' set to binomial or survival") - } - TRUE -} - -assertOutcomeTypes <- checkmate::makeAssertionFunction(check_outcome_types) - -check_contrast_type <- function(x, fits) { - if (x == "additive") { - return(TRUE) - } - - all_binom <- all(lapply(fits, function(x) x[["outcome_type"]]) == "binomial") - if (!all_binom) { - return(paste0("'", x, "' specified but one or more outcome types are not 'binomial' or 'survival'")) - } - - TRUE -} - -assertContrastType <- checkmate::makeAssertionFunction(check_contrast_type) - -check_lmtp_list <- function(x) { - all_lmtp <- all(unlist(lapply(x, is.lmtp))) - if (!all_lmtp) { - return("Objects must be of type 'lmtp'") - } - TRUE -} - -assertLmtpList <- checkmate::makeAssertionFunction(check_lmtp_list) - -check_dr <- function(x) { - all_dr <- all(lapply(x, function(x) x[["estimator"]]) %in% c("TMLE", "SDR")) - if (!all_dr) { - return("Contrasts not implemented for substitution/IPW estimators") - } - TRUE -} - -assertDr <- checkmate::makeAssertionFunction(check_dr) - -check_ref_class <- function(x) { - if (!is.lmtp(x)) { - is_num <- checkmate::check_number(x) - if (!isTRUE(is_num)) { - return("Must either be a single numeric value or another lmtp object") - } - } - TRUE -} - -assertRefClass <- checkmate::makeAssertionFunction(check_ref_class) diff --git a/R/contrasts.R b/R/contrasts.R deleted file mode 100644 index 330d4fcb..00000000 --- a/R/contrasts.R +++ /dev/null @@ -1,184 +0,0 @@ -#' Perform Contrasts of LMTP Fits -#' -#' Estimates contrasts of multiple LMTP fits compared to either a known reference value -#' or a reference LMTP fit. -#' -#' @param ... One or more objects of class lmtp. -#' @param ref A reference value or another lmtp fit to compare all other fits against. -#' @param type The contrasts of interest. Options are "additive" (the default), -#' "rr", and "or". -#' -#' @return A list of class \code{lmtp_contrast} containing the following components: -#' -#' \item{type}{The type of contrast performed.} -#' \item{null}{The null hypothesis.} -#' \item{vals}{A dataframe containing the contrasts estimates, standard errors, and confidence intervals.} -#' \item{eifs}{Un-centered estimated influence functions for contrasts estimated.} -#' @export -#' -#' @example inst/examples/contrasts-ex.R -lmtp_contrast <- function(..., ref, type = c("additive", "rr", "or")) { - fits <- list(...) - - assertLmtpList(fits) - assertDr(fits) - assertRefClass(ref) - assertContrastType(match.arg(type), fits, .var.name = "type") - - if (is.numeric(ref)) { - type <- "additive" - message("Non-estimated reference value, defaulting type = 'additive'") - } else { - type <- match.arg(type) - } - - switch(type, - "additive" = contrast_additive(fits = fits, ref = ref), - "rr" = contrast_rr(fits = fits, ref = ref), - "or" = contrast_or(fits = fits, ref = ref)) -} - -contrast_additive <- function(fits, ref) { - res <- lapply(fits, function(x) contrast_additive_single(x, ref)) - vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) - eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) - - out <- list( - type = "additive", - null = 0, - vals = vals, - eifs = eifs - ) - class(out) <- "lmtp_contrast" - return(out) -} - -contrast_additive_single <- function(fit, ref) { - if (is.lmtp(ref)) { - theta <- fit$theta - ref$theta - eif <- fit$eif - ref$eif - } - - if (isFALSE(is.lmtp(ref))) { - theta <- fit$theta - ref - eif <- fit$eif - } - - if (is.null(fit$id)) { - fit$id <- 1:length(eif) - } - - clusters <- split(eif, fit$id) - j <- length(clusters) - std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) - conf.low <- theta - qnorm(0.975) * std.error - conf.high <- theta + qnorm(0.975) * std.error - p.value <- pnorm(abs(theta) / std.error, lower.tail = FALSE) * 2 - - list( - vals = data.frame( - theta = theta, - shift = fit$theta, - ref = ifelse(is.lmtp(ref), ref$theta, ref), - std.error = std.error, - conf.low = conf.low, - conf.high = conf.high, - p.value = p.value - ), - eif = eif - ) -} - -contrast_rr <- function(fits, ref) { - res <- lapply(fits, function(x) contrast_rr_single(x, ref)) - vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) - eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) - - out <- list( - type = "relative risk", - null = 1, - vals = vals, - eifs = eifs - ) - - class(out) <- "lmtp_contrast" - return(out) -} - -contrast_rr_single <- function(fit, ref) { - theta <- fit$theta / ref$theta - log_eif <- (fit$eif / fit$theta) - (ref$eif / ref$theta) - - if (is.null(fit$id)) { - fit$id <- 1:length(eif) - } - - clusters <- split(log_eif, fit$id) - j <- length(clusters) - std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) - conf.low <- exp(log(theta) - qnorm(0.975) * std.error) - conf.high <- exp(log(theta) + qnorm(0.975) * std.error) - p.value <- pnorm(abs(log(theta)) / std.error, lower.tail = FALSE) * 2 - - list( - vals = data.frame( - theta = theta, - shift = fit$theta, - ref = ref$theta, - std.error = std.error, - conf.low = conf.low, - conf.high = conf.high, - p.value = p.value - ), - eif = log_eif - ) -} - -contrast_or <- function(fits, ref) { - res <- lapply(fits, function(x) contrast_or_single(x, ref)) - vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) - eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) - - out <- list( - type = "odds ratio", - null = 1, - vals = vals, - eifs = eifs - ) - class(out) <- "lmtp_contrast" - out -} - -contrast_or_single <- function(fit, ref) { - theta <- (fit$theta / (1 - fit$theta)) / (ref$theta / (1 - ref$theta)) - log_eif <- (fit$eif / (fit$theta * (1 - fit$theta))) - (ref$eif / (ref$theta * (1 - ref$theta))) - - if (is.null(fit$id)) { - fit$id <- 1:length(eif) - } - - clusters <- split(log_eif, fit$id) - j <- length(clusters) - std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) - conf.low <- exp(log(theta) - qnorm(0.975) * std.error) - conf.high <- exp(log(theta) + qnorm(0.975) * std.error) - p.value <- pnorm(abs(log(theta)) / std.error, lower.tail = FALSE) * 2 - - list( - vals = data.frame( - theta = theta, - shift = fit$theta, - ref = ref$theta, - std.error = std.error, - conf.low = conf.low, - conf.high = conf.high, - p.value = p.value - ), - eif = log_eif - ) -} - -no_stderr_warning <- function(estimator) { - cat("\n") - cli::cli_alert_warning("Standard errors aren't provided for the {estimator} estimator.") -} diff --git a/R/data.R b/R/data.R deleted file mode 100644 index cd7fb70c..00000000 --- a/R/data.R +++ /dev/null @@ -1,100 +0,0 @@ -#' Simulated Longitudinal Data -#' -#' A dataset with a binary outcome, four time varying treatment nodes, -#' and four time varying covariates. -#' -#' @format A data frame with 5000 rows and 10 variables: -#' \describe{ -#' \item{ID}{observation ID} -#' \item{L_1}{Time varying covariate time 1} -#' \item{A_1}{Treatment node at time 1, effected by L_1} -#' \item{L_2}{Time varying covariate time 1, effected by L_1 and A_1} -#' \item{A_2}{Treatment node at time 2, effected by L_2 and A_1} -#' \item{L_3}{Time varying covariate time 1, effected by L_2 and A_2} -#' \item{A_3}{Treatment node at time 3, effected by L_3 and A_2} -#' \item{L_4}{Time varying covariate time 1, effected by L_3 and A_3} -#' \item{A_4}{Treatment node at time 3, effected by L_4 and A_3} -#' \item{Y}{Binary outcome at time 5, effected by L_4 and A_4} -#' } -"sim_t4" - -#' Simulated Longitudinal Data With Censoring -#' -#' A dataset with a binary outcome, two time varying treatment nodes, -#' two time varying covariates, and two censoring indicators. -#' -#' @format A data frame with 1000 rows and 10 variables: -#' \describe{ -#' \item{L1}{Time varying covariate time 1} -#' \item{A1}{Treatment node at time 1, effected by L_1} -#' \item{C1}{Censoring indicator that the observation is observed after time 1} -#' \item{L2}{Time varying covariate at time 2, effected by L_1 and A_1} -#' \item{A2}{Treatment node at time 2, effected by L_2 and A_1} -#' \item{C2}{Censoring indicator that the observation is observed after time 2} -#' \item{Y}{Binary outcome at time 3, effected by L_2 and A_2} -#' } -"sim_cens" - -#' Simulated Point-treatment Survival Data -#' -#' A dataset with a time-to-event outcome, two baseline nodes, a binary -#' point treatment, six past-time outcome nodes, and six censoring indicators. -#' -#' @format A data frame with 2000 rows and 16 variables: -#' \describe{ -#' \item{W1}{Binary baseline variable.} -#' \item{W2}{Categorical baseline variable.} -#' \item{trt}{Binary treatment variable.} -#' \item{C.0}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.1}{Outcome node at time 1.} -#' \item{C.1}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.2}{Outcome node at time 2.} -#' \item{C.2}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.3}{Outcome node at time 3.} -#' \item{C.3}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.4}{Outcome node at time 4.} -#' \item{C.4}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.5}{Outcome node at time 5.} -#' \item{C.5}{Censoring indicator that the observation is observed future time points.} -#' \item{Y.6}{Final outcome node.} -#' } -"sim_point_surv" - -#' Simulated Time-varying Survival Data -#' -#' A dataset with a time-to-event outcome, one baseline nodes, two time-varying -#' covariates, a binary time-varying treatment, two outcome nodes, -#' and two censoring indicators. Data-generating mechanism taken from -#' Lendle, Schwab, Petersen, and van der Laan (). -#' -#' @format A data frame with 500 rows and 11 variables: -#' \describe{ -#' \item{L0.a}{Continuous baseline variable.} -#' \item{L0.b}{Time varying covariate at baseline.} -#' \item{L0.c}{Time varying covariate at baseline.} -#' \item{A0}{Treatment variable at baseline} -#' \item{C0}{Censoring indicator that the observation is observed future time points.} -#' \item{L1.a}{Time varying covariate at time 1.} -#' \item{L1.b}{Time varying covariate at time 1.} -#' \item{Y1}{Outcome node at time 1.} -#' \item{A1}{Treatment variable at time 1.} -#' \item{C1}{Censoring indicator that the observation is observed future time points.} -#' \item{Y2}{Final outcome node.} -#' } -"sim_timevary_surv" - -#' Simulated Multivariate Exposure Data -#' -#' A dataset with a continuous outcome, three baseline covariates, -#' and two treatment variables. -#' -#' @format A data frame with 2000 rows and 6 variables: -#' \describe{ -#' \item{C1}{Continuous baseline variable.} -#' \item{C2}{Continuous baseline variable.} -#' \item{C3}{Continuous baseline variable.} -#' \item{D1}{Treatment variable one at baseline.} -#' \item{D2}{Treatment variable two at baseline.} -#' \item{Y}{Continuous outcome} -#' } -"multivariate_data" diff --git a/R/density_ratios.R b/R/density_ratios.R deleted file mode 100644 index 344dbcdb..00000000 --- a/R/density_ratios.R +++ /dev/null @@ -1,90 +0,0 @@ -cf_r <- function(Task, learners, mtp, lrnr_folds, trim, full_fits, pb) { - fopts <- options("lmtp.bound", "lmtp.trt.length") - - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { - out[[fold]] <- future::future({ - options(fopts) - - estimate_r( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted, Task$folds, fold), - Task$trt, Task$cens, Task$risk, Task$tau, Task$node_list$trt, - learners, pb, mtp, lrnr_folds, full_fits - ) - }, - seed = TRUE) - } - - trim_ratios(recombine_ratios(future::value(out), Task$folds), trim) -} - -estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, lrnr_folds, full_fits) { - densratios <- matrix(nrow = nrow(natural$valid), ncol = tau) - fits <- vector("list", length = tau) - - for (t in 1:tau) { - jrt <- rep(censored(natural$train, cens, t)$j, 2) - drt <- rep(at_risk(natural$train, risk, t), 2) - irv <- censored(natural$valid, cens, t)$i - jrv <- censored(natural$valid, cens, t)$j - drv <- at_risk(natural$valid, risk, t) - - if (length(trt) > 1) { - trt_t <- trt[[t]] - } else { - trt_t <- trt[[1]] - } - - frv <- followed_rule(natural$valid[, trt_t], shifted$valid[, trt_t], mtp) - - vars <- c(node_list[[t]], cens[[t]]) - stacked <- stack_data(natural$train, shifted$train, trt, cens, t) - - fit <- run_ensemble( - stacked[jrt & drt, ][["tmp_lmtp_stack_indicator"]], - stacked[jrt & drt, vars], - learners, - "binomial", - stacked[jrt & drt, ]$lmtp_id, - lrnr_folds - ) - - if (full_fits) { - fits[[t]] <- fit - } else { - fits[[t]] <- extract_sl_weights(fit) - } - - pred <- matrix(-999L, nrow = nrow(natural$valid), ncol = 1) - pred[jrv & drv, ] <- bound(SL_predict(fit, natural$valid[jrv & drv, vars]), .Machine$double.eps) - - ratios <- density_ratios(pred, irv, drv, frv, mtp) - densratios[, t] <- ratios - - pb() - } - - list(ratios = densratios, fits = fits) -} - -stack_data <- function(natural, shifted, trt, cens, tau) { - shifted_half <- natural - - if (length(trt) > 1 || tau == 1) { - shifted_half[, trt[[tau]]] <- shifted[, trt[[tau]]] - } - - if (!is.null(cens)) { - shifted_half[[cens[tau]]] <- shifted[[cens[tau]]] - } - - out <- rbind(natural, shifted_half) - out[["tmp_lmtp_stack_indicator"]] <- rep(c(0, 1), each = nrow(natural)) - out -} - -density_ratios <- function(pred, cens, risk, followed, mtp) { - pred <- ifelse(followed & isFALSE(mtp), pmax(pred, 0.5), pred) - (pred * cens * risk * followed) / (1 - pmin(pred, 0.999)) -} diff --git a/R/estimators.R b/R/estimators.R deleted file mode 100644 index 9ee40e26..00000000 --- a/R/estimators.R +++ /dev/null @@ -1,681 +0,0 @@ -#' LMTP Targeted Maximum Likelihood Estimator -#' -#' Targeted maximum likelihood estimator for the effects of traditional causal effects and -#' modified treatment policies for both point treatment and longitudinal data with binary, -#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -#' -#' @param data \[\code{data.frame}\]\cr -#' A \code{data.frame} in wide format containing all necessary variables -#' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\] or \[\code{list}\]\cr -#' A vector containing the column names of treatment variables ordered by time. -#' Or, a list of vectors, the same length as the number of time points of observation. -#' Vectors should contain column names for the treatment variables at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param outcome \[\code{character}\]\cr -#' The column name of the outcome variable. In the case of time-to-event -#' analysis, a vector containing the columns names of intermediate outcome variables and the final -#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type -#' is binary, data should be coded as 0 and 1. -#' @param baseline \[\code{character}\]\cr -#' An optional vector containing the column names of baseline covariates to be -#' included for adjustment at every time point. -#' @param time_vary \[\code{list}\]\cr -#' A list the same length as the number of time points of observation with -#' the column names for new time-varying covariates introduced at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param cens \[\code{character}\]\cr -#' An optional vector of column names of censoring indicators the same -#' length as the number of time points of observation. If missingness in the outcome is -#' present or if time-to-event outcome, must be provided. -#' @param shift \[\code{closure}\]\cr -#' A two argument function that specifies how treatment variables should be shifted. -#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. -#' @param shifted \[\code{data.frame}\]\cr -#' An optional data frame, the same as in \code{data}, but modified according -#' to the treatment policy of interest. If specified, \code{shift} is ignored. -#' @param k \[\code{integer(1)}\]\cr -#' An integer specifying how previous time points should be -#' used for estimation at the given time point. Default is \code{Inf}, -#' all time points. -#' @param mtp \[\code{logical(1)}\]\cr -#' Is the intervention of interest a modified treatment policy? -#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. -#' @param outcome_type \[\code{character(1)}\]\cr -#' Outcome variable type (i.e., continuous, binomial, survival). -#' @param id \[\code{character(1)}\]\cr -#' An optional column name containing cluster level identifiers. -#' @param bounds \[\code{numeric(2)}\]\cr -#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -#' the bounds will be taken as the minimum and maximum of the observed data. -#' Should be left as \code{NULL} if the outcome type is binary. -#' @param learners_outcome \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. -#' @param learners_trt \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -#' \bold{Only include candidate learners capable of binary classification}. -#' @param folds \[\code{integer(1)}\]\cr -#' The number of folds to be used for cross-fitting. -#' @param weights \[\code{numeric(nrow(data))}\]\cr -#' An optional vector containing sampling weights. -#' @param .bound \[\code{numeric(1)}\]\cr -#' Determines that maximum and minimum values (scaled) predictions -#' will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999. -#' @param .trim \[\code{numeric(1)}\]\cr -#' Determines the amount the density ratios should be trimmed. -#' The default is 0.999, trimming the density ratios greater than the 0.999 percentile -#' to the 0.999 percentile. A value of 1 indicates no trimming. -#' @param .learners_outcome_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners_outcome}. -#' @param .learners_trt_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners_trt}. -#' @param .return_full_fits \[\code{logical(1)}\]\cr -#' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' -#' @details -#' ## Should \code{mtp = TRUE}? -#' A modified treatment policy (MTP) is an intervention that depends -#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). -#' This differs from other causal effects, -#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -#' by some amount, use \code{mtp = TRUE}}. -#' -#' @return A list of class \code{lmtp} containing the following components: -#' -#' \item{estimator}{The estimator used, in this case "TMLE".} -#' \item{theta}{The estimated population LMTP effect.} -#' \item{standard_error}{The estimated standard error of the LMTP effect.} -#' \item{low}{Lower bound of the 95% confidence interval of the LMTP effect.} -#' \item{high}{Upper bound of the 95% confidence interval of the LMTP effect.} -#' \item{eif}{The estimated, un-centered, influence function of the estimate.} -#' \item{shift}{The shift function specifying the treatment policy of interest.} -#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -#' The mean of the first column is used for calculating theta.} -#' \item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} -#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold for the outcome regression.} -#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold of density ratio estimation.} -#' \item{outcome_type}{The outcome variable type.} -#' -#' @example inst/examples/tmle-ex.R -#' @export -lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, - cens = NULL, shift = NULL, shifted = NULL, k = Inf, - mtp = FALSE, outcome_type = c("binomial", "continuous", "survival"), - # intervention_type = c("static", "dynamic", "mtp"), - id = NULL, bounds = NULL, - learners_outcome = "SL.glm", - learners_trt = "SL.glm", - folds = 10, weights = NULL, .bound = 1e-5, .trim = 0.999, - .learners_outcome_folds = 10, .learners_trt_folds = 10, - .return_full_fits = FALSE, ...) { - - assertNotDataTable(data) - checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, - min.len = if (match.arg(outcome_type) == "survival") 2) - checkmate::assertCharacter(baseline, null.ok = TRUE) - - tau <- determine_tau(outcome, trt) - - assert_trt(trt, tau) - checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) - checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) - checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) - assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) - assertOutcomeTypes(data, outcome, match.arg(outcome_type)) - assertReservedNames(data) - checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) - assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) - checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) - checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) - checkmate::assertNumber(k, lower = 0, upper = Inf) - checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) - checkmate::assertNumber(.learners_outcome_folds, null.ok = TRUE) - checkmate::assertNumber(.learners_trt_folds, null.ok = TRUE) - checkmate::assertNumber(.bound) - checkmate::assertNumber(.trim, upper = 1) - checkmate::assertLogical(.return_full_fits, len = 1) - - Task <- lmtp_Task$new( - data = data, - trt = trt, - outcome = outcome, - time_vary = time_vary, - baseline = baseline, - cens = cens, - k = k, - shift = shift, - shifted = shifted, - id = id, - outcome_type = match.arg(outcome_type), - V = folds, - weights = weights, - bounds = bounds, - bound = .bound - ) - - pb <- progressr::progressor(Task$tau*folds*2) - - ratios <- cf_r(Task, learners_trt, mtp, .learners_trt_folds, .trim, .return_full_fits, pb) - estims <- cf_tmle(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, .learners_outcome_folds, .return_full_fits, pb) - - theta_dr( - list( - estimator = "TMLE", - m = list(natural = estims$natural, shifted = estims$shifted), - r = ratios$ratios, - tau = Task$tau, - folds = Task$folds, - id = Task$id, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - weights = Task$weights, - shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, - fits_m = estims$fits, - fits_r = ratios$fits, - outcome_type = Task$outcome_type - ), - FALSE - ) -} - -#' LMTP Sequential Doubly Robust Estimator -#' -#' Sequentially doubly robust estimator for the effects of traditional causal effects and -#' modified treatment policies for both point treatment and longitudinal data with binary, -#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -#' -#' @param data \[\code{data.frame}\]\cr -#' A \code{data.frame} in wide format containing all necessary variables -#' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\] or \[\code{list}\]\cr -#' A vector containing the column names of treatment variables ordered by time. -#' Or, a list of vectors, the same length as the number of time points of observation. -#' Vectors should contain column names for the treatment variables at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param outcome \[\code{character}\]\cr -#' The column name of the outcome variable. In the case of time-to-event -#' analysis, a vector containing the columns names of intermediate outcome variables and the final -#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type -#' is binary, data should be coded as 0 and 1. -#' @param baseline \[\code{character}\]\cr -#' An optional vector containing the column names of baseline covariates to be -#' included for adjustment at every time point. -#' @param time_vary \[\code{list}\]\cr -#' A list the same length as the number of time points of observation with -#' the column names for new time-varying covariates introduced at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param cens \[\code{character}\]\cr -#' An optional vector of column names of censoring indicators the same -#' length as the number of time points of observation. If missingness in the outcome is -#' present or if time-to-event outcome, must be provided. -#' @param shift \[\code{closure}\]\cr -#' A two argument function that specifies how treatment variables should be shifted. -#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. -#' @param shifted \[\code{data.frame}\]\cr -#' An optional data frame, the same as in \code{data}, but modified according -#' to the treatment policy of interest. If specified, \code{shift} is ignored. -#' @param k \[\code{integer(1)}\]\cr -#' An integer specifying how previous time points should be -#' used for estimation at the given time point. Default is \code{Inf}, -#' all time points. -#' @param mtp \[\code{logical(1)}\]\cr -#' Is the intervention of interest a modified treatment policy? -#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. -#' @param outcome_type \[\code{character(1)}\]\cr -#' Outcome variable type (i.e., continuous, binomial, survival). -#' @param id \[\code{character(1)}\]\cr -#' An optional column name containing cluster level identifiers. -#' @param bounds \[\code{numeric(2)}\]\cr -#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -#' the bounds will be taken as the minimum and maximum of the observed data. -#' Should be left as \code{NULL} if the outcome type is binary. -#' @param learners_outcome \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. -#' @param learners_trt \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -#' \bold{Only include candidate learners capable of binary classification}. -#' @param folds \[\code{integer(1)}\]\cr -#' The number of folds to be used for cross-fitting. -#' @param weights \[\code{numeric(nrow(data))}\]\cr -#' An optional vector containing sampling weights. -#' @param .bound \[\code{numeric(1)}\]\cr -#' Determines that maximum and minimum values (scaled) predictions -#' will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999. -#' @param .trim \[\code{numeric(1)}\]\cr -#' Determines the amount the density ratios should be trimmed. -#' The default is 0.999, trimming the density ratios greater than the 0.999 percentile -#' to the 0.999 percentile. A value of 1 indicates no trimming. -#' @param .learners_outcome_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners_outcome}. -#' @param .learners_trt_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners_trt}. -#' @param .return_full_fits \[\code{logical(1)}\]\cr -#' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' -#' @details -#' ## Should \code{mtp = TRUE}? -#' A modified treatment policy (MTP) is an intervention that depends -#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). -#' This differs from other causal effects, -#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -#' by some amount, use \code{mtp = TRUE}}. -#' -#' @return A list of class \code{lmtp} containing the following components: -#' -#' \item{estimator}{The estimator used, in this case "SDR".} -#' \item{theta}{The estimated population LMTP effect.} -#' \item{standard_error}{The estimated standard error of the LMTP effect.} -#' \item{low}{Lower bound of the 95% confidence interval of the LMTP effect.} -#' \item{high}{Upper bound of the 95% confidence interval of the LMTP effect.} -#' \item{eif}{The estimated, un-centered, influence function of the estimate.} -#' \item{shift}{The shift function specifying the treatment policy of interest.} -#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -#' The mean of the first column is used for calculating theta.} -#' \item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} -#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold for the outcome regression.} -#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold of density ratio estimation.} -#' \item{outcome_type}{The outcome variable type.} -#' -#' @example inst/examples/sdr-ex.R -#' @export -lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, - cens = NULL, shift = NULL, shifted = NULL, k = Inf, - mtp = FALSE, - # intervention_type = c("static", "dynamic", "mtp"), - outcome_type = c("binomial", "continuous", "survival"), - id = NULL, bounds = NULL, - learners_outcome = "SL.glm", - learners_trt = "SL.glm", - folds = 10, weights = NULL, .bound = 1e-5, .trim = 0.999, - .learners_outcome_folds = 10, .learners_trt_folds = 10, - .return_full_fits = FALSE, ...) { - - assertNotDataTable(data) - checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, - min.len = if (match.arg(outcome_type) == "survival") 2) - checkmate::assertCharacter(baseline, null.ok = TRUE) - - tau <- determine_tau(outcome, trt) - - assert_trt(trt, tau) - checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) - checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) - checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) - assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) - assertOutcomeTypes(data, outcome, match.arg(outcome_type)) - assertReservedNames(data) - checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) - assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) - checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) - checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) - checkmate::assertNumber(k, lower = 0, upper = Inf) - checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) - checkmate::assertNumber(.learners_outcome_folds, null.ok = TRUE) - checkmate::assertNumber(.learners_trt_folds, null.ok = TRUE) - checkmate::assertNumber(.bound) - checkmate::assertNumber(.trim, upper = 1) - checkmate::assertLogical(.return_full_fits, len = 1) - - Task <- lmtp_Task$new( - data = data, - trt = trt, - outcome = outcome, - time_vary = time_vary, - baseline = baseline, - cens = cens, - k = k, - shift = shift, - shifted = shifted, - id = id, - outcome_type = match.arg(outcome_type), - V = folds, - weights = weights, - bounds = bounds, - bound = .bound - ) - - pb <- progressr::progressor(Task$tau*folds*2) - - ratios <- cf_r(Task, learners_trt, mtp, .learners_trt_folds, .trim, .return_full_fits, pb) - estims <- cf_sdr(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, .learners_outcome_folds, .return_full_fits, pb) - - theta_dr( - list( - estimator = "SDR", - m = list(natural = estims$natural, shifted = estims$shifted), - r = ratios$ratios, - tau = Task$tau, - folds = Task$folds, - id = Task$id, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - weights = Task$weights, - shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, - fits_m = estims$fits, - fits_r = ratios$fits, - outcome_type = Task$outcome_type - ), - TRUE - ) -} - -#' LMTP Substitution Estimator -#' -#' G-computation estimator for the effects of traditional causal effects and -#' modified treatment policies for both point treatment and longitudinal data with binary, -#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -#' -#' @param data \[\code{data.frame}\]\cr -#' A \code{data.frame} in wide format containing all necessary variables -#' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\] or \[\code{list}\]\cr -#' A vector containing the column names of treatment variables ordered by time. -#' Or, a list of vectors, the same length as the number of time points of observation. -#' Vectors should contain column names for the treatment variables at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param outcome \[\code{character}\]\cr -#' The column name of the outcome variable. In the case of time-to-event -#' analysis, a vector containing the columns names of intermediate outcome variables and the final -#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type -#' is binary, data should be coded as 0 and 1. -#' @param baseline \[\code{character}\]\cr -#' An optional vector containing the column names of baseline covariates to be -#' included for adjustment at every time point. -#' @param time_vary \[\code{list}\]\cr -#' A list the same length as the number of time points of observation with -#' the column names for new time-varying covariates introduced at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param cens \[\code{character}\]\cr -#' An optional vector of column names of censoring indicators the same -#' length as the number of time points of observation. If missingness in the outcome is -#' present or if time-to-event outcome, must be provided. -#' @param shift \[\code{closure}\]\cr -#' A two argument function that specifies how treatment variables should be shifted. -#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. -#' @param shifted \[\code{data.frame}\]\cr -#' An optional data frame, the same as in \code{data}, but modified according -#' to the treatment policy of interest. If specified, \code{shift} is ignored. -#' @param k \[\code{integer(1)}\]\cr -#' An integer specifying how previous time points should be -#' used for estimation at the given time point. Default is \code{Inf}, -#' all time points. -#' @param outcome_type \[\code{character(1)}\]\cr -#' Outcome variable type (i.e., continuous, binomial, survival). -#' @param id \[\code{character(1)}\]\cr -#' An optional column name containing cluster level identifiers. -#' @param bounds \[\code{numeric(2)}\]\cr -#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -#' the bounds will be taken as the minimum and maximum of the observed data. -#' Should be left as \code{NULL} if the outcome type is binary. -#' @param learners \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. -#' @param folds \[\code{integer(1)}\]\cr -#' The number of folds to be used for cross-fitting. -#' @param weights \[\code{numeric(nrow(data))}\]\cr -#' An optional vector containing sampling weights. -#' @param .bound \[\code{numeric(1)}\]\cr -#' Determines that maximum and minimum values (scaled) predictions -#' will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999. -#' @param .learners_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners}. -#' @param .return_full_fits \[\code{logical(1)}\]\cr -#' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' -#' @return A list of class \code{lmtp} containing the following components: -#' -#' \item{estimator}{The estimator used, in this case "substitution".} -#' \item{theta}{The estimated population LMTP effect.} -#' \item{standard_error}{NA} -#' \item{low}{NA} -#' \item{high}{NA} -#' \item{shift}{The shift function specifying the treatment policy of interest.} -#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -#' The mean of the first column is used for calculating theta.} -#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold for the outcome regression.} -#' \item{outcome_type}{The outcome variable type.} -#' @export -#' -#' @example inst/examples/sub-ex.R -lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, - shift = NULL, shifted = NULL, k = Inf, - outcome_type = c("binomial", "continuous", "survival"), - id = NULL, bounds = NULL, learners = "SL.glm", - folds = 10, weights = NULL, .bound = 1e-5, .learners_folds = 10, - .return_full_fits = FALSE) { - - assertNotDataTable(data) - checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, - min.len = if (match.arg(outcome_type) == "survival") 2) - checkmate::assertCharacter(baseline, null.ok = TRUE) - - tau <- determine_tau(outcome, trt) - - assert_trt(trt, tau) - checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) - checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) - checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) - assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) - assertOutcomeTypes(data, outcome, match.arg(outcome_type)) - assertReservedNames(data) - checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) - assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) - checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) - checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) - checkmate::assertNumber(k, lower = 0, upper = Inf) - checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) - checkmate::assertNumber(.learners_folds, null.ok = TRUE) - checkmate::assertNumber(.bound) - checkmate::assertLogical(.return_full_fits, len = 1) - - Task <- lmtp_Task$new( - data = data, - trt = trt, - outcome = outcome, - time_vary = time_vary, - baseline = baseline, - cens = cens, - k = k, - shift = shift, - shifted = shifted, - id = id, - outcome_type = match.arg(outcome_type), - V = folds, - weights = weights, - bounds = bounds, - bound = .bound - ) - - pb <- progressr::progressor(Task$tau*folds) - - estims <- cf_sub(Task, "tmp_lmtp_scaled_outcome", learners, .learners_folds, .return_full_fits, pb) - - theta_sub( - eta = list( - m = estims$m, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - folds = Task$folds, - weights = Task$weights, - shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, - fits_m = estims$fits, - outcome_type = Task$outcome_type - ) - ) -} - -#' LMTP IPW Estimator -#' -#' Inverse probability of treatment weighting estimator for the effects of traditional causal -#' effects and modified treatment policies for both point treatment and longitudinal data -#' with binary, continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -#' -#' @param data \[\code{data.frame}\]\cr -#' A \code{data.frame} in wide format containing all necessary variables -#' for the estimation problem. Must not be a \code{data.table}. -#' @param trt \[\code{character}\] or \[\code{list}\]\cr -#' A vector containing the column names of treatment variables ordered by time. -#' Or, a list of vectors, the same length as the number of time points of observation. -#' Vectors should contain column names for the treatment variables at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param outcome \[\code{character}\]\cr -#' The column name of the outcome variable. In the case of time-to-event -#' analysis, a vector containing the columns names of intermediate outcome variables and the final -#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type -#' is binary, data should be coded as 0 and 1. -#' @param baseline \[\code{character}\]\cr -#' An optional vector containing the column names of baseline covariates to be -#' included for adjustment at every time point. -#' @param time_vary \[\code{list}\]\cr -#' A list the same length as the number of time points of observation with -#' the column names for new time-varying covariates introduced at each time point. The list -#' should be ordered following the time ordering of the model. -#' @param cens \[\code{character}\]\cr -#' An optional vector of column names of censoring indicators the same -#' length as the number of time points of observation. If missingness in the outcome is -#' present or if time-to-event outcome, must be provided. -#' @param shift \[\code{closure}\]\cr -#' A two argument function that specifies how treatment variables should be shifted. -#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. -#' @param shifted \[\code{data.frame}\]\cr -#' An optional data frame, the same as in \code{data}, but modified according -#' to the treatment policy of interest. If specified, \code{shift} is ignored. -#' @param k \[\code{integer(1)}\]\cr -#' An integer specifying how previous time points should be -#' used for estimation at the given time point. Default is \code{Inf}, -#' all time points. -#' @param mtp \[\code{logical(1)}\]\cr -#' Is the intervention of interest a modified treatment policy? -#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. -#' @param outcome_type \[\code{character(1)}\]\cr -#' Outcome variable type (i.e., continuous, binomial, survival). -#' @param id \[\code{character(1)}\]\cr -#' An optional column name containing cluster level identifiers. -#' @param learners \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation -#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -#' \bold{Only include candidate learners capable of binary classification}. -#' @param folds \[\code{integer(1)}\]\cr -#' The number of folds to be used for cross-fitting. -#' @param weights \[\code{numeric(nrow(data))}\]\cr -#' An optional vector containing sampling weights. -#' @param .bound \[\code{numeric(1)}\]\cr -#' Determines that maximum and minimum values (scaled) predictions -#' will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999. -#' @param .trim \[\code{numeric(1)}\]\cr -#' Determines the amount the density ratios should be trimmed. -#' The default is 0.999, trimming the density ratios greater than the 0.999 percentile -#' to the 0.999 percentile. A value of 1 indicates no trimming. -#' @param .learners_folds \[\code{integer(1)}\]\cr -#' The number of cross-validation folds for \code{learners}. -#' @param .return_full_fits \[\code{logical(1)}\]\cr -#' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. -#' -#' @details -#' ## Should \code{mtp = TRUE}? -#' A modified treatment policy (MTP) is an intervention that depends -#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). -#' This differs from other causal effects, -#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -#' by some amount, use \code{mtp = TRUE}}. -#' -#' @return A list of class \code{lmtp} containing the following components: -#' -#' \item{estimator}{The estimator used, in this case "IPW".} -#' \item{theta}{The estimated population LMTP effect.} -#' \item{standard_error}{NA} -#' \item{low}{NA} -#' \item{high}{NA} -#' \item{shift}{The shift function specifying the treatment policy of interest.} -#' \item{density_ratios}{An n x Tau matrix of the estimated density ratios.} -#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -#' for each fold of density ratio estimation.} -#' @export -#' -#' @example inst/examples/ipw-ex.R -lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, - shift = NULL, shifted = NULL, mtp = FALSE, - # intervention_type = c("static", "dynamic", "mtp"), - k = Inf, id = NULL, - outcome_type = c("binomial", "continuous", "survival"), - learners = "SL.glm", - folds = 10, weights = NULL, - .bound = 1e-5, .trim = 0.999, .learners_folds = 10, - .return_full_fits = FALSE, ...) { - - assertNotDataTable(data) - checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, - min.len = if (match.arg(outcome_type) == "survival") 2) - checkmate::assertCharacter(baseline, null.ok = TRUE) - - tau <- determine_tau(outcome, trt) - - assert_trt(trt, tau) - checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) - checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) - checkmate::assertCharacter(id, len = 1, null.ok = TRUE) - checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) - assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) - assertOutcomeTypes(data, outcome, match.arg(outcome_type)) - assertReservedNames(data) - checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) - assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) - checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) - checkmate::assertNumber(k, lower = 0, upper = Inf) - checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) - checkmate::assertNumber(.learners_folds, null.ok = TRUE) - checkmate::assertNumber(.bound) - checkmate::assertNumber(.trim, upper = 1) - checkmate::assertLogical(.return_full_fits, len = 1) - - Task <- lmtp_Task$new( - data = data, - trt = trt, - outcome = outcome, - time_vary = time_vary, - baseline = baseline, - cens = cens, - k = k, - shift = shift, - shifted = shifted, - id = id, - outcome_type = match.arg(outcome_type), - V = folds, - weights = weights, - bounds = NULL, - bound = .bound - ) - - pb <- progressr::progressor(Task$tau*folds) - - ratios <- cf_r(Task, learners, mtp, .learners_folds, .trim, .return_full_fits, pb) - - theta_ipw( - eta = list( - r = matrix( - t(apply(ratios$ratios, 1, cumprod)), - nrow = nrow(ratios$ratios), - ncol = ncol(ratios$ratios) - ), - y = if (Task$survival) { - convert_to_surv(data[[final_outcome(outcome)]]) - } else { - data[[final_outcome(outcome)]] - }, - folds = Task$folds, - weights = Task$weights, - tau = Task$tau, - shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, - fits_r = ratios$fits - ) - ) -} diff --git a/R/gcomp.R b/R/gcomp.R deleted file mode 100644 index bb074458..00000000 --- a/R/gcomp.R +++ /dev/null @@ -1,85 +0,0 @@ -cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { - out[[fold]] <- future::future({ - estimate_sub( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, - Task$node_list$outcome, Task$cens, - Task$risk, Task$tau, Task$outcome_type, - learners, lrnr_folds, pb, full_fits - ) - }, - seed = TRUE) - } - - out <- future::value(out) - - list( - m = recombine_outcome(out, "m", Task$folds), - fits = lapply(out, function(x) x[["fits"]]) - ) -} - -estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, - tau, outcome_type, learners, lrnr_folds, pb, full_fits) { - - m <- matrix(nrow = nrow(natural$valid), ncol = tau) - fits <- vector("list", length = tau) - - for (t in tau:1) { - i <- censored(natural$train, cens, t)$i - jt <- censored(natural$train, cens, t)$j - jv <- censored(natural$valid, cens, t)$j - rt <- at_risk(natural$train, risk, t) - rv <- at_risk(natural$valid, risk, t) - - pseudo <- paste0("tmp_lmtp_pseudo", t) - vars <- node_list[[t]] - - if (t != tau) { - outcome <- paste0("tmp_lmtp_pseudo", t + 1) - outcome_type <- "continuous" - } - - learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) - - fit <- run_ensemble( - natural$train[i & rt, ][[outcome]], - natural$train[i & rt, vars], - learners, - outcome_type, - id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds - ) - - if (full_fits) { - fits[[t]] <- fit - } else { - fits[[t]] <- extract_sl_weights(fit) - } - - if (length(trt) > 1) { - trt_t <- trt[[t]] - } else { - trt_t <- trt[[1]] - } - - under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] - - under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] - - natural$train[jt & rt, pseudo] <- bound(SL_predict(fit, under_shift_train), 1e-05) - m[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) - - natural$train[!rt, pseudo] <- 0 - m[!rv, t] <- 0 - - pb() - } - - list(m = m, fits = fits) -} diff --git a/R/lmtp-package.R b/R/lmtp-package.R deleted file mode 100644 index cf0c16f4..00000000 --- a/R/lmtp-package.R +++ /dev/null @@ -1,9 +0,0 @@ -#' @importFrom stats runif as.formula coef glm plogis predict qlogis qnorm pnorm sd quantile var binomial gaussian na.omit weighted.mean -#' @keywords internal -"_PACKAGE" - -# The following block is used by usethis to automatically manage -# roxygen namespace tags. Modify with care! -## usethis namespace: start -## usethis namespace: end -NULL diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R deleted file mode 100644 index 79b4842c..00000000 --- a/R/lmtp_Task.R +++ /dev/null @@ -1,73 +0,0 @@ -#' @importFrom R6 R6Class -lmtp_Task <- R6::R6Class( - "lmtp_Task", - public = list( - natural = NULL, - shifted = NULL, - trt = NULL, - cens = NULL, - risk = NULL, - node_list = NULL, - n = NULL, - tau = NULL, - id = NULL, - outcome_type = NULL, - survival = NULL, - bounds = NULL, - folds = NULL, - weights = NULL, - multivariate = NULL, - initialize = function(data, trt, outcome, time_vary, baseline, cens, k, - shift, shifted, id, outcome_type = NULL, V = 10, - weights = NULL, bounds = NULL, bound = NULL) { - self$tau <- determine_tau(outcome, trt) - self$n <- nrow(data) - self$trt <- trt - self$risk <- risk_indicators(outcome) - self$cens <- cens - self$node_list <- create_node_list(trt, self$tau, time_vary, baseline, k) - self$outcome_type <- ifelse(outcome_type %in% c("binomial", "survival"), "binomial", "continuous") - self$survival <- outcome_type == "survival" - self$bounds <- y_bounds(data[[final_outcome(outcome)]], self$outcome_type, bounds) - data$lmtp_id <- create_ids(data, id) - self$id <- data$lmtp_id - self$folds <- setup_cv(data, data$lmtp_id, V) - self$multivariate <- is.list(trt) - - shifted <- { - if (is.null(shifted) && !is.null(shift)) - shift_data(data, trt, cens, shift) - else if (is.null(shifted) && is.null(shift)) - shift_data(data, trt, cens, shift) - else { - tmp <- shifted - tmp$lmtp_id <- data$lmtp_id - tmp - } - } - - data <- data.table::copy(data) - shifted <- data.table::copy(shifted) - - data <- fix_censoring_ind(data, cens) - shifted <- fix_censoring_ind(shifted, cens) - - if (self$survival) { - for (outcomes in outcome) { - data.table::set(data, j = outcomes, value = convert_to_surv(data[[outcomes]])) - data.table::set(shifted, j = outcomes, value = convert_to_surv(shifted[[outcomes]])) - } - } - - data$tmp_lmtp_scaled_outcome <- scale_y(data[[final_outcome(outcome)]], self$bounds) - shifted$tmp_lmtp_scaled_outcome <- data$tmp_lmtp_scaled_outcome - - self$natural <- data - self$shifted <- shifted - - if (!is.null(weights)) { - self$weights <- weights - } - } - ) -) diff --git a/R/nodelist.R b/R/nodelist.R deleted file mode 100644 index ec40d128..00000000 --- a/R/nodelist.R +++ /dev/null @@ -1,143 +0,0 @@ -#' Create a node list specification -#' -#' Creates a node list specification that is used by the provided estimators. -#' \code{create_node_list()} is not explicitly called by the analyst, rather -#' it is provided so the analyst can confirm how estimators will use variables -#' before actually performing the estimation procedure. -#' -#' @param trt A vector of column names of treatment variables. -#' @param tau The number of time points of observation, excluding the final outcome. -#' @param time_vary A list of length tau with the column names for new time_vary to -#' be introduced at each time point. The list should be ordered following -#' the time ordering of the model. -#' @param baseline An optional vector of columns names for baseline covariates to be -#' included for adjustment at every timepoint. -#' @param k An integer specifying how previous time points should be -#' used for estimation at the given time point. Default is \code{Inf}, -#' all time points. -#' -#' @return A list of lists. Each sub-list is the same length of the -#' \code{time_vary} parameter with the variables to be used for estimation at that given time point -#' for either the treatment mechanism or outcome regression. -#' @export -#' @examples -#' a <- c("A_1", "A_2", "A_3", "A_4") -#' bs <- c("W_1", "W_2") -#' time_vary <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) -#' -#' # assuming no Markov property -#' create_node_list(a, 4, time_vary, bs, k = Inf) -#' -#' # assuming a Markov property -#' create_node_list(a, 4, time_vary, bs, k = 0) -create_node_list <- function(trt, tau, time_vary = NULL, baseline = NULL, k = Inf) { - if (is.null(k)) { - k <- Inf - } - - list( - trt = trt_node_list(trt, time_vary, baseline, k, tau), - outcome = outcome_node_list(trt, time_vary, baseline, k, tau) - ) -} - -trt_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { - out <- list() - if (!is.null(baseline)) { - for (i in 1:tau) { - out[[i]] <- c(baseline) - } - } - - if (length(out) == 0) { - if (length(trt) == tau) { - for (i in 1:tau) { - if (i > 1) { - out[[i]] <- c(time_vary[[i]], trt[[i - 1]]) - } else { - out[[i]] <- c(time_vary[[i]]) - } - } - } - - if (length(trt) != tau) { - for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], unlist(trt)) - } - } - } else { - if (length(trt) == tau) { - for (i in 1:tau) { - if (i > 1) { - out[[i]] <- c(out[[i]], time_vary[[i]], trt[[i - 1]]) - } else { - out[[i]] <- c(out[[i]], time_vary[[i]]) - } - } - } - - if (length(trt) != tau) { - for (i in 1:tau) { - out[[i]] <- c(out[[i]], time_vary[[i]], unlist(trt)) - } - } - } - - out <- slide(out, k) - - if (length(trt) != tau) { - return(out) - } - - for (i in 1:tau) { - out[[i]] <- c(out[[i]], trt[[i]]) - } - - out -} - -outcome_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { - out <- list() - - if (length(trt) == tau) { - for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], trt[[i]]) - } - } - - if (length(trt) != tau) { - for (i in 1:tau) { - out[[i]] <- c(time_vary[[i]], unlist(trt)) - } - } - - out <- slide(out, k) - if (is.null(baseline)) { - return(out) - } - - for (i in 1:tau) { - out[[i]] <- c(baseline, out[[i]]) - } - out -} - -slide <- function(x, k) { - if (k == 0) { - return(x) - } - - t <- length(x) - if (k == Inf) { - k <- t - 1 - } - lapply(1:t, Lag, x = x, k = k) -} - -Lag <- function(x, t, k) { - if (t == 1) { - return(x[[1]]) - } - tk <- max(1, t - k) - unique(do.call(c, x[tk:t])) -} diff --git a/R/print.R b/R/print.R deleted file mode 100644 index 0fac95f4..00000000 --- a/R/print.R +++ /dev/null @@ -1,23 +0,0 @@ -#' @export -print.lmtp <- function(x, ...) { - cat("\n") - cli::cli_text("{.strong LMTP Estimator}: {x$estimator}") - cli::cli_text(cat(" "), "{.strong Trt. Policy}: ", cli::col_blue(cli::style_italic("{x$shift}"))) - cat("\n") - cli::cli_text("{.strong Population intervention estimate}") - cli::cli_text(cat(" "), "{.strong Estimate}: {round(x$theta, 4)}") - cli::cli_text(cat(" "), "{.strong Std. error}: {round(x$standard_error, 4)}") - cli::cli_text(cat(" "), "{.strong 95% CI}: ({round(x$low, 4)}, {round(x$high, 4)})") - if (x$estimator %in% c("substitution", "IPW")) no_stderr_warning(x$estimator) - cat("\n") -} - -#' @export -print.lmtp_contrast <- function(x, ...) { - cat("\n") - cli::cli_text(cat(" "), "{.strong LMTP Contrast}: {x$type}") - cli::cli_text("{.strong Null hypothesis}: theta == {x$null}") - cat("\n") - x$vals$p.value <- format.pval(x$vals$p.value, digits = 3, eps = 0.001) - print(format(x$vals, digits = 3)) -} diff --git a/R/sdr.R b/R/sdr.R deleted file mode 100644 index 099a1428..00000000 --- a/R/sdr.R +++ /dev/null @@ -1,113 +0,0 @@ -cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { - out[[fold]] <- future::future({ - estimate_sdr( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, Task$node_list$outcome, - Task$cens, Task$risk, Task$tau, Task$outcome_type, - get_folded_data(ratios, Task$folds, fold)$train, - learners, lrnr_folds, pb, full_fits - ) - }, - seed = TRUE) - } - - out <- future::value(out) - - list(natural = recombine_outcome(out, "natural", Task$folds), - shifted = recombine_outcome(out, "shifted", Task$folds), - fits = lapply(out, function(x) x[["fits"]])) -} - -estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, - outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { - - m_natural_train <- m_shifted_train <- - cbind(matrix(nrow = nrow(natural$train), ncol = tau), natural$train[[outcome]]) - m_natural_valid <- m_shifted_valid <- - cbind(matrix(nrow = nrow(natural$valid), ncol = tau), natural$valid[[outcome]]) - - fits <- vector("list", length = tau) - - for (t in tau:1) { - i <- censored(natural$train, cens, t)$i - jt <- censored(natural$train, cens, t)$j - jv <- censored(natural$valid, cens, t)$j - rt <- at_risk(natural$train, risk, t) - rv <- at_risk(natural$valid, risk, t) - - pseudo <- paste0("tmp_lmtp_pseudo", t) - vars <- node_list[[t]] - - if (t == tau) { - learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) - - fit <- run_ensemble(natural$train[i & rt, ][[outcome]], - natural$train[i & rt, vars], - learners, - outcome_type, - id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds) - - if (full_fits) { - fits[[t]] <- fit - } else { - fits[[t]] <- extract_sl_weights(fit) - } - } - - if (t < tau) { - tmp <- transform_sdr(compute_weights(ratios, t + 1, tau), - t, tau, - m_shifted_train, - m_natural_train) - - natural$train[, pseudo] <- shifted$train[, pseudo] <- tmp - - learners <- check_variation(natural$train[i & rt, ][[pseudo]], learners) - - fit <- run_ensemble(natural$train[i & rt, ][[pseudo]], - natural$train[i & rt, vars], - learners, - "continuous", - id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds) - - if (full_fits) { - fits[[t]] <- fit - } else { - fits[[t]] <- extract_sl_weights(fit) - } - } - - if (length(trt) > 1) { - trt_t <- trt[[t]] - } else { - trt_t <- trt[[1]] - } - - under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] - - under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] - - m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) - m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) - m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) - m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) - - m_natural_train[!rt, t] <- 0 - m_shifted_train[!rt, t] <- 0 - m_natural_valid[!rv, t] <- 0 - m_shifted_valid[!rv, t] <- 0 - - pb() - } - - list(natural = m_natural_valid, - shifted = m_shifted_valid, - fits = fits) -} diff --git a/R/shift.R b/R/shift.R deleted file mode 100644 index 115f77a7..00000000 --- a/R/shift.R +++ /dev/null @@ -1,129 +0,0 @@ -shift_data <- function(data, trt, cens, shift) { - if (is.null(shift)) { - return(shift_cens(data, cens)) - } - - is_multivariate <- is.list(trt) - if (isTRUE(is_multivariate)) { - return(shift_trt_list(shift_cens(data, cens), trt, shift)) - } - - shift_trt_character(shift_cens(data, cens), trt, shift) -} - -shift_cens <- function(data, cens) { - out <- as.list(data) - for (ce in cens) { - out[[ce]] <- 1 - } - as.data.frame(out, check.names = FALSE) -} - -shift_trt_character <- function(data, trt, .f) { - for (a in trt) { - data[[a]] <- .f(data, a) - } - data -} - -shift_trt_list <- function(data, trt, .f) { - for (a in trt) { - new <- .f(data, a) - for (col in a) { - data[[col]] <- new[[col]] - } - } - data -} - -#' Turn All Treatment Nodes On -#' -#' A pre-packaged shift function for use with provided estimators when the exposure is binary. -#' Used to estimate the population intervention effect when all treatment variables are set to 1. -#' -#' @param data A dataframe containing the treatment variables. -#' @param trt The name of the current treatment variable. -#' -#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] -#' @return A dataframe with all treatment nodes set to 1. -#' @export -#' -#' @examples -#' \donttest{ -#' data("iptwExWide", package = "twang") -#' a <- paste0("tx", 1:3) -#' baseline <- c("gender", "age") -#' tv <- list(c("use0"), c("use1"), c("use2")) -#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, -#' shift = static_binary_on, outcome_type = "continuous", folds = 2) -#' } -static_binary_on <- function(data, trt) { - rep(1, length(data[[trt]])) -} - -#' Turn All Treatment Nodes Off -#' -#' A pre-packaged shift function for use with provided estimators when the exposure is binary. -#' Used to estimate the population intervention effect when all treatment variables are set to 0. -#' -#' @param data A dataframe containing the treatment variables. -#' @param trt The name of the current treatment variable. - -#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] -#' @return A dataframe with all treatment nodes set to 0. -#' @export -#' -#' @examples -#' \donttest{ -#' data("iptwExWide", package = "twang") -#' a <- paste0("tx", 1:3) -#' baseline <- c("gender", "age") -#' tv <- list(c("use0"), c("use1"), c("use2")) -#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, -#' shift = static_binary_off, outcome_type = "continuous", folds = 2) -#' } -static_binary_off <- function(data, trt) { - rep(0, length(data[[trt]])) -} - -#' IPSI Function Factory -#' -#' A function factory that returns a shift function for increasing or decreasing -#' the probability of exposure when exposure is binary. -#' -#' @param delta \[\code{numeric(1)}\]\cr -#' A risk ratio between 0 and Inf. -#' -#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] -#' @return A shift function. -#' @export -#' -#' @examples -#' \donttest{ -#' data("iptwExWide", package = "twang") -#' a <- paste0("tx", 1:3) -#' baseline <- c("gender", "age") -#' tv <- list(c("use0"), c("use1"), c("use2")) -#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, -#' shift = ipsi(0.5), outcome_type = "continuous", folds = 2) -#' } -ipsi <- function(delta) { - if (delta > 1) { - return(ipsi_up(1 / delta)) - } - ipsi_down(delta) -} - -ipsi_up <- function(delta) { - function(data, trt) { - eps <- runif(nrow(data), 0, 1) - ifelse(eps < delta, data[[trt]], 1) - } -} - -ipsi_down <- function(delta) { - function(data, trt) { - eps <- runif(nrow(data), 0, 1) - ifelse(eps < delta, data[[trt]], 0) - } -} diff --git a/R/sl.R b/R/sl.R deleted file mode 100644 index d2974797..00000000 --- a/R/sl.R +++ /dev/null @@ -1,31 +0,0 @@ -check_variation <- function(outcome, learners) { - if (sd(outcome) < .Machine$double.eps) { - return("SL.mean") - } - learners -} - -#' @importFrom nnls nnls -run_ensemble <- function(Y, X, learners, outcome_type, id, folds) { - family <- ifelse(outcome_type == "binomial", binomial(), gaussian()) - cv_control <- SuperLearner::SuperLearner.CV.control(V = folds) - fit <- SuperLearner::SuperLearner( - Y, X, family = family[[1]], SL.library = learners, - id = id, method = "method.NNLS", - env = environment(SuperLearner::SuperLearner), - cvControl = cv_control - ) - - if (!sum(fit$coef != 0)) { - warning("SuperLearner fit failed. Trying main-effects GLM.", call. = FALSE) - fit <- glm(lmtp_tmp_outcome_vector ~ ., data = cbind(lmtp_tmp_outcome_vector = Y, X), family = family[[1]]) - } - fit -} - -SL_predict <- function(fit, newdata) { - if (inherits(fit, "glm")) { - return(as.vector(predict(fit, newdata, type = "response"))) - } - predict(fit, newdata)$pred[, 1] -} diff --git a/R/theta.R b/R/theta.R deleted file mode 100644 index 09bdcfd3..00000000 --- a/R/theta.R +++ /dev/null @@ -1,119 +0,0 @@ -theta_sub <- function(eta) { - if (is.null(eta$weights)) { - theta <- mean(eta$m[, 1]) - } - - if (!is.null(eta$weights)) { - theta <- weighted.mean(eta$m[, 1], eta$weights) - } - - if (eta$outcome_type == "continuous") { - theta <- rescale_y_continuous(theta, eta$bounds) - } - - out <- list( - estimator = "substitution", - theta = theta, - standard_error = NA_real_, - low = NA_real_, - high = NA_real_, - shift = eta$shift, - outcome_reg = switch( - eta$outcome_type, - continuous = rescale_y_continuous(eta$m, eta$bounds), - binomial = eta$m - ), - fits_m = eta$fits_m, - outcome_type = eta$outcome_type - ) - - class(out) <- "lmtp" - out -} - -theta_ipw <- function(eta) { - if (is.null(eta$weights)) { - theta <- mean(eta$r[, eta$tau]*missing_outcome(eta$y)) - } - - if (!is.null(eta$weights)) { - theta <- weighted.mean( - eta$r[, eta$tau]*missing_outcome(eta$y), - eta$weights - ) - } - - out <- list( - estimator = "IPW", - theta = theta, - standard_error = NA_real_, - low = NA_real_, - high = NA_real_, - shift = eta$shift, - density_ratios = eta$r, - fits_r = eta$fits_r - ) - - class(out) <- "lmtp" - out -} - -eif <- function(r, tau, shifted, natural) { - natural[is.na(natural)] <- -999 - shifted[is.na(shifted)] <- -999 - m <- shifted[, 2:(tau + 1), drop = FALSE] - natural[, 1:tau, drop = FALSE] - rowSums(compute_weights(r, 1, tau) * m, na.rm = TRUE) + shifted[, 1] -} - -theta_dr <- function(eta, augmented = FALSE) { - inflnce <- eif(r = eta$r, - tau = eta$tau, - shifted = eta$m$shifted, - natural = eta$m$natural) - theta <- { - if (augmented) - if (is.null(eta$weights)) - mean(inflnce) - else - weighted.mean(inflnce, eta$weights) - else - if (is.null(eta$weights)) - mean(eta$m$shifted[, 1]) - else - weighted.mean(eta$m$shifted[, 1], eta$weights) - } - - if (eta$outcome_type == "continuous") { - inflnce <- rescale_y_continuous(inflnce, eta$bounds) - theta <- rescale_y_continuous(theta, eta$bounds) - } - - clusters <- split(inflnce, eta$id) - j <- length(clusters) - se <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) - ci_low <- theta - (qnorm(0.975) * se) - ci_high <- theta + (qnorm(0.975) * se) - - out <- list( - estimator = eta$estimator, - theta = theta, - standard_error = se, - low = ci_low, - high = ci_high, - eif = inflnce, - id = eta$id, - shift = eta$shift, - outcome_reg = switch( - eta$outcome_type, - continuous = rescale_y_continuous(eta$m$shifted, eta$bounds), - binomial = eta$m$shifted - ), - density_ratios = eta$r, - fits_m = eta$fits_m, - fits_r = eta$fits_r, - outcome_type = eta$outcome_type - ) - - class(out) <- "lmtp" - out -} diff --git a/R/tidy.R b/R/tidy.R deleted file mode 100644 index 8ff520bf..00000000 --- a/R/tidy.R +++ /dev/null @@ -1,30 +0,0 @@ -#' @importFrom generics tidy -#' @export -generics::tidy - -#' Tidy a(n) lmtp object -#' -#' @param x A `lmtp` object produced by a call to [lmtp::lmtp_tmle()], [lmtp::lmtp_sdr()], -#' [lmtp::lmtp_sub()], or [lmtp::lmtp_ipw()]. -#' @param ... Unused, included for generic consistency only. -#' -#' @examples -#' \donttest{ -#' a <- c("A1", "A2") -#' nodes <- list(c("L1"), c("L2")) -#' cens <- c("C1", "C2") -#' y <- "Y" -#' fit <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 2) -#' tidy(fit) -#' } -#' -#' @export -tidy.lmtp <- function(x, ...) { - out <- data.frame(estimator = x$estimator, - estimate = x$theta, - std.error = x$standard_error, - conf.low = x$low, - conf.high = x$high) - class(out) <- c("tbl_df", "tbl", "data.frame") - out -} diff --git a/R/tmle.R b/R/tmle.R deleted file mode 100644 index 7cd9b783..00000000 --- a/R/tmle.R +++ /dev/null @@ -1,109 +0,0 @@ -cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { - out <- vector("list", length = length(Task$folds)) - ratios <- matrix(t(apply(ratios, 1, cumprod)), - nrow = nrow(ratios), - ncol = ncol(ratios)) - - for (fold in seq_along(Task$folds)) { - out[[fold]] <- future::future({ - estimate_tmle( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, - Task$tau, Task$outcome_type, - get_folded_data(ratios, Task$folds, fold)$train, - learners, lrnr_folds, pb, full_fits - ) - }, - seed = TRUE) - } - - out <- future::value(out) - - list( - natural = recombine_outcome(out, "natural", Task$folds), - shifted = cbind(recombine_outcome(out, "shifted", Task$folds), Task$natural[["tmp_lmtp_scaled_outcome"]]), - fits = lapply(out, function(x) x[["fits"]]) - ) -} - -estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, - risk, tau, outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { - m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) - m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) - - fits <- vector("list", length = tau) - for (t in tau:1) { - i <- censored(natural$train, cens, t)$i - jt <- censored(natural$train, cens, t)$j - jv <- censored(natural$valid, cens, t)$j - rt <- at_risk(natural$train, risk, t) - rv <- at_risk(natural$valid, risk, t) - - pseudo <- paste0("tmp_lmtp_pseudo", t) - vars <- node_list[[t]] - - if (t != tau) { - outcome <- paste0("tmp_lmtp_pseudo", t + 1) - outcome_type <- "continuous" - } - - learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) - - fit <- run_ensemble( - natural$train[i & rt, ][[outcome]], - natural$train[i & rt, vars], - learners, - outcome_type, - id = natural$train[i & rt,][["lmtp_id"]], - lrnr_folds - ) - - if (full_fits) { - fits[[t]] <- fit - } else { - fits[[t]] <- extract_sl_weights(fit) - } - - if (length(trt) > 1) { - trt_t <- trt[[t]] - } else { - trt_t <- trt[[1]] - } - - under_shift_train <- natural$train[jt & rt, vars] - under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] - - under_shift_valid <- natural$valid[jv & rv, vars] - under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] - - m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) - m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) - m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) - m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) - - fit <- sw( - glm( - natural$train[i & rt, ][[outcome]] ~ offset(qlogis(m_natural_train[i & rt, t])), - weights = ratios[i & rt, t], - family = "binomial" - ) - ) - - natural$train[jt & rt, pseudo] <- bound(plogis(qlogis(m_shifted_train[jt & rt, t]) + coef(fit))) - m_natural_valid[jv & rv, t] <- bound(plogis(qlogis(m_natural_valid[jv & rv, t]) + coef(fit))) - m_shifted_valid[jv & rv, t] <- bound(plogis(qlogis(m_shifted_valid[jv & rv, t]) + coef(fit))) - - natural$train[!rt, pseudo] <- 0 - m_natural_valid[!rv, t] <- 0 - m_shifted_valid[!rv, t] <- 0 - - pb() - } - - list( - natural = m_natural_valid, - shifted = m_shifted_valid, - fits = fits - ) -} diff --git a/R/utils.R b/R/utils.R deleted file mode 100644 index 14dca938..00000000 --- a/R/utils.R +++ /dev/null @@ -1,217 +0,0 @@ -determine_tau <- function(outcome, trt) { - surv <- length(outcome) > 1 - if (!surv) { - return(length(trt)) - } - length(outcome) -} - -setup_cv <- function(data, id, V = 10) { - out <- origami::make_folds(data, cluster_ids = id, V = V) - if (V > 1) { - return(out) - } - out[[1]]$training_set <- out[[1]]$validation_set - out -} - -get_folded_data <- function(data, folds, index) { - out <- list() - out[["train"]] <- data[folds[[index]]$training_set, , drop = FALSE] - out[["valid"]] <- data[folds[[index]]$validation_set, , drop = FALSE] - out -} - -fix_censoring_ind <- function(data, cens) { - if (is.null(cens)) { - return(data) - } - - data <- data.table::copy(data) - for (cen in cens) { - data.table::set(data, j = cen, value = ifelse(is.na(data[[cen]]), 0, data[[cen]])) - } - data -} - -bound <- function(x, p = 1e-05) { - pmax(pmin(x, 1 - p), p) -} - -scale_y <- function(y, bounds) { - if (is.null(bounds)) { - return(y) - } - (y - bounds[1]) / (bounds[2] - bounds[1]) -} - -y_bounds <- function(y, outcome_type, bounds = NULL) { - if (outcome_type == "binomial" || is.null(outcome_type)) { - return(NULL) - } - if (is.null(bounds)) { - return(c(min(y, na.rm = T), max(y, na.rm = T))) - } - c(bounds[1], bounds[2]) -} - -rescale_y_continuous <- function(scaled, bounds) { - (scaled*(bounds[2] - bounds[1])) + bounds[1] -} - -censored <- function(data, cens, tau) { - # when no censoring return TRUE for all obs - if (is.null(cens)) { - return(list(i = rep(TRUE, nrow(data)), j = rep(TRUE, nrow(data)))) - } - - # other wise find censored observations - i <- data[[cens[tau]]] == 1 - - if (tau > 1) { - return(list(i = i, j = data[[cens[tau - 1]]] == 1)) - } - - list(i = i, j = rep(TRUE, nrow(data))) -} - -at_risk <- function(data, risk, tau, check = FALSE) { - if (is.null(risk)) { - return(rep(TRUE, nrow(data))) - } - - if (tau == 1) { - return(rep(TRUE, nrow(data))) - } - - if (check) { - return(data[[risk[tau - 1]]] == 0 & !is.na(data[[risk[tau - 1]]])) - } - - data[[risk[tau - 1]]] == 1 & !is.na(data[[risk[tau - 1]]]) -} - -followed_rule <- function(obs_trt, shifted_trt, mtp) { - if (mtp) { - if (inherits(obs_trt, "data.frame")) { - return(rep(TRUE, nrow(obs_trt))) - } - return(rep(TRUE, length(obs_trt))) - } - - mapply(function(x, y) isTRUE(all.equal(x, y)), as.list(obs_trt), as.list(shifted_trt)) -} - -transform_sdr <- function(r, tau, max, shifted, natural) { - natural[is.na(natural)] <- -999 - shifted[is.na(shifted)] <- -999 - m <- shifted[, (tau + 2):(max + 1), drop = FALSE] - natural[, (tau + 1):max, drop = FALSE] - rowSums(r * m, na.rm = TRUE) + shifted[, tau + 1] -} - -recombine_ratios <- function(x, folds) { - ind <- Reduce(c, lapply(folds, function(x) x[["validation_set"]])) - - returns <- list() - - returns$ratios <- Reduce( - rbind, - lapply(x, function(x) x[["ratios"]]) - )[order(ind), ] - - if (is.null(dim(returns[["ratios"]]))) { - returns[["ratios"]] <- as.matrix( - returns[["ratios"]], - nrow = length(returns[["ratios"]]), - ncol = 1 - ) - } - - returns$fits <- lapply(x, function(x) x[["fits"]]) - returns -} - -trim_ratios <- function(x, trim) { - x[["ratios"]] <- pmin(x[["ratios"]], quantile(x[["ratios"]], trim)) - x -} - -recombine_outcome <- function(x, part, folds) { - ind <- Reduce(c, lapply(folds, function(x) x[["validation_set"]])) - Reduce(rbind, lapply(x, function(x) x[[part]]))[order(ind), , drop = FALSE] -} - -is.lmtp <- function(x) { - class(x) == "lmtp" -} - -sw <- function(x) { - suppressWarnings(x) -} - -final_outcome <- function(outcomes) { - outcomes[length(outcomes)] -} - -extract_sl_weights <- function(fit) { - fit$coef -} - -#' Time To Event Last Outcome Carried Forward -#' -#' A helper function to prepare survival data for use with LMTP estimators -#' by imputing outcome nodes using last outcome carried forward when an observation -#' experiences the event before the end-of-follow-up. -#' -#' @param data The dataset to modify. -#' @param outcomes A vector of outcome nodes ordered by time. -#' -#' @return A modified dataset with future outcome nodes set to 1 if an observation -#' experienced an event at any previous time point. -#' -#' @importFrom data.table as.data.table `:=` .SD -#' @export -#' @examples -#' event_locf(sim_point_surv, paste0("Y.", 1:6)) -event_locf <- function(data, outcomes) { - DT <- as.data.table(data) - tau <- length(outcomes) - for (j in outcomes[1:(tau - 1)]) { - modify <- setdiff(outcomes[match(j, outcomes):tau], j) - DT[get(j) == 1 & !is.na(get(j)), (modify) := lapply(.SD, function(x) 1), .SDcols = modify] - } - DT[] - DT -} - -create_ids <- function(data, id) { - if (is.null(id)) { - return(1:nrow(data)) - } - data[[id]] -} - -convert_to_surv <- function(x) { - data.table::fcase( - x == 0, 1, - x == 1, 0 - ) -} - -missing_outcome <- function(x) { - ifelse(is.na(x), 0, x) -} - -risk_indicators <- function(x) { - if (length(x) == 1) { - return(NULL) - } - - x[1:(length(x) - 1)] -} - -compute_weights <- function(r, t, tau) { - out <- t(apply(r[, t:tau, drop = FALSE], 1, cumprod)) - if (ncol(out) > ncol(r)) return(t(out)) - out -} diff --git a/README.Rmd b/README.Rmd deleted file mode 100644 index 2ce2e861..00000000 --- a/README.Rmd +++ /dev/null @@ -1,183 +0,0 @@ ---- -output: github_document ---- - - - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - fig.path = "man/figures/README-", - out.width = "100%" -) -``` - -# lmtp - - - -[![CRAN status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) ![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) [![R build status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) [![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) - - - -> Non-parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies - -Nick Williams and Ivan Diaz - ------------------------------------------------------------------------- - -**lmtp** is an R package that provides an estimation framework for the casual effects of feasible interventions based on point-treatment and longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck (2020). Two primary estimators are supported, a targeted maximum likelihood (TML) estimator and a sequentially doubly robust (SDR) estimator (a G-computation and an inverse probability of treatment weighting estimator are provided for the sake of being thorough but their use is recommended against in favor of the TML and SDR estimators). Both binary and continuous outcomes (both with censoring) are allowed. **lmtp** is built atop the [`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) package to utilize ensemble machine learning for estimation. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type providing decreased computation time when treatment is continuous. Dynamic treatment regimes are also supported. - -A list of papers using **lmtp** is [here](https://gist.github.com/nt-williams/15068f5849a67ff4d2cb7f2dcf97b3de). - -For an in-depth look at the package's functionality, please consult the accompanying technical paper in [Observational Studies](https://muse.jhu.edu/article/883479). - -## Installation - -**lmtp** can be installed from CRAN with: - -``` r -install.packages("lmtp") -``` - -The stable, development version can be installed from GitHub with: - -``` r -devtools::install_github("nt-williams/lmtp@devel") -``` - -A version allowing for different covariates sets for the treatment, censoring, and outcome regressions: - -``` r -devtools::install_github("nt-williams/lmtp@separate-variable-sets") -``` - -## What even is a modified treatment policy? - -Modified treatment policies (MTP) are interventions that can depend on the *natural* value of the treatment (the treatment value in the absence of intervention). A key assumption for causal inference is the *positivity assumption* which states that all observations have a non-zero probability of experiencing a treatment value. **When working with continuous or multivalued treatments, violations of the positivity assumption are likely to occur. MTPs offer a solution to this problem.** - -## Can lmtp estimate other effects? - -Yes! **lmtp** can estimate the effects of deterministic, static treatment effects (such as the ATE) and deterministic, dynamic treatment regimes for binary, continuous, and survival outcomes. - -### Features - -| Feature | Status | -|---------------------------------------------------------|:-------------:| -| Point treatment | ✓ | -| Longitudinal treatment | ✓ | -| Modified treatment intervention | ✓ | -| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | -| Static intervention | ✓ | -| Dynamic intervention | ✓ | -| Continuous treatment | ✓ | -| Binary treatment | ✓ | -| Categorical treatment | ✓ | -| Multivariate treatment | ✓ | -| Missingness in treatment | | -| Continuous outcome | ✓ | -| Binary outcome | ✓ | -| Censored outcome | ✓ | -| Mediation | | -| Survey weights | ✓ | -| Super learner | ✓ | -| Clustered data | ✓ | -| Parallel processing | ✓ | -| Progress bars | ✓ | - -## Example - -```{r} -library(lmtp) - -# the data: 4 treatment nodes with time varying covariates and a binary outcome -head(sim_t4) -``` - -We're interested in a treatment policy, `d`, where exposure is decreased by 1 only among subjects whose exposure won't go below 1 if intervened upon. The true population outcome under this policy is about 0.305. - -```{r} -# a treatment policy function to be applied at all time points -policy <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) -} -``` - -In addition to specifying a treatment policy, we need to specify our treatment variables and time-varying covariates. - -```{r} -# treatment nodes, a character vector of length 4 -A <- c("A_1", "A_2", "A_3", "A_4") -# time varying nodes, a list of length 4 -L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) -``` - -We can now estimate the effect of our treatment policy, `d`. In this example, we'll use the cross-validated TML estimator with 10 folds. - -```{r, eval = FALSE} -lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mtp", folds = 10) -#> LMTP Estimator: TMLE -#> Trt. Policy: (policy) -#> -#> Population intervention estimate -#> Estimate: 0.2526 -#> Std. error: 0.0223 -#> 95% CI: (0.2089, 0.2962) -``` - -## Data structure - -#### Single time point - - - -#### Time-varying exposure and confounders, not survival outcome - - - -#### Single exposure, survival outcome - - - -#### Time-varying exposure and confounders, survival outcome - - - -## Similar Implementations - -A variety of other R packages perform similar tasks as **lmtp**. However, **lmtp** is the only R package currently capable of estimating causal effects for binary, categorical, and continuous exposures in both the point treatment and longitudinal setting using traditional causal effects or modified treatment policies. - -- [`txshift`](https://github.com/nhejazi/txshift)\ -- [`tmle3`](https://github.com/tlverse/tmle3)\ -- [`tmle3shift`](https://github.com/tlverse/tmle3shift) -- [`ltmle`](https://CRAN.R-project.org/package=ltmle)\ -- [`tmle`](https://CRAN.R-project.org/package=tmle) - -## Citation - -Please cite the following when using **lmtp** in publications. Citation should include both the R package article and the paper establishing the statistical methodology. - -``` -@article{, - title = {lmtp: An R package for estimating the causal effects of modified treatment policies}, - author = {Nicholas T Williams and Iván Díaz}, - journal = {Observational Studies}, - year = {2023}, - url = {https://muse.jhu.edu/article/883479} -} - -@article{ - doi:10.1080/01621459.2021.1955691, - author = {Iván Díaz and Nicholas Williams and Katherine L. Hoffman and Edward J. Schenck}, - title = {Non-parametric causal effects based on longitudinal modified treatment policies}, - journal = {Journal of the American Statistical Association}, - year = {2021}, - doi = {10.1080/01621459.2021.1955691}, - URL = {https://doi.org/10.1080/01621459.2021.1955691}, -} -``` - -## References - -Iván Díaz, Nicholas Williams, Katherine L. Hoffman & Edward J. Schenck (2021) Non-parametric causal effects based on longitudinal modified treatment policies, Journal of the American Statistical Association, DOI: 10.1080/01621459.2021.1955691 diff --git a/README.md b/README.md deleted file mode 100644 index 8374a0f3..00000000 --- a/README.md +++ /dev/null @@ -1,231 +0,0 @@ - - - -# lmtp - - - -[![CRAN -status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) -![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) [![R build -status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) -[![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) -[![License: GPL -v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) -[![Project Status: Active – The project has reached a stable, usable -state and is being actively -developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) - - - -> Non-parametric Causal Effects of Feasible Interventions Based on -> Modified Treatment Policies - -Nick Williams and Ivan Diaz - ------------------------------------------------------------------------- - -**lmtp** is an R package that provides an estimation framework for the -casual effects of feasible interventions based on point-treatment and -longitudinal modified treatment policies as described in Diaz, Williams, -Hoffman, and Schenck (2020). Two primary estimators are supported, a -targeted maximum likelihood (TML) estimator and a sequentially doubly -robust (SDR) estimator (a G-computation and an inverse probability of -treatment weighting estimator are provided for the sake of being -thorough but their use is recommended against in favor of the TML and -SDR estimators). Both binary and continuous outcomes (both with -censoring) are allowed. **lmtp** is built atop the -[`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) -package to utilize ensemble machine learning for estimation. The -treatment mechanism is estimated via a density ratio classification -procedure irrespective of treatment variable type providing decreased -computation time when treatment is continuous. Dynamic treatment regimes -are also supported. - -A list of papers using **lmtp** is -[here](https://gist.github.com/nt-williams/15068f5849a67ff4d2cb7f2dcf97b3de). - -For an in-depth look at the package’s functionality, please consult the -accompanying technical paper in [Observational -Studies](https://muse.jhu.edu/article/883479). - -## Installation - -**lmtp** can be installed from CRAN with: - -``` r -install.packages("lmtp") -``` - -The stable, development version can be installed from GitHub with: - -``` r -devtools::install_github("nt-williams/lmtp@devel") -``` - -A version allowing for different covariates sets for the treatment, -censoring, and outcome regressions: - -``` r -devtools::install_github("nt-williams/lmtp@separate-variable-sets") -``` - -## What even is a modified treatment policy? - -Modified treatment policies (MTP) are interventions that can depend on -the *natural* value of the treatment (the treatment value in the absence -of intervention). A key assumption for causal inference is the -*positivity assumption* which states that all observations have a -non-zero probability of experiencing a treatment value. **When working -with continuous or multivalued treatments, violations of the positivity -assumption are likely to occur. MTPs offer a solution to this problem.** - -## Can lmtp estimate other effects? - -Yes! **lmtp** can estimate the effects of deterministic, static -treatment effects (such as the ATE) and deterministic, dynamic treatment -regimes for binary, continuous, and survival outcomes. - -### Features - -| Feature | Status | -|------------------------------------------------------------------|:------:| -| Point treatment | ✓ | -| Longitudinal treatment | ✓ | -| Modified treatment intervention | ✓ | -| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | -| Static intervention | ✓ | -| Dynamic intervention | ✓ | -| Continuous treatment | ✓ | -| Binary treatment | ✓ | -| Categorical treatment | ✓ | -| Multivariate treatment | ✓ | -| Missingness in treatment | | -| Continuous outcome | ✓ | -| Binary outcome | ✓ | -| Censored outcome | ✓ | -| Mediation | | -| Survey weights | ✓ | -| Super learner | ✓ | -| Clustered data | ✓ | -| Parallel processing | ✓ | -| Progress bars | ✓ | - -## Example - -``` r -library(lmtp) -#> Loading required package: mlr3superlearner -#> Loading required package: mlr3learners -#> Warning: package 'mlr3learners' was built under R version 4.2.3 -#> Loading required package: mlr3 -#> Warning: package 'mlr3' was built under R version 4.2.3 - -# the data: 4 treatment nodes with time varying covariates and a binary outcome -head(sim_t4) -#> ID L_1 A_1 L_2 A_2 L_3 A_3 L_4 A_4 Y -#> 1 1 2 3 0 1 1 1 1 3 0 -#> 2 2 2 1 1 4 0 3 1 2 0 -#> 3 3 1 0 1 3 1 2 1 1 1 -#> 4 4 1 0 0 3 1 3 1 2 0 -#> 5 5 3 3 1 1 0 1 1 2 0 -#> 6 6 1 0 0 2 0 3 1 4 0 -``` - -We’re interested in a treatment policy, `d`, where exposure is decreased -by 1 only among subjects whose exposure won’t go below 1 if intervened -upon. The true population outcome under this policy is about 0.305. - -``` r -# a treatment policy function to be applied at all time points -policy <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) -} -``` - -In addition to specifying a treatment policy, we need to specify our -treatment variables and time-varying covariates. - -``` r -# treatment nodes, a character vector of length 4 -A <- c("A_1", "A_2", "A_3", "A_4") -# time varying nodes, a list of length 4 -L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) -``` - -We can now estimate the effect of our treatment policy, `d`. In this -example, we’ll use the cross-validated TML estimator with 10 folds. - -``` r -lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mtp", folds = 10) -#> LMTP Estimator: TMLE -#> Trt. Policy: (policy) -#> -#> Population intervention estimate -#> Estimate: 0.2526 -#> Std. error: 0.0223 -#> 95% CI: (0.2089, 0.2962) -``` - -## Data structure - -#### Single time point - - - -#### Time-varying exposure and confounders, not survival outcome - - - -#### Single exposure, survival outcome - - - -#### Time-varying exposure and confounders, survival outcome - - - -## Similar Implementations - -A variety of other R packages perform similar tasks as **lmtp**. -However, **lmtp** is the only R package currently capable of estimating -causal effects for binary, categorical, and continuous exposures in both -the point treatment and longitudinal setting using traditional causal -effects or modified treatment policies. - -- [`txshift`](https://github.com/nhejazi/txshift) -- [`tmle3`](https://github.com/tlverse/tmle3) -- [`tmle3shift`](https://github.com/tlverse/tmle3shift) -- [`ltmle`](https://CRAN.R-project.org/package=ltmle) -- [`tmle`](https://CRAN.R-project.org/package=tmle) - -## Citation - -Please cite the following when using **lmtp** in publications. Citation -should include both the R package article and the paper establishing the -statistical methodology. - - @article{, - title = {lmtp: An R package for estimating the causal effects of modified treatment policies}, - author = {Nicholas T Williams and Iván Díaz}, - journal = {Observational Studies}, - year = {2023}, - url = {https://muse.jhu.edu/article/883479} - } - - @article{ - doi:10.1080/01621459.2021.1955691, - author = {Iván Díaz and Nicholas Williams and Katherine L. Hoffman and Edward J. Schenck}, - title = {Non-parametric causal effects based on longitudinal modified treatment policies}, - journal = {Journal of the American Statistical Association}, - year = {2021}, - doi = {10.1080/01621459.2021.1955691}, - URL = {https://doi.org/10.1080/01621459.2021.1955691}, - } - -## References - -Iván Díaz, Nicholas Williams, Katherine L. Hoffman & Edward J. Schenck -(2021) Non-parametric causal effects based on longitudinal modified -treatment policies, Journal of the American Statistical Association, -DOI: 10.1080/01621459.2021.1955691 diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index e5a1ab93..00000000 --- a/codecov.yml +++ /dev/null @@ -1,14 +0,0 @@ -comment: false - -coverage: - status: - project: - default: - target: auto - threshold: 1% - informational: true - patch: - default: - target: auto - threshold: 1% - informational: true diff --git a/cran-comments.md b/cran-comments.md deleted file mode 100644 index 49645184..00000000 --- a/cran-comments.md +++ /dev/null @@ -1,13 +0,0 @@ -## Version 1.3.3 submission - -## Test environments - -- local R installation (Mac OS), R release -- local R installation (Mac OS), R old release -- Windows-latest (on GitHub actions), R release -- Windows (Win-builder), R devel -- Windows (Win-builder), R old release - -## R CMD check results - -0 errors \| 0 warnings \| 0 notes diff --git a/data/multivariate_data.rda b/data/multivariate_data.rda deleted file mode 100644 index 7bd9a9115a5d9b1f748e59b8f0356bb65cc13f90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94038 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�d=%W83=ZdGzZYm7U#} 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 DexZe; diff --git a/data/sim_cens.rda b/data/sim_cens.rda deleted file mode 100644 index 200a4fbceddf15b84a29c6dffcdf21036d88009b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16749 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�W)mtAhyB{TYalY>|nq4GE3z_m47R-R zuh^aE-nyEU=(#!gEuQ-w?Q=%MlCD_dbAZGBBH=<3ibiU*sg+USJZ*$8JvJmyReYx4 zcju<>0@{_=`##stA0Dzw93RcPW7MW#fFs5`$!R6(vrK!T1=Y*y?I*dDMNLI~&veH3 zZqC%_e(aOKGL}`0*=~86EY((2oyDE8-%K+bq|4Y`Ro8UH9LJapHes>4PPas6F=7!b zsdNd8GNJtX=Jn)n7&{biC3xtsqCbB$5R@p?t!-^(op-uiWmacCR;XZtAn`u0XKkD_ zu^)Or4D$V~`@!}bwKBGEN1+ve4>%C()?_cjck1(KR9eGpPIutv;E8XFLw-nfF)pD* z{98Nt6@)pFRCvP8S_&kOR1x@lAI^PQ%;B2G*13N>ml1O+9Fu@NYi^z|f9;~t?dHqV z`|LX>XaVV2MogLvIWMW_4<7?<jKZKIe&t>7slE)=e zCeBjs!FKX4j~-B1xd?4e%(k;1hOgxSlDijr`9s;as_u+$l|IHx=-Fg$>0ZbChlqZBwkvRIk;xp3|9eu#)(EstN3&+#XWnDE+*L zujkZzHin$|j^j`3V9CYUcsIS>Dm>EzvFhy)nYX^ViBtk0i*lgS`uTz5~xc+SS0)rsVx{)c0 z!S(ok91Cn$&xSSGklgwp+bb$F(rgG~i^^Z6vGmmSQWE2r_4<$xv3$;job*r_+0faZ z*PlZOqC)p&^vK(Y5{CjcVqeU_M<42CsQZFP0gZ#ATy%H_O9PwEjh-&nw+c@o;>!wy zQpN1EcRg?g z%O|nkpNFHq{NyJUhk~Gz9A1ry!Fyp*OYD|j<@?G|9V~~RQ5b&9Y5(m+yV0eH$?j9? z=bitlGs-8+GFgFU`Q*%%TjVn6FO~oM<+`oWK+NOR4Pi@ z>z%zwJ>*@LPyf6icE`Cu@wJcmhu8eHN0dX+^(j4q0nHK-&`G2a00y5W;th5hxp^?} z?-7iC(>1AmQFB+ZRDJ6X}r!016Zw} z2qMkYzS})kb@(nzSeaw7a%26J`K!vxfEt5>M8+}Pm*4*)i<7U5Lx5O+grGC#k3D(f z09!xt*r{1QqyD;QdBn3hRehwi!j6ApO6-^?4+e-_rlWg^JT))?LiG@k=lCce6 zwildAyskRG^RZ1~^Rao|@uPkgqC9w_aU_Uw>}C0%xpWNSU5IQ#m^(^FiMqjzn?|`!_SruTT#yAjreCs3

q(zZ!A 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 UnnBJquV46G$rRy2LatKlAc3BMEC2ui diff --git a/data/sim_point_surv.rda b/data/sim_point_surv.rda deleted file mode 100644 index 529d66b90c5bddddebe95d8c24b5a01c1fc34cf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6805 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 R$Qew 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 WHSZ%Q7yp0s&SN>3kl6Ke*BAgQ@jcrB diff --git a/data/sim_timevary_surv.rda b/data/sim_timevary_surv.rda deleted file mode 100644 index 54c831f9d9d2cc77712942ebb41af9402079b963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15488 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
%5B&`&^fLx!KVfjsF}pOhF>lKgFu*1jig=UIg;u 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 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_ipw(ex1_dat, "A", "Y", "W", mtp = TRUE, shift = policy, - outcome_type = "continuous", folds = 2) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_ipw(sim_t4, A, "Y", time_vary = L, - shift = policy, folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_ipw(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - shift = policy, k = 0, folds = 2) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_ipw(sim_t4, A, "Y", time_vary = L, - k = 0, mtp = TRUE, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) %in% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_ipw(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_ipw(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_ipw(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_ipw(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} diff --git a/inst/examples/sdr-ex.R b/inst/examples/sdr-ex.R deleted file mode 100644 index e1a4ec1a..00000000 --- a/inst/examples/sdr-ex.R +++ /dev/null @@ -1,165 +0,0 @@ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_sdr(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2, mtp = TRUE) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, - folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_sdr(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) %in% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_sdr(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_sdr( - iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2 - ) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_sdr(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_sdr(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} diff --git a/inst/examples/sub-ex.R b/inst/examples/sub-ex.R deleted file mode 100644 index 0ae063fc..00000000 --- a/inst/examples/sub-ex.R +++ /dev/null @@ -1,159 +0,0 @@ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_sub(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, folds = 2) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_sub(sim_t4, A, "Y", time_vary = L, k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) %in% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_sub(tmp, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_sub(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous") - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_sub(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_sub(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1) -} diff --git a/inst/examples/tmle-ex.R b/inst/examples/tmle-ex.R deleted file mode 100644 index a6631c97..00000000 --- a/inst/examples/tmle-ex.R +++ /dev/null @@ -1,162 +0,0 @@ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_tmle(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2, mtp = TRUE) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, - folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_tmle(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) %in% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_tmle(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_tmle(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_tmle(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_tmle(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} diff --git a/lmtp.Rproj b/lmtp.Rproj deleted file mode 100755 index cba1b6b7..00000000 --- a/lmtp.Rproj +++ /dev/null @@ -1,21 +0,0 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -StripTrailingWhitespace: Yes - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageRoxygenize: rd,collate,namespace diff --git a/man/create_node_list.Rd b/man/create_node_list.Rd deleted file mode 100644 index 30b50371..00000000 --- a/man/create_node_list.Rd +++ /dev/null @@ -1,46 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/nodelist.R -\name{create_node_list} -\alias{create_node_list} -\title{Create a node list specification} -\usage{ -create_node_list(trt, tau, time_vary = NULL, baseline = NULL, k = Inf) -} -\arguments{ -\item{trt}{A vector of column names of treatment variables.} - -\item{tau}{The number of time points of observation, excluding the final outcome.} - -\item{time_vary}{A list of length tau with the column names for new time_vary to -be introduced at each time point. The list should be ordered following -the time ordering of the model.} - -\item{baseline}{An optional vector of columns names for baseline covariates to be -included for adjustment at every timepoint.} - -\item{k}{An integer specifying how previous time points should be -used for estimation at the given time point. Default is \code{Inf}, -all time points.} -} -\value{ -A list of lists. Each sub-list is the same length of the -\code{time_vary} parameter with the variables to be used for estimation at that given time point -for either the treatment mechanism or outcome regression. -} -\description{ -Creates a node list specification that is used by the provided estimators. -\code{create_node_list()} is not explicitly called by the analyst, rather -it is provided so the analyst can confirm how estimators will use variables -before actually performing the estimation procedure. -} -\examples{ -a <- c("A_1", "A_2", "A_3", "A_4") -bs <- c("W_1", "W_2") -time_vary <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - -# assuming no Markov property -create_node_list(a, 4, time_vary, bs, k = Inf) - -# assuming a Markov property -create_node_list(a, 4, time_vary, bs, k = 0) -} diff --git a/man/event_locf.Rd b/man/event_locf.Rd deleted file mode 100644 index 4ad375df..00000000 --- a/man/event_locf.Rd +++ /dev/null @@ -1,25 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{event_locf} -\alias{event_locf} -\title{Time To Event Last Outcome Carried Forward} -\usage{ -event_locf(data, outcomes) -} -\arguments{ -\item{data}{The dataset to modify.} - -\item{outcomes}{A vector of outcome nodes ordered by time.} -} -\value{ -A modified dataset with future outcome nodes set to 1 if an observation -experienced an event at any previous time point. -} -\description{ -A helper function to prepare survival data for use with LMTP estimators -by imputing outcome nodes using last outcome carried forward when an observation -experiences the event before the end-of-follow-up. -} -\examples{ -event_locf(sim_point_surv, paste0("Y.", 1:6)) -} diff --git a/man/figures/lmtp.png b/man/figures/lmtp.png deleted file mode 100644 index db95f12600c34ed7837741991e52f72a194a20fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295373 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�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

~w0; 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

}DScGWsK0|0V5b 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 L7;7i5u{-d8IoM$U diff --git a/man/figures/pointtrt.png b/man/figures/pointtrt.png deleted file mode 100644 index 62b6dee73e4b3a2ee22367970f1dbde206748b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34606 zcmce;byQVd*EUW{C`cpSNTYP8f^@gENOw0VEg?#`gh(SDhY+OWkkZ}VUB7ki$NPPs z@%{e&#&^a(gR^$6wbz<^&1+usT7)YrN@JiCqr<_$VaU9Br3wcJe+#}VsE@#&&XE#* zP>{5glvI|Hl%!O4vVU)BV+IGu5Nm2=g!6`lq1)Kl$f$dOnGxN|T{SE$Qq{=6v$dCU zptUFKS8GDj+qa9)uoe;3+u(9ke$`q(iKM))VC!Z<*%O;D8D0w9nQCeDkCWpIDj-L8 z$jc>oj<_W%mX`KbS-q{bH3{w=b7CT1z$B|!%^U0?6|wUtSb}7228brl#V1i(tt39A z1@1D7)rdJsnV^5ZL+bt`BY~qNZ6djc46jIGPIE%(u7-$UM@JNws~Hzyv2pvMH@p8d z5(in@2sMw%W1Vhii{Tm3GoqI-0@_Hjuf3`HNQsKlu}nORo;_pHCVG~{f^Bld{Onnc z)QcBkpQwIwr4T&}BH(L(2UV)t`t|loX1OBR+I+>Z-Ia}DfIDZgg1-JTR zsjls!tspO8YH!PC{LbFQjLpN=0d@(TkcR;HX=~nfa)u$zn6oOFtvq?i-Q0=ySuwP zn>#0)y^}fnOMZTS_7@!N92~6R3|41PI~QXQRy${!|J>x?`@Ax9Hg&ReaIv(vqlDep z*u>t|MVOizR?+`_{?kq~56l0p$&X9krG~Salcc>ZsM1B`e@Eu; z#s7Wq?}b9_uqXeop7>8U|FakLvk1Bn`~QrY2zu1$sSzBU7@W*2adi*)-EsqYm^`MNMp88I;E zvlx1=Snu7se3F?xIxTJe#s0qk<=pJt)KoG*l;xs7jh}PpJ#HYD7#z}nHhG1tw1T{k z4wP^R|JlC4;fatVVZp(}wsJUl2A{`V9Iuf6DZ)xZh<{Htf=5ukB(QiFhWhtP`VdIh|5Z=ai;6N+69Zn)nTh`e)cRooPC` zyR&ajRUmR3oCJzpoFZs%47!{;(P^oIdltIUnAi zYcwNWsP#N~uiNCst?@%S@cQCF34?@ZY~)y6RyJby9jTz3eCI@|e(FBtMDh6StXi(? zd2(_xM+>+0ALV!^jUUb%gJaFU-i-B#5}`{LnBSs+eOC>$~86l z8D70?CFPWp?*~%y^7LE$npj`F7-GZN=yA+O%*tE&*z$1S*jgnSidjuZPj6*O;d`o* zoVkfQsas|7ZLP`Z7s5=ceRDy25lMuaVe`gO7sbT!Vgq`fz4uWEVRhZ*rAIt>vx01Z zJQLw>1bD0$RPcGL+Qw)b5Neq^b0~T0vwGPMda3i82?OteKUJ1$o@`P>H76U;KA%(1 zo12>%&|otXVXrC$ZH#x*ppBMm)izVAooAcF?L20^cr&X#Uu{7LeswfS5tpkq?ZQ-; zdfX*J!tA-P>~MGGe6v?;Z5iLT;la+%t~XO-Yg=tKUSVc#Zm6;3d~H3h#m8r5<|J(B zxrR^Dm$UtALHSZwE$JK%eW6O>@h`DfAEf=J3j+liy64XcWm=8fLwdYDf-*BQ*bex; z&x_Ryi#J6s7ZHi_wJt~Vl_rig&5rMwehm9AH2d1>)!4)mARC(`5`4_frH$|BG5L+E zQxh5*s*to(?a|~!IEuqzK+#2pim9Wcb9`e(1qRC;aSaX@c&hyQHXcA0V%jpyMUSjjlU? zey=&8P}_F}lcDh+WQSyrX=#(abDP~7MsdS>RgMWCc~~;~=QAGC6Quy@KW##6YnR(a zWyd`y*E?mSF{1Yj!b3WY&dM}bBzARyL0{iCLm{3gyT>Y5Gq2bAmoVY&Z*g&PY2t52 zl|&Uxn)ScqD7t}Jf~sIBxGW%YWgO|c++vt|KsRgT$Ih$_qauT>Z@h^X0ZP269s^df zB(N0$TMQX-Fl&17rza66I+{))FfaTd%_K5vu$j{F3QX zhxp4~14kpSoa=EZ57N2<6AzD^BzzePi46Ur)zR@=_m@X2UvT|T#ybC$=#{xLm!^gX zST^BOJ_8Pd5v|-g*>5W4Quq%k^fF2K*po38-Q<3ne*NBz*ezpcy1Gcg1$DJPNvk&R z`}f}5Udx!K<1=x2M2oAUH9x4(No3?o#qSia)X8zBzDm2fhLnw#$){poGerUwm6?;g zVtof+l|+UkR298VxJo+;J{Ixs;pa7Hw;Mmkz!>ky1zcBqQEhS`6`aad`Nlrj6L4cbLO*-Gzr zUyd^>ID=0skUBPXyYNGWrk>eQ+%kfs%MX4R8OmO(646{PRHC3Qjg z@UZ=9Uo=#Xz3COC;+tB&VwL46ef}6mus}3$fh*cMv@pNzfDS+Jo@vPS`%f4o@M3hs z{mG##k~3~V8?XC~gaGV}&qy9rS%BO{|vw+8%BD z(?M^^$A&;LMx4od=jXwpp@t`%=7VXfEaMG2^=+u4tgKN69!tpEv-Ocs;Z^QkI+gL zTBn>ZZ!Qk=?M<04JEzNr$jK>MbY*Kh_ zQWY9B3D{0m1dH4rN=AJ8lykA*pE+G?uT;C>=Y14}TkvqR@Gw%U-}nQ#>W*eYUcOLZ zW6pIs>R1j;fi<=>ILvo#2r=mKJ&F17+Kdiw-n{utBPp^@aSg7)QNkzXa|l2{MBMtG zYL|VsGclUNZM}LnW7imUdw0iQuixF@pF5Ds+vlQDs2)pit`Q9W6m z{o?XCG&(*x`Fi0*Tq>H{ZeO?bXnUrXy}q&0`ikJJHJRkV2Y?7wB4>RHzf0q5Fe24f z&Z#fk6Ik^?|KkWh+@6fJ`1>;%HbZRm>{f<`l(&a-LfxL~A)X%fZvZTLEO3K-3tZ7y zxv}K(hHNmH^Hg5F3i1iWa%W4Xs}-389*RL&I2|?x z&iMWMfLw8#A?$5+wpyWCqWjv|*w|&Kq_)>>eB;;XQvj{wp{@WIu5or<=`f+9!e&xtgF{7gUH&T7li zPI|m>Al&HZBI9cIoOBMhL$hI z7%F^@VnnWgMB=7D*84=jS|xyrY|_`$^AioXT7iL%HDjm4GABEG_n57>XU4w8_6C58 zh%Z%RqcEhQ`pDkiKJ{4-VbX&$R5-uq3M%^0&Bemp=W{Z^J2RKF{5n*z(|zZULZepo z8LpBLRatleP3orndLx^FCXYsR?`=_8bH!0*?(w31=?TE0j5CsXxCv;<>tL8_$A74_ zv)z%{LyWz*3-WiDUxjw;6B$3sMl?+f>09=Shz?@vJY9fHa3cH@Lv7-VJOuDqjWI0b zyC2LGhsQH(P5<81zJG)MwOk<*r<$T)%fR!sTs|H+&B^Pfy$vpnl!7CV-RxvSd_3Lg z!Q@X#wdLFPL0N;ys%oELOPxNgNHH^^2W6#Xjt(Br<9DeJd|w@l9n|Z{gQ2cx$Hx`n z*aanEJb8=}60e+vn0;Or)Rh{Y5{P*M!5MA?&0#ofWbf1c@+JqOLs8#;jnOml zq}(+K1Jv5E&LQx3%!`3E{;!i%C0VV`?M#P|x@W>YY8j?2E75|hX>8JmZ_A$f7Ut4Q zy``1%IrdrUjB+waNJsGuU#u|eTa{*bxy*Nt3e{6$rI`!7{Pib&O%#ttjHu`2WS1F> zjEoif+Wb`!?+x)Ggma^#8C~e9{#ffpxaEgzdiHUbSw*3Z!OS)Z8=GRc@QqzLn(_l_ zC#Q;j*$1DWqHrf_fjULwh$bm-*a%mx@tM>q&u@%cp1f?5^giFE`qnyb``eFj*Sa+@ z69wO6>Ki)b_VdR=6hVSQ^FT9ADD4JxsXv*M_IokQk`HPydn&2FSgS75rL=kyPZ=W@ zv*gR=_(8k0B>a*WEd(AEf+IiG($R~@;`0UA=awnvD$Sw2eFG`nYCWs9FV3tY&Q7;R zIikt7gEYjMeD`h2kC!pw{QYkBcvC<;pil0}TW@TpuWc0E?OEh-yei}RX7_VvCPX}w z{-FB9ppKidFvF&5a@Wt3nQxMzxzwf|`R-2Y!8`a4qu&)Ys&3gZDX%rqvGmR`Lr&|GR3pg`<_Ot)AzZV}oZX#o8t&CRGgN9R=8>NeA)h`ium|H4`I8 zzp`I{s!~akZO<4pvC~=a>D8Af`<(PR;o@f^4>K3$HcG|?kunW`v=$AY$RNpNjvx~& zx@R)EJJ;lO>nN%hZe8z&)k5*%W2PIci?~14i3VOWD;$o?uj<7I0ZdurfPes?cg?nU zmfeSy%R01TXj9?j6CpeOPg!wI1@;)#3dq~&nUA7vJu3UFUE!XLS%T1Qb2I0tAYoryL;V|@d>aenpOvX-cDNd$%^Wh}(A+8E_ zWtN>73l@kYAVn-!J@>26CFERDR@B)&r1gti`@&yM8_`tQ@kT*aP0?H8m&^vkk!hjl zva{bVRmq1JdvZ{Z=#8g>iATQMZx2o{`Z=N99_OtD&Q&}HINg|t4LT${Xl3e333+X@=Vql700<^YFO`YGU9_*dn+k=sE<&)(U=b>k+}x8lj4=yXRQOmY6=iPd}=)@EHy zJPU*g&lCGb5z|5xI_c0Lh-89U;lfCzf+QK=7lr8MlN{zehZ&mytwARXg&RFdGxUshGXjih8<0#rk^Rd<} zX$d|5Dl$A411^F|9Q}sjr!V!|ANAwjIq_3^|1o5BsJAk>wAzYrirVnFQv1?+=9qUB z_l&NOHTV-XuHcws*P`x{Zoj8ursxFvuG%*rhSK<&+=(+qAG(1)i;H$ks0C}tH3%G^ zeSl+rNe)jF5Kx5Gin^eoi*N=9{}E?%yeLuKMoZ7#R(V)f-Ij+$aw!p&%8tzp#Ata> z@TLL-#!;UTaRgm{G*Su}m{Yzymv>lyi|}GgFi}(%P{uD9K}hzMr#P_VLmRKd%C~JW z`IgGHj;Ec!O~kWWX8^Z}rjBv~-OlnFj>bohyOt^_xQ+J}=eIAEM&t;P_@e2qIU&`x zL?lJ;b9s+XhIZaa8z5?PC-;tff{;L)WuRx}w)CA4y&yh@pePsjMSIk8p6& z7sR513t?Rn3id^fYHAiR;x%jN5<7u?d~skOSp-Qiejtc+u_>w0U|c<3BAnD^2VKai znF1VoOEDUaKZxb!a9T;5=~CzNfS(afXxxuV7)kSPyEeW!bx12lp-9Lxww+SQ^wxT#NBSeEm9yUu+}o?H_%7 zd>HunlE?w3Yq;5O+$$B_$+aB)?sByJ+UxeHYYR~P3F8b5gF0uD^_^63Uz;7LdzrX{ z+iGRy1XTt%H!Wo4I3#o` zxcnxGR?2Bh&|&Ez^IpjAfPL?bCX?eyjjE`u+?xDpdfGu~s4Or4#P@nD-|5xf*4CDj z(Y)V{?Q)`@%hpK8+I9$fJsW(|seY|(u`VZrPf-m7clG_r-DfJvUD@{?4*=p~w}?kc zk1Q=MO`qjR$Bf)woiOt7BrvJ}5K~Cu`UZjyeRAvY-{OEsx1FvEA57zygolS8E77Y( zh(EbH+1LX7e>QN4iQ8iZl1*M`*3r4RQv2XSA&()1Oo7vQi0 zau1V~PmEQsCRcF3?&D>b0Yz!8jW0PL4*@V))9OTgtH;6i!J2L=L^@OUQx&iOlmd+J z)_V__$gHLIP`TGdW%n4ovy}1HMn+kY*SH5M-rswjE2hw7mJ%oqTJ8CbK>U|=?F@HQ9b2EsydzJDP)5GF#L9Ds@ z;}-C?quU8_aj(Dxou+;+>~)&;ROB)s1e1)Z?BN6|dJ1wiy{4L{w@2sa-yK&vhe5Z= z#t0pULC()63`dXG`qo|wE-{)>5EIK5*Ma!sJuE@<(zNr<<3M>2GJn7#2p8%%@-zXX z8~d(6l8mTFs{TBerLQ@9dzk_(!1ZUVsKlHWdR<* zYWP;NC+9@i`@DOY*ZbrI;tyzlMmDzSXbMrbQF4B#SAHjNBFfITMy0)Oo)U9~5%b!~ zM-g*>nee|olD2&(YCFxf4P&qE=Nh>8rmN+cta;81l`Q5V{2(%jn7n`yAivlBF?WNy zzp?ZsATP%B;V6#^*z~A&vFYik_v64aaKrtjRJ2h0O3yUJ)OKjPptMcHLX$Udwf%xY z%66msfnsxWvlBT)ztIhVNYUZzvz@%H%y?lGa&G5Mz$!GI{n2ykp5NO){MZwOrsQgLvo`WZqgO3R$MR%1md%-_FP1^K1^QqW-; z*URKx*vhgQf<>s5i|C+T`rq(bR8cg;fc@8eO&Hh_YBN6(V0PEc5~5y?{uN2Yx!OGs zg~oX7XC(H~(b8Jv(D8hOf~ds6|IQTg(0}m#Pg#cnbK3U z{Fl3xP(HLHh%gFUs20Lu2HbT_3iapkh%0ISb$mBHodkXD23Ti@|ikHS?SEy(+goUH*dsxnsU^w9IxuIIX&aoLg?bNKA_7SgBMW5fRa` zfcNA{g+L9~VQAAHcy(mc1>F-S#z{rlTUJ^%kuoHVKEb9oHw9|bG+4((@II+ToZlWVs;>9W zxY=mcJ625LlG%@#DAwUzj`GdU&VIKMP`2Q{;CuVpecm(w6nnD4wdk~W!_377p3mp9 zyo$K|tDz3Ed4j$s2h~D0wsHbP>xK(FZ{G}E28G`?6sJ>o9qSOA}Tf}>31)4!Bj8x=)Qgx5T*`{WEjqZdfV< za0l*XQa!+%WSl#Zq2R}uh-JM(TCCEd_Nl9X0+{hcc=bxN9{Uo#ig)2Y8$RtJ7+Zhz z>{(rM2M)e(xKErESzHZx_+Fnv>&?Augu7YLDE8j#VO5Sy1a7zkRL%F*?`|5e3cMbF4z`~v<2-{EAIp+8bl*Pn6#UK~rJ1}c>_M>|- z5kEES(2g-yYi}sX<8udyUG*j}*ZR8yz;H71@oBI3m7T7+B?)`;kb#{1x*lMNb=(aN z4I7;tmWg5Zqv%~aO#UO7l9F5s35y{vAW5<|JaKsPQbmR08?7ykRAhOhG=oj5$4**; zRNh)0a6J~5!4(rDJ|MNtbJQucmv%tJ`94zqCiCI8i_Kt-kcfz}3=l^PHLb0!K9)hM zwXl@=S`@jk?ssfil}{^(N9#>KM`g{|g^{@4dovkc+l-BnV2N4)0Q%TsLMi+v*`kzt zd4^vOErZWHucaz85`L##h5jw832pLW{-5C!S5}@P*PA)V0$sHh!xD0humn8tGLPdD ziNY`g5<;;tVHxwArBI4U<#C+x*qMi#8M{jFd%3u8zwGaCPoTDCkmHD7c`w|~mO%9C ziH%NAiT50>LveU`*lDbI%?@iCR!HwOj-(}fr-X7|y zyh0bV&d1XLS+N>^?VD)1J(d%2UXLU#sB{$zh5?IV7U;^!W~O0y>gUg5xAX$!^+kls zhp5^NCayECz9%HtmjhlBFMG6hD_jE>k}iO~SzaA&-T)r@%f>BF3!pZ2dJiWI{VgrW ze)&J#7+wSVe2pdc;8{>N=BSsL5sF?n8Z-J48z-ciECTYs{o5W}aTm@G))tWL;+O-dR{`2pOu; z_?S^`{V7RJP;`;!f_V=5m9sNKbp6io!T4LvKTn2@%R!o@qf-;{C9*N@=yRSWh97Iz zL5M|>hrtiwq)VR)h-tXwk|(ffZaJiV1`uAf5w`TBBI7Pzd0^i9dEVV}$LuDu8!7^z z_yN)kq&8Qq{U=<2@%8NY-*4DqTdp_9l#uDMzoYPrX+js$)u7_%*C8XgWEDUH6izD! zG1t(@KU#p7&=Nz|um>WoMi$nmOyWS7vPv}}H`j$3ObTGa8-NFZYT$6TMWp=fBP%WG zq@mGlo#SyO5Mo%uFL~5xuVMfcnH8ye|FpL@Fp<#>1OQ;plPYUEPpJwiA4mLkhWZ1$ z+3Wq=vXCFK;~;o}TCo~D@tk@$C|)*%-XP4wqbU^{9Bhf{N~+Qf0`)KJc~-kFiM*Tm z@y(G%cVfrfZig#Fz_m8A=+)Y>#xvye`(9VgRYTruxLq={9IC$p^Hp^pi}ZXehvSfY z&}ACg?P*{-j)qaFFaVd=Ts~3hkEYO+DLl{vSJwNJY4Qo{Y%h~Ucl-I=_uu+Dkv77? zS7X9VN6a(}{R?ow9$4sftp9lQFlH1G7(rJ#6nYCkX0 zVB}9nr6d^&xz1xH_kvB&J0Zb}f&ugWx|L{ae67_To00Wal37^(==aP%IY`XWE2Pk_ zcqXT$ur2Bz@Hq(c*i2H!c)lu0cw{h;LWxUw9GZ{IcNmtQzRPDbT_wY|_VszbZ*<;(+=ZZoPr9H6WDBd0S*Rt?nZ_NC&%r#B3Sg)+o_k)-pUcZ^(%{Lh6O5f(XhI<(poCU(UN$zXv0}2tEht z#M(;jw@T?AG?WHZtW|p7V4vnW{w!wURv4bY$4yAEp`^x%6D1Ep{i@p9G zo4udST#~4N^INGdGNhm1GbYi0%{=;aw(0qm&|^@I0V4ldkibSoyUyWTRc?9qMnNRR z`5yWGhc}@(%IFj{KA|Sk##&U1^j?`-?pn>g19k7n5MVLpduL7c;?>gc3{yx0JNxnc zO~s7ibRS3L2YXw}TSXge&Nl?M$dDe(8Kzy*NJn>LzE(NEGB+1>W3T~pf@4IvTpt-> zO+`72l=>-D8ms*=|g zKw@C1`7V|nWCYjH4q*@>!T-tIN5BI6xR9BEg20FeL8vXXjaRRTSc{y&XQhVB3g`_M zmjUo{KYCQ5eFlQWKZ{s|02(?Xy$FTLKDMSoZDj+fjIi1k8&J#JLKE*@zqKoviNWn0 z_Q5e#05NDcT`N25GHdWzpgaAlJL~G)L#8`6mtOfXso(thnm)Z}{vhP&y^Xt;Z}hiA z{c1C1cB~ih@P7I)S_asusoNBZ=WQK8?nrkQ2yqx|G5%1?I~lF<-!^$)jDXC_Np-Fl z3W^~JLCY9tgfoZOaNvUvs4HXXVv1KW%H!t(ySvh&>Kbi7thTR!* zt!=D617INnesi-UP;Y$~?QkRl^ANjft5mn&#$fvCe&a!J;qgMnMt)E3tz`-^_exTX@vAqIaO%|JA6 zG*JPc-(~h@YpoRI$v;f}HiTp3vEHV_LBnGxL=Bj{OBrLR>oNGtWn4jMb3B>sf4TN@ zo4e!M>+qzL0Im{=eB6Nb5D%p#dx|M=CIJQ86Vd(jP~sazz4x9Jy=9lE(FN@`Ld)-^ zqIlrKQZpd2KCn>@2BWeVK$0f;OUn;$4q6D^dW?^5+sg!~t|hK){cYf1$SrEoR=Vb8 zwUTA9={MlH^i(+tX{c#SALypjj7m6W8v$k%up)TAx0jB~S_=et9GskM-W$9&lgdM8 zzw1%q$(K&JI)JJc{t3=@wrnWj2CI;!+^pNF}K}p-H>%O zq*e47$YsVNR=rY(_0k`pmp3p-jJK@0JUwrP*q` z4p%~|R%Rxc02pvopA}U#iZtomC{sbg^3&LhTH@Xy=zHHvW}mw>Zg;o09V5$;C?96h zJsleL>Q`2toL_Uy1?4E+bK_p)@jZeGiBzdui_k)zQYZq}DjN-#K2Ei?G&xH5D>P>s z2!4lrFXlE<@LiQl07iIybado4DuBsE-0_wk2$h7;0U?Y@)4DS>^i2MA!@*3A9*=FOA+k{d+~J z7*JK>>%zPKRj~(hz+~v10kOjW+yD->4gr3Yt&fDu0t@i4k(W_#H8CJjmL?|DM`2?)8z#}AlzOdM7-Cja$VrsgkH}iJQ_1B;U%KKLKQqY-> zQb%km^!5iN1O)W%;x6In{N*^`?~#E#JkDEN@N>Q#zAKP~>ee|>Ay++N=CHa# z{O-K02=U&S>Q+_7&3YNr1XUNA$yxWt@cZ0-4KRg?2Eq0>&%y%JX8*HC7?9Y)7^MFW zl?)h})GA{tg1;TV3CcT`i_iWUH#j7DSujw!7>|Gc9Z4}IICMiL#IFAgJf)E;$kWi< zYKI~J9at|=_9Fhr++p>7#Q`A6vR#7ZZ)=8to0u4FefhVtq&VPrWk?82K%(Uz!^r^U zj7QNh1tHj4bHQY#FkO!I_-|`YLHUf!;mP01=;;=XRqIKq{{XzD0I2RSX59AkX~f)C zv@u{Uf$Vd|wDKZJm?9s5?6E9yL?*34?YrW~XexOAv=Y558aD zc8*)RKd-M(oG8r{C6htxdWhY?_myO*bF|;no&P9DIH)?Zb*En9R|`o@^UL^}EZ$Z7 zP%xfjcheZwtABNnlUS+y(N4XmB_V-_lQmg!Uxyaj7w?=uy?5}Z^hkWV-XcP{{EMmy zO@XSIEjs$aD-G+K8adO|uak8yx|Ms8cvR(9p4+2&4Y3{dr41B99-lGE1YQ9K2oI>g zfg%hxoweT);Avcr6|?9PeZ86KzHmW(lKnXX|76bZ1%Egu?ejj5r@Xw|h9|ubsXpP@ zDkcb8em`Z?;?Fpe_#CML^Q(#uV+cl>%OKP-Fv>PX)ZZ^q%xdh1I3Po^0GIzc)uS~E zYedb&a*dbfod)yOqmd?DXMc#s9PiyR5?z`AgAz&;sqC*PJM~11g$S7{^EKXM$W+wR z4Yf;t9m1_k(aNpvh0(3m=4!k@RnO;ccMYfSN}U$hmt?R&%H0KHgI|y;!5*es}Xs5-O*94ziaH+jA`yAJzb8` z=NEN8wQsaG&v9ZUB_&cWDuE=#I)xDU`{bloxT_H$rbb2IRtE6g-zMpcND2Kko3S{L zVE$7YHzt2=_Uk20gzBz}?V zVt#FxCT_{NQN^bvidsA&UbH;5GE=?Me@ZLM=P4$r6gE$nv}&=jp=hvms{RC`&^gjEhg-^j21@dFg-QtABggGF#y{$T*fu5~HG05_9&hFrVhY9Y( zbCJ7KH37h;lM}HZEVbyNp>fv3x~I<(2O?m;hIU>Tp<~8^wgeI|knO z*9&k~LyipG+Z?lO^BPKp;|GNrtViml;VCqV(xv#m8O-P+tXC{_+i^as{qYnviy?Dn z%DiE1G~F6{d7~H* z_=-tYBZf>+YPYZbS6|C@w^ipPrD)iyzqXe-&(N&R; z{*ho^pz@!@J2sqP&TRC;(VS-v5Y8&`8B5%im$>vu70;zd3c|RPxFO>)P!Pc22lj@pZ+=40Ivs zgPols#kJbT#>QPZ^&-uvOI$kn`S(wneh1_$oNcRC<$faK+T%#HKR4V$TA*LQkbLa0 z$w~9nybmOrf(Yt>9Jxx>eXk)~sQL||kTQ*0sqTnb@F1r9(Q_y1hNZnn*3}|p^-|th!ShAdAq016TeIfQivps(rZ$l?bez1 z4UP#2j}yDlai7IvRV#cK^!AjY&O{n-T1Lz=%NFcz@W`NciS{}Zj2hDCo?og$R?*En zsLvx9M?3jequ{*ZqV$_~cqHuEUc(gTDUF-|12dUGWseS?r@$x6$mqm;cEwM09!jN# zO3D27O-s+$1e`6z3?=YBny{29dDNm~;iT1q<;fLXv(L|3M1-dtd#!Ka zEm{SQAKZ`Qm)6&h+$qhRM}tcCtLO;}EiCtv`o<--Y%DVSkYrd*_itN}GKu0fOFC{4 z5D*gP$8R&r>w+j^d{F-?D`gT(D!8(%b~w2m`?yNCWPNpMO_B=3tNWxfKiD}sX+=?h zroV<7>5m0VSs(7lhhZh#G{K*rR+*5gaNVsWh|hAj6}+u+j>n{y3*IXE@EZ5FOovFM zeivp;Ts|7mxGhpUFkhdsHOe)!`uy?0+%P%E+}V%+slkueTqa_+1H~;acW4a`R1>TA zSU)4)D$HBRAvYasIcnZCi`zg(_06Z=T^-=$c>8}l#U_=8(^u;H`A2p{@H8kW=-K<) z63RJD4|Ap6+#uZgozQXB%54QUWlF)kE?b^`5@)YpJ77 zDPGaWA-jCA7*3LOLwTR{Zmrku?ts_9v>j64>Ttdcc2z}dqwUb$ay#Ws&I|=ZCX6l$ zIQn&FFV}2r-PRVro8V>7<3~5`&L=|BWo>~u=38P^e{Kv3$T{=cHliWukPPw>|hJD)!$er+) zKcZufxafXbm^{O*MY4XV%4PeGz2a%%s3Jj|!7kG#NFX~(-D8gNFPP=h%Bn~Z&;1C` z?Z5YWB%a7SJB$x2;Qbuqk`a^Iim!;NKiG zt>JZ2sx3h3Iv<=@-&_bJ8=ra;+1c&q8{NxzrnTzHME%~Xos)JQEQ`Sw8wX(f5#g>A z?m}*l`<$GkU>P?-`=fP1$dO{@`%WiaWA@Xec9VjsH7wfmkc-oEwfx`nmtAhRdFg!^ z?h?e78}IqLHF`6xvkz~5-sHSxMv>OE_c5Ewlg$-?-@e^k7`0f5+^DAWrdlHV{WyZB zCq}k?VZM31Ks=`FOoh!iEhXi(+{8v{(?-O-Q1j!n105Q}bivt5b%C>^h>nBz6yIYy zt9lYUyRjj^Fxgx5As#=q<1KS8=DlMYTzBYs=ck^ZCuyzwCH!pG4#f<%U;V?QIQQ+a zudc-HU|!*N7-j$J#4QCRQ-`HVmbFth5+AgRm|Lb4C<;Gen4MCIC0z{=Q~`_83vXrr z&3J&D72d->zNC*dj@lv-U#MQ)iO+7P=;6^0HMy8$*~`FvD5VBDjNKA@+F(&r6+Ak_ zI@*rK;X77+$&(0LXz2V~wUgxs+a9!Qiz*O@Rq`HBUneC!TW;c+bOg#Ivn%bx)Dzem zq~$0NEU~O&w4~h@ZJm{d``an&M8l{)`(C|fAAXPv+Pvm;UQUPHDpC|0X0&KI-nWUz z;HROBp9vI7j{10OVB(M*j*YGsXtq?ku{`}9Ci^-5Q4bE^f+!&Gs$xx=)k4 zpMi|@lVZvJH7DT<&t`v}S2pvsA)*_Mjl2s!UttSv>!V8Vt0y5Gq5g=lWP|%OC!`#! z6$_Ts7U#SJNkHUzVKdp%F4sUp404^HR?mdb)fB&}maEN#$(TQGG8hVeB%FbjGx;37 zVYR|ha$eMByy47~F3pnr-~R<5@?fFpFS$Ti>QS<@66FVR^je?}SEk9OHrw;edSe-t z7G@YIY%}@dYN>YPXoh3z_!COn{hx(DFTu$`c3RhYX3h14N|Ssc=eb<0X0% z(^!;EYOr@r{g#3BZ!}5@TN?T@O$GgLG|LCpxHYRCA-5P|F;b| zbdY};%}xj8c1})C78m<-(d@IYWh0}b6S(;an?4EkdN;l)A=QhD8$~e-?D>hpAh`3z z^s#&F2wR5IXKsER-$1ur(GBWqCm(Jnn^$OPXf9ykS{LCyHQjr2b2SO6M|*Nr`_2w3 zFW$(@yTlSW+HlX>Q1jKi>5AjA7@`Dp%r{eX$-f;KLNx?dSVcrea>@J36=i=XTLQ9z zubG(?AiG{vrA@?^2^Kqzfc%{0P|;5JXg1C5Z#8d=vx^wzg?xXS%vP@u>-Lc!4xPbB z*E?VJwmxYIs!i|&=Edewooou-vN!CVQ;q#Jm6rU|!o_q4z?E`Y035MOi=X8?^KPL| zyD13_Vs4Iib8@4S@_2n z6N2;+WKa`M9XVF-9Hu$nRel@!YeC9Fz=Aqfg2(=rjoyHAhz*ZA@n4gSkOneS56I_# z%THv0iGCgkk^M{eh#dhz2w@DN>c8|46)-uHiYaBwzc$N24shb~k%ZOX@(WsE!;(BC zOc;MTmkt;R6Eb-7Z#e{LQ|-IoOXmGG>MRdn)StQ@!(_Jqa5$eq8Dq-k2iM=X1TO~Y zV~;%kzv|vHs>&z)8WvPQLX=iYKw3bgy9AV$ZjkPlPU#jA4jsawyQNdQyQRAiUC;0n z|Lc9fy=%Q6p67A#!C7lKoO@=^+;d&m-g`(`?%R04KBJx_9xduFMGAg^+!B-$h#1oE z+i*g6Ii&yhAP}{QhmEw6y#3t#D2~^S6D&{&4!yc^f*M+sefMor#?e9h;V1`HEoM2v znIBGal3mbK%d6O*4t<#fYEK`J?}?fF*GumvVV5%-@F-vQYAh=j5F9%$Dh&soosT?( zjTZW^?=K3R>veZ@WNe_MfuI}Hj+-LN!ssQx?Zz9OMnNAXp{qAHFo|IU z`I?ezTbVqGh^mRZQ47s8V#@>cy!x|6l&-F>p8y3oI}~IY7(ra`bP${z9c6vRPHYsB zv%U!bOn9TpTg(T|Oh~=Z5E+1$VNF#UAh!|EN>tWX#dSF;R(&7S6Xh~!5cFs5|H(;r z86)xTC;67{`bvN0CumU8&*EV3lt{ug+aBH zl-(lNHO>{wXK_QNtKY54r>0}7fw{io0dKm!02ikD6lQLzoo=+7^LkgOS&uOtcP&r;x7t zAEgezwq+Ne4z-QwnXp|knGCJ{65Oh^ZF1zaUDSHXX~Cs{W=cNn%ep7t-9R8BN}3_- zog|IpT=%-#}lEysL13+#)b7`6eVi zTx*>_jo9qX(My(El5)Hf&$%0C^xmtg+z|ZJod(!ms^b*PC9BC`hxG5`E!jjr-pU~N zB!`fss$BQf(sEcq7_^^j;O(w`5N3l$>_NEWcP&XIns?TJTdZ*)-{10*I z(iu)~#4))X7zLT)eul-gFsvBV0y)@vFWY=NFpIDa-)68CXRi<@dhF*=OVjDS<(@Kd zLCCD%A81-hDCRzDGMtLWr+KVNrrFcklfpM|EXn9kngw2h%lOYs-ZLWS+cw;)2}Ne? zq#|0F@;`JQqkcQv`T{ZgdnF=|^%}OX26*8eZ@m;j86(I~*MYqUG_YXk_uW&382OSoKg5S<*IBOIchO*QCX>?E8< z$D}2Tv#M1nPL9}8Qmv@Jc|2yE3ETrb;n+7(yeG zdTcRUMU#KKqImIHUG$JfYrnr^x8pr>p$5q0max6HH+#;XZ5(UIegU5tBAGV9w3e+= z>glR){X$eaV>y^j^*x}l1Vr5cC3NR7Qv-Rc(IHl4J!0#h%;=c0yw^YKdCQQIQkYY> z)8rV|)2!9~9&M|oprVwBjak+nAk5ly)5%M*8@U0BTLv!I!7`DJt!*aXydIMqNA(Zu zB%cc0wDXgZtqrH;9elx!&f@RhN-K@7+_kN>9wuEXCHh*VY^R6k1^6t@b*|)_hx^hZ z`8O*3(1aM6e9O&y?QQf^sKHN~FDs_}x%Hlsl%Rv{~{PpW$)QS@C>8*>pDksZv>FI4J1n)Uiu(9ekSWNh8 zs6XA~_C|IR;@(#ft1C7`a!9o&%*K1d#PgQJYuDX_m}T$!Q5(UWSiHNFpdx257aXah z0t_;L!Iy;HmXN>xDxI=@BhA_j9)3-Z;k(w#6`AU7*DpR;CgwXT;Sd;y{Bdt`pHezz zI6_-u?^`&ut)Oqt8yE`pc{9gYu5Eh={ywN>g-PNnM7lm&(ROs-P6yD#Wfds42ZiQbepnT}Je2b3O+4qDLf zl!SqOp~GpM_V1!L$4}T`S9O|1xkQLhe2HmS503n@j((ZX&GcOUSjL{}TmxrIiw9)5 zdkZU))2ktA4VgT`uUW@Fk!&qG1iY{ubTK#WJ6~c0bbicy(CG2P68@DK{-!_FAl$<;X-bq zb|1uBJ{Rd>Pa>9rnP4&@3_O`qoHh!|VT$6xFyv+yZ^Z=8k96MNfn1M}!brfm6|XPj zO{P}6$L4}F)G_3o5)Rb&9RUZ=b{|%?;K}|1TgTNP0g1X^-@p$;)~eDt4q>Z>Kp#y zz-i>D>6AyE$mj8CyQ0#sVp}YQMW-dnOS%xs`Pm(IlNGJXNq`sGC{tYS7*NO%I$IK} z*w#8wpZ?z2WCKi3M=nmRTg4}y^@w^xhVrlK+0gJyy%2cI z1(7FmtXbl&R1Hn2$0l+cYqolmM&grP4N<-j)CbTY8P@li3vSFBss@-F9biJ)UmQ=% zz4??hbtK}?w@$#*gFI36LRxZxRr8;gG%N zbaYX*u6jvluI>Ai2T>%lo9eiYp#GC8^6|Z8nis|${ThyY2KoNXDFX0g`6F78=ieFg z5jZW0KR~a%6GYtwPM^T379R?gk^Xmzg#)KpjK-Gyf9GT@a84F6rXIn(KPQWU`tu#r zoA%!!)E68=|95`{PybIesx!`jWsyX$S^MEmly7axB6$H+SYj&n40zHj+}x66O4g4) ziU&n>o)#uZVACMttSJts_twVH=*QN-4I;Ith!H7RME)KXDFn>0(f~^b=M;44@90P| zKX?K=Z*Y+yle2ytC@q~iTjPLx$|{%6mfyTK_7NBD67W{yf2J0QBHi@&F04mu1j%u0f18<+yspBXQxqJuR{piZY(BA|>Bt$W)!A1u2y{;yzzTx`Qf74^ zD<`+H4;9CXbWYuWPtow53hyi(8mr#*wT)?qK^w%7)TE?eD}bP;Xc;E}Xfx<}ZqAnM zF3;*f{!^+bhQI^GXaOXNddD@j#26=O%E0C^&;P zy>``WNiJESQ1zIyh<_Wr@{K=yKngV;9D*Ohd9yfx-JPwFDfL*3+3C&dzT{lvGxYoU zj{%l_Ne}PQQuF}CIRA%R_Wc)3y}4sez=xtfzh4IrkpDk>{h*_CtjjzHGR?ar%c1S& z2=(E?K`Jnkx~l~X0+*Dh`N3((rTT_LeNL8x8y)38l5FB=5Pjvk1uSK(ym##t*gZJE z-^3ohBu|O2@u7Bya7q~auSOZxh-cB7c9d1H{PWoL-zdXAOTe)FpaL9(62iw}jjT1T!2 z20?(iNOC8{qmWKAqbLp{@0La+GrmY|DYI$x)S2~fC8q>YsEwaJM+hNTwEM*dWlhx` z5e~>MfD}>z3qyx~B|7p;M6~OKH-^+sW_3Q|H;?==JG(97GT0Fuvstr%WNb2@ZOm%J zxbMtN_orD_Z|W@_PQpn}h|X!@&nC;=ltW%P`yNz}?~%gYlqa}^DNOPW-AL777rGpi zNIgr7--yOllH=${_QPc?e9&Kei!PaTz%V=Vivn#+E#813JfnSXir-zKYj~iZ#Wr&7 znWUCu05=bJ$NYGbK>lXbp@DJE5s)nm06(aX>FH^C8*I^-^5SCHV1>E-;BYB>C5bup zT_jBYEkP1ET4Zbkrkx0|_xlM}%n%UxQ1S96-AV2)4!aq|i{GyqezBT8#jb_I z`vvya)kBkSv9TYS z40=);ZZ3jLN=n{j?=u(}4!74h42N7_QZb3bE}kU_f{hug*b?YCyP{}CITpPPR^|Zl z0jRBT=~T-C?02Swfe{iz+mJe0t{W}Ir~K7A7XAKm9n9-c=_?6~#bo5{HK|YMLG|*I zhO336CT}C+@e`#3WIH8}+^lBNu~ZwpGqzQVrp*1nYn4yg8MTCG$em%jPl(m=V|6(nFJY=%du~D}9uh6;ha5BM=eCyRkgSFa5 z&HSk~pOjyLxzNU`bhWIJRYBUK#o!aFwOtW9{~pLm@{w`uJ9GbN66V|BBrF0wzCud` zR_hI~#hd~F9?6Un3*h^-5M5w+xn9Lbs$ z2Hl9c?o5~dOfEA4@szQ(2wz9-51}W53%9>WgA~m;=~mac1}o+f2h)V`hsSuVnO)6% zC>9qm*E(}+5hdLkxX49j#3N94Qz-W=#MJDQ!7ehF2W^1^>a-2aMx+K3$Uz$^Bn~JHH zt=zZY(HP6DB(W03H{aj5uj=Z;Dul0l1se5UcCfr8FDyxBF~tFxT!t>}|KK!$wy{9_LHb6$&FP&`Rm>HZ|cPo9IlnMv(JKBeJi+9|}kVrzxD z>I&V~Z(ZT5JVuTbbwQ`xO0x!xGMS*eL*;V{!{a;M57{Nqdkh1m`JHVhR6WR4Z*56S zRPi+>C6|_O2|e_?eF|67t?_E`+syf=-vtqBTukujay3 zWN7OeWJ9o-5gF+T+vpV!n|zUna93aFo}&W^PbHZW*@RlmHPgEH-s#}?W5)BTlZkBk z7fL(>)utmy0s@bae!ROQrabD}GAH)9vNry`W+obfCjdlGh3e7m;zz*gRxJq1!AC1y z+*4p598a}t^+ZPj}L0Gm|9}T5s{8RUkXe(=Ci)4;&bT|IYHw+*4TSDzy zcrk+bLT{1|P!+JZ_NU{_B1tT&*7htVZm)M<&0a4$U+kabw_?;ixcJg(Jyk{Kmqa-D zl}54aI@`(U1KGvuxEu4fFB-FnqtM|#m1v>#oa6>>>3Ykcd3xu(JUYA&931YQfFLN8 z@y_V4rx#B}A$L9$Aw)$2Ka*D~m=B+dc86FN;>-ex&E_1cAHXX{;4YyY??lAHu=uH20FX6nfl%)^rHfaK0`{X%SjIgHSdb}Yl z&Ba&rCatg#vU;838N__JYXIvER*Ke>bYDR@JhaQ)Gu+AKgAhk89?je)1lAejfq49F0SV4_PZia3{v9tGkobTw|E)cJcgXMdilThIe!8 zo)qtBt9nJJ$cZx`OV=mv;v^qgBYylFE=niQt+%rX(GL0gptY z6mnqvnS5rWcA+O>%4zk+7v8llt2$=BQp|C|7dMa8B-O@!l)QmKIyKNbRUVWZAT&~@ zhO0YDOK}gBo0PKWmg6>hex%q~2{8rQN~*ZJa%Zb}=N1a?@4pf4#nh+^j+~)@_fxFfPE{pkYC~(-Td#2fWe(zV^89MTO775) ztlu|-jZ(CtC#ya}WTHHt>{`pCQ5^I%dpPXc8Vf@<5jcks$R^R^*Z>Uz^8QJNC-T@; zL!&uH;*a-D<)(7r6iUnbDR!(gO~Tf}W|fGDXr$K3mU6t=sZCT=RNQw@tCT#-mhFoi zE;7fGYpwj5`zXHLd62tr2Gfymp7@6B!Z=E<1WS%nyvj&!SH)%H3uGjul!1YPT+pFy zVnR84JN``N=oY@x+|`*gs&xH9N1190&>dp|<}@ay6!X#Td~O#jQ0)PqSHdr~mhYS# zRcz%kL9|GCZU|Rizhi!gR&KDyz(egvN@g&WwE&dPL}Lo}OgIFjHyZ21nf(g4^D*a( zK*5^j@;6TG(a}_>NTrRI%Y8~%5cfL|H{W=T#ne=g{@;WH2)UDJKl@kiG62ipGGol= z%{>5QkN_YA8(;k^xb?gTA(}+~6P0_ubjlq-d_4vJRli~a0VHEpF-!g;)RUhCAPxo2 z`%c4t_wyDL#G*{)6nb#?)iA-kf*m}<;6K1ofX_29k?iLU? zd>`ooixyukB)s?k3VyNR^MLxE1m%8>VBM{mXKw@kRoj?A%)usSDv0wx1K=r2au7fd z=M~FjcxSz`0bJhi?BRhYeEJ<#6xgteeaqdNivy{;sd8;@^5n4eAoo$~^v}{JEN7B7 zwhWd^8$P=6#{EA}g{!^a%~d+;FUzTp;Q!WA7{SU55qs8NF874!q>zl55qXo{J?VaC zbCGgdC3+Zy%x9*nFao&;S%}P&uyu z;b?=W1rDPX#SF#Rl>kq1y^oVnetlX@?R&GyZcLv1l#7||Wif`W>6aV_UxY*k%{N!Ib z4tN0x2&=5RT%GK|PUhpOCZ^+^$Fl^~`VvwXa+L-neqeRKwR$X&3f>Rc-yh`}FmtU61&;_phIy9?7g zhjU5MF8}P`Ryt5xDJWbLHF`91yoyAkdiC=sHG6Pr)9A=ZPZ@!jWlIekUj{>*W=8g? zn?c<8+Bf}58zb3nwYcanrLqZ>1U8CTScu=8L{8l&+P)NQbvv)9-MFj} zP-le{fvC7e(O1IXCv2cS$!2&kLS|mPQ!1dmulj)Af+&#whRD%jCAMU=NT)@ZfEPQQ zeE9NDys*I8S$-1xQOk#O@#Y!ittiVBZ$w{TU*&QW?A88c^o`=dE|Q3uhG3+2SP~Co zgOa7h-VpW{5kW}pmFv~kcJHa*p!%+Gt;E@J77;P=o$4PCnC&!vCl`N)hX*1gNL{M} zBNUoTnvuPeFgv&t@xo|ef7Q+`csFh3ZDb)qln3srUJ4Z-N(9)SvY+_};6B z5g3@7nwb#9=Ptb74)JqV#~Z3dvfaD7gB@w)^xL%8vdZ=Ri0G>xI0$S?F0Ln1d+~z- z(vYZ9=Yu(UHH{%}r3hW5S=3#3z5=Snq#-1#<+y01`j&n1LqT%2s1WMvXe0Hl> zz#a*j*0KBM$0#o8AMJOa)wkmP?c+GvQWx$EENbUBl^ zJ^m2Pfnvy3NYh=W9+CLcw`YX?>;zAa9QAZn5=tVG{o+@Zm`MB3k|#sy!#zPtpq;9y|m zm*vI@ueCYgk?R7U z$MZPs5&)?dJ#nF}wRO`FRD6ME4(3cRIwmPF^Na997)Lm7ct3V~0piTNnf+PXh^QnV zqHBsd8=ic+p5B1S8nZR^xOJM7`MyEy$yn-d_1p5i*~N>_sxApJao&xd6prqF&-2uY z{V=Qvv}goo>x$j2pVjgZKEsB9(3(B=`58>nCyDCI_dfkZ_6ox2>oi;mgKJ4n-plP$ zn;DU7N-|1BUdcH5Ck+u3Pri!@O3`DwV-xDrz)r`ZA#(X@Q5f!%op;PGeqhL-KRqyn zaIVrBz*G8oa>Kd^$K~dHGMkFNC!5hHMlRmkY8KV;!d|3NcW5}(`O zL%Ky370tiV5f&=3h4%kk_a0389mSL;wA+?n5LGEOl%gR2xe~Q0tV#;bPrPDQ>G3I< zA%xpqpk00=IS-5g1gcRDflMFi=~EG4hh)(|R%vSz(!T1~X}Bu7eU5cm@BCP$Q|av= zUm(T_>cKtr2y`>m{2p$I?*1isVwgoqJ@34|B5cD;a<$T8a73F42yejt zc)LQ6t-374gH#p3baWIf*1wR2Cv9OJaW!Jra@`k1FUFfuCRlB;$T>`*^U}20=gHwm z*P-qYhC5qz9|H4cQy_l^OPC6L_b}wfqYcTE=eW^pcs-=HClR&JdfbW}2FDLvj9m$5 z#ll6`455lIcE2Vt2lPO@5`D}Jsh7r}H8E!(${PulJl#A7S-z1o-eVGo-g z`Q&~jBXe}9$Dl9~lgId`12KE!S3qE)lj4WD7{G&TRCs;W)BKg@TB@HR-=VNU9&R9eoOHwUUkx z@FAuQTT-G|Du57OY^ERC#?!RBF(flBjHkH+S6f%Ydb{3haONO=IvTBgdvnchvm9_m zL&#~D)vi=?DjAE%b7dFlEqI_(yV68pO%*NxjID5iV50?y-eq1%sao6E ze6_>n<-x{R6Sc!*ev*9vDKcz}{P4`7uZF6CalXXyEwT;Mpzby|$IJ{&IbwUQ+og_T z8etKo`3DVOROU_j?uhXjD%P?d>GHKd$*eQ`!qwC5v;9w1L0kJZ;qFRX3kn;zrnjR{ zC3zAUZ;tDfub1=_!h2e`!=;0liGr1qHjoh8hlYI(5FKzjc@bNZ=6$tJTNg*pnYpQ@ zHoH5iTc;OKs^45-;!WpZ*S1E9F+C-24x3Q+fo3kWU0;6t=0tde>ZtYAg`=6W`_ zbk5xi36BMF2$#GLn>v+P_3~RnE#-}FA$Q$;>nvQ;5|_@w)@)Y`+UDFNH9o?xfu&Ca zr#JjMj`QPdblSH0LkO1T>WPTgMH|h`Lr2k38*d3F!aKPty1l+UTVw0poyOg9y1v#R zGy;ofHTtGB0VtZu)UFVpM=WMw^tQUC&9ph&RsIH}}K~g&S$y zntcif8rg%`>?UFLf()rS22kBY3p$J4&g>l9(<-LEq>K2;U)b4^RmD>66_pLhsoCri z;cd$Bp=~@Lm3I^QS>_w|Gz`zWuu>j8rs9V~rXp+fDGZ@igZ^!1iFrQJQfO)FlktSV z>+<8dcC*s&sC?PKO?h(AJ7+=L@a|VZmo9*G+NCZ<>c7n#4A6Vjs)*_S)Ab+4>_=Ja z=iWCJp1fViHDRB4ardiODW31(CC<94N)+y!IiR-!3&A$(e_u?7{{~!yp8hB>Fz|RHry{PaqvIP_LVWClNb~3lPA%!W-hQblwXS|K0SggVp7NZ0gTn&K zPC}^~%>bWtZu2koNiOk`k={U5>};XH)%!6ykVClbLm$)bWr{N1^6ILI;lO5brs5)+ zjBNN$c1AY1%3%>WgeXdSOg#VZF=hNc0iU(GrDb$5wq^olc6R|>Y|z-&_P9Hmt|mBP z(>WUygBM%S`C11cV=YrN{2GZh;&q(?=%VXvg=x3*ykEUtf@@$oo6fQDjNQe$E2WNW zZA9yXO$wl6aNUdRO?y;AP6A+$>2RPhdMw)wVGx}c34NObEv)9W$8{;`>Z zPPHZl8;|0yOrey8V^u?CHKzlvi>|IdoyWlG`rs0MJ?PM-_b$~p5);80|I}^&(}ap6 zKC^pLS!O|l=*hpC3ji}mnrHUoe&*=G%zX((bon=P@4?JHS7iM+a}dzG`nPvo>OEjd z0R)j~@&5r<9Q4*$YMQ$TEY=-heWF6|0XuRB*n$IX%X`2E-2t|_OXMD~n|FX6cPwJN zN2oA>AogedwEO0lJHVQ9PvGAploUWPsHo)AeX|<$9%UigM!QGobMPR-%9B+0O%2d{ z^CkNK6^|_uRA!PQa=JH!yWd)s}*Z{~8FN^`7QkOH^Ac}pk+8Ep7tB2m#MQ-9T;W^-L$ zMG$=P=a=a6MU{_wurnQ>O1VkY)e0Xqbth>E$m6RQNJ~joWZeR<&XtRi5&63=PN!$q zA!j>E>fIHt#62AD5(VMC#o&LO7d7h1-*S^ry3E1vc zuIKN--6M3)Nii{0)4Wq_z6$@~+P}7fT z$4%dujXI3yyvG_nEqO|)4r<{*c$lUtZviG4fCu|bxlDiUEw zjm6i8){J>1)znraM^`!4zWHmTSedI0vEdE=SN}_wEwU`m_n+r?OeJF2UkLf3X19!8 zOuS}i$J4E?eOqpe>-I?ApX#>-iokfPP%#Jq!C%^u%-Q{J%tdsP^mirldzk=4=L&qr zzDKYnK(I6Zr{DK0GYjmg4KJ}2KmC0fz$n1ls(h}`{dcwe-}}oFqazzXH-Y&e6%|z@ z*sTkK9XByrH-EW=J^}FJ)YbkLe z#!EJbeCR8v>#ZLG9X}O4{g^QKmnVW35~$+h?Mk=|Bl@-)W|7g!;V8HvFB%jAsjBhX z!~{YJI56VbEd9K_g`niWomA!JeOwP#S*JOgx>9U8$lKUtl)sUo68LyAJ{Pn2k@A)g z|HPgGWKmzNp{K~Et8n-hm6u~9utr7Wtr=@-67?*$G@9x5G(0v=w{2U~iLWq!PDEsp z;B`wT3tls)TjS`6PYK>Gr$pBUv)vV-x=_zLo&Q=ikf%g ztcjm{W`6n`g6zP_Z2fPaKukuxj%O_|A0Z;@hCpyL?00pPy^E&>2g)tAgnnDj6gv44 zSRhFL_tF)?)^29o>|nC^Z@YZ^1MK6ee(_EJ?aZE^9>?s5avp}n{|7x(uuWTLEf^I2 z2PJKJu#u*PaW7^3x8)0gT^Qe_>cyM?P>HAD`D8wetiS5NExb_%K-BN01%mkhDSy(l zQ)Z9`ZyVTvg+j$4fSSGa-r+rcShwOy4ko3AIlxw-i^HY(I96)LzMcU!Md<(7Q@ zNGepVb1Pko%XcZ>fP{xtV&uFzvzyFl+L9E!i!059&`}&1h!JT`O<~Db`9#gxtbP+d z1hvNt)C8P~sA{EX&JOnN+kd3?Pwa}6Z}&U(YD*VU`?R`zD*bs7V6fI{9iB*)Sw4}xshigsmR@1E|r)@s(}yfGBMMp{2&$a6O{85I)|K`2oFMS9zl z#DlN0h^ATmnu4OM8+eY=Dw~H$>QO%l$l#qy3)-OCgHA_n*CZ=MlAB4<0KP zs6Sz2V}oIIzIpQo6;Ry&yIZBbMz%ll=XJXI^1_yHP1qo9*$1)bvw+eh3&9MQmT^sD4iJ)817xI0UH+{rg_ky?}v=Nc1ru&O!(2EDz z1X_Hkp|dYL!q@1zyj6$^+oG?F@fZh03x>P-4EvLW0bveYN#OaMOr+y8xU~ZnyxiM> z*6}U4d$Z1mradAq(wi-e;5Y6yan(}QNnm2iI?S#IL_?)*Z#vi_A{;;VU=@utfT!J> zm$SHb6Wm@b%~TRBpRpAT)Rp^qWu!}G%<3>)0AtlyB#;F8?<9KoGuQq&X z#R#K4Mv!k$nx*P#Io*5o>ZBR&Y9$tGWqn$pD?T;xhM^FzKkTr5T>#ptxp{mI7rHPx z@q&`X4zOfIEaGV zTCLCaKQ9M7%FaBDi7A=K#P&Ug(9c>cZ?#sVfplg4vD^Ckf>$VnA$2*day6(NoD&N} z#|R6y*4G1?n*}A}S<%SJe>-pa6~y{{{mRW4RgpLFd9M0W@#o%c;X3+&8dnB1`#j#%M z>g)UBYB~z+UIF6HE5ZgQu|U2`vx0I#TctHZP-dFfEK3vb^K!axF%q675%oR7ryX0RaZBb;r1;<36q$45HgIV+!#)~h;rWd zJqaf-{;zXksyEeM%Vjx~CeVzv?)L4a@1>u~cztDCZ8wTM=YoFhLtiv>LG$P}2x`XE zoQhPKLNJm&T-ru%Di4Bbrd=m9Fvva5n)zwsAW5p~qHQ(?vt^apgpURC4=$>nCb%k_%kF3}H9^M9@&E zJo9prWIOYDz$`CLu;yMUd9L)*Ml2#t!O!4!u%3UQ?j>AJPJ}tup9LRASO7WyD^C_~cGeOHyI|*`^Mz}*K5+}LFfuNt zOCHhibUFJ{S+f&8w894N9&Xric2*{#{9n;ec-pSdbmaNGUZe-*BIMUWr}AO!q;Jfv37h#NwP4MscyAwoi$a=2iQRm_{Rx6`8)`t;&%K39K%gERUG^)7 zxtuT4kO3?3RHW@NvFb##8r3qd(6Vjwu-#opBqcYK(mg!1sja8y(3$tl7CvF<*4Evj z?AT?m&L7-G)-^smH;C|3je19Q1I;ge3C0o?&6CW3c@uAKvenLhJ}t{$&Ftq;gE(*$ z*tYnrUQ#l?Sd$E%tPSfL_vqsD>Sg;ut0~utCKqQ6qnnOW?WHW_kZLY|3XKAv*7eXF zul_RMZclQmREwv9@8%@yCZiG>d3bk$%7@cx>JnLcq3VS&_AISglj=Md zonrU)2D8R=pKGn~fLw;wx}zhM;KBN+U_71NlD0$3jq{(zv-|x@)r)3&2roI}7q;Y% zIllylGT*eS5p+jm)Z0BtvJ;{=4%f0=(em>0gvkl1Ow^#KCzsgVY#4SCjh$V_vYL}z z7mXx)TJu_O^@q@1KY=UtMo}k(zj==`Bi{?JsIylW$_}?@FU-lsmr_?>RJ2v~;K4(& zkM9NK!?l!HjYc{STg$t;&lBLqQ1@Y5Yrt(t&uk?Co^seJYe6^nUE!NdGStiUV>*sxdoq_o>iVp!Zh+ZQT1z zh!_}VTDqQ-`^*x}Gtj%~RT0X4DhUeWohTfG%ljra$V267Kbv@bpGq163rY;7)a|~B ze3uG+i?j`YABY=+2Z8!d^4>QegWfcFkL#pgp^_p9d$+?%N-HmE(%(3!T4@l zckUvKoUE)B&;pcgU%kr9Gm{_8teFk`S}V~iLf|7^^D4%SaPI_kI}Qp)enwbxT%mOj;@Dwulr{LU)4`yp}xLo|iYbQ1G-h-6GbNlZ1; z`r-WmpMU`_XEWGl{M$Wc40JE2SVFj;o*fW!np*Zu=>F}_pATlwRPs04{ajCBYB!J1 z#T2*y&mRW`pSTeGd!&?60%+7R>W1HAp&THmkmUv2J@^}aw*`|JM#DjM69 diff --git a/man/figures/survival.png b/man/figures/survival.png deleted file mode 100644 index 7a2af400a67ae695bbc8a6e73aa6dd3c845be105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43332 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 diff --git a/man/figures/timevary.png b/man/figures/timevary.png deleted file mode 100644 index d4a696579a436567ae4d85c6c24ecb5a5fb85600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65748 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≈cZxHUw-5)0W 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 diff --git a/man/figures/timevarysurvival.png b/man/figures/timevarysurvival.png deleted file mode 100644 index e7c20be7b0510ff433397dcfd7c39873d2de25f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72075 zcmdpehd2p5w9`E<{zOL*31S`r*UcJ6Al!a!q_2%`3)1-LQ$f}J9@01$KEU-hN$3?8|%xLSvlOOwMd{#&5s=T6Q?)&FZ zqS$0+5HlbzKM+n#)K*k&tgnwlFuoHTOXxk!B3%0DdY_W;0X7~#MWZgVA%n;;TKzLo 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 WCkdB%Eq(<2(b9n2F1=;*zknf diff --git a/man/ipsi.Rd b/man/ipsi.Rd deleted file mode 100644 index 9fcc91d2..00000000 --- a/man/ipsi.Rd +++ /dev/null @@ -1,32 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/shift.R -\name{ipsi} -\alias{ipsi} -\title{IPSI Function Factory} -\usage{ -ipsi(delta) -} -\arguments{ -\item{delta}{[\code{numeric(1)}]\cr -A risk ratio between 0 and Inf.} -} -\value{ -A shift function. -} -\description{ -A function factory that returns a shift function for increasing or decreasing -the probability of exposure when exposure is binary. -} -\examples{ -\donttest{ -data("iptwExWide", package = "twang") -a <- paste0("tx", 1:3) -baseline <- c("gender", "age") -tv <- list(c("use0"), c("use1"), c("use2")) -lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, - shift = ipsi(0.5), outcome_type = "continuous", folds = 2) -} -} -\seealso{ -\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} -} diff --git a/man/lmtp-package.Rd b/man/lmtp-package.Rd deleted file mode 100644 index 211ad080..00000000 --- a/man/lmtp-package.Rd +++ /dev/null @@ -1,28 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/lmtp-package.R -\docType{package} -\name{lmtp-package} -\alias{lmtp} -\alias{lmtp-package} -\title{lmtp: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies} -\description{ -Non-parametric estimators for casual effects based on longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck \doi{10.1080/01621459.2021.1955691}, traditional point treatment, and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects can be calculated and relative risks and odds ratios may be calculated for binary outcomes. -} -\seealso{ -Useful links: -\itemize{ - \item \url{https://github.com/nt-williams/lmtp} - \item Report bugs at \url{https://github.com/nt-williams/lmtp/issues} -} - -} -\author{ -\strong{Maintainer}: Nicholas Williams \email{ntwilliams.personal@gmail.com} (\href{https://orcid.org/0000-0002-1378-4831}{ORCID}) [copyright holder] - -Authors: -\itemize{ - \item Iván Díaz \email{ild2005@med.cornell.edu} (\href{https://orcid.org/0000-0001-9056-2047}{ORCID}) [copyright holder] -} - -} -\keyword{internal} diff --git a/man/lmtp_contrast.Rd b/man/lmtp_contrast.Rd deleted file mode 100644 index a1e4a9e0..00000000 --- a/man/lmtp_contrast.Rd +++ /dev/null @@ -1,69 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/contrasts.R -\name{lmtp_contrast} -\alias{lmtp_contrast} -\title{Perform Contrasts of LMTP Fits} -\usage{ -lmtp_contrast(..., ref, type = c("additive", "rr", "or")) -} -\arguments{ -\item{...}{One or more objects of class lmtp.} - -\item{ref}{A reference value or another lmtp fit to compare all other fits against.} - -\item{type}{The contrasts of interest. Options are "additive" (the default), -"rr", and "or".} -} -\value{ -A list of class \code{lmtp_contrast} containing the following components: - -\item{type}{The type of contrast performed.} -\item{null}{The null hypothesis.} -\item{vals}{A dataframe containing the contrasts estimates, standard errors, and confidence intervals.} -\item{eifs}{Un-centered estimated influence functions for contrasts estimated.} -} -\description{ -Estimates contrasts of multiple LMTP fits compared to either a known reference value -or a reference LMTP fit. -} -\examples{ -\donttest{ - a <- c("A1", "A2") - nodes <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - y <- "Y" - - # mean population outcome - psi_null <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 1) - - # treatment rule, everyone is increased by 0.5 - d <- function(data, x) data[[x]] + 0.5 - psi_rule1 <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, - shift = d, folds = 1, mtp = TRUE) - - # treatment rule, everyone is decreased by 0.5 - d <- function(data, x) data[[x]] - 0.5 - psi_rule2 <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, - shift = d, folds = 1, mtp = TRUE) - - # Example 1.1 - # Additive effect of rule 1 compared to a known constant - lmtp_contrast(psi_rule1, ref = 0.9) - - # Example 1.2 - # Additive effect of rule 1 compared to the population mean outcome - lmtp_contrast(psi_rule1, ref = psi_null) - - # Example 1.3 - # Additive effects of rule 1 and 2 compared to the population mean outcome - lmtp_contrast(psi_rule1, psi_rule2, ref = psi_null) - - # Example 1.4 - # Relative risk of rule 1 compared to observed exposure - lmtp_contrast(psi_rule1, ref = psi_null, type = "rr") - - # Example 1.5 - # Odds of rule 1 compared to observed exposure - lmtp_contrast(psi_rule1, ref = psi_null, type = "or") -} -} diff --git a/man/lmtp_ipw.Rd b/man/lmtp_ipw.Rd deleted file mode 100644 index 702e7ec1..00000000 --- a/man/lmtp_ipw.Rd +++ /dev/null @@ -1,302 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/estimators.R -\name{lmtp_ipw} -\alias{lmtp_ipw} -\title{LMTP IPW Estimator} -\usage{ -lmtp_ipw( - data, - trt, - outcome, - baseline = NULL, - time_vary = NULL, - cens = NULL, - shift = NULL, - shifted = NULL, - mtp = FALSE, - k = Inf, - id = NULL, - outcome_type = c("binomial", "continuous", "survival"), - learners = "SL.glm", - folds = 10, - weights = NULL, - .bound = 1e-05, - .trim = 0.999, - .learners_folds = 10, - .return_full_fits = FALSE, - ... -) -} -\arguments{ -\item{data}{[\code{data.frame}]\cr -A \code{data.frame} in wide format containing all necessary variables -for the estimation problem. Must not be a \code{data.table}.} - -\item{trt}{[\code{character}] or [\code{list}]\cr -A vector containing the column names of treatment variables ordered by time. -Or, a list of vectors, the same length as the number of time points of observation. -Vectors should contain column names for the treatment variables at each time point. The list -should be ordered following the time ordering of the model.} - -\item{outcome}{[\code{character}]\cr -The column name of the outcome variable. In the case of time-to-event -analysis, a vector containing the columns names of intermediate outcome variables and the final -outcome variable ordered by time. Only numeric values are allowed. If the outcome type -is binary, data should be coded as 0 and 1.} - -\item{baseline}{[\code{character}]\cr -An optional vector containing the column names of baseline covariates to be -included for adjustment at every time point.} - -\item{time_vary}{[\code{list}]\cr -A list the same length as the number of time points of observation with -the column names for new time-varying covariates introduced at each time point. The list -should be ordered following the time ordering of the model.} - -\item{cens}{[\code{character}]\cr -An optional vector of column names of censoring indicators the same -length as the number of time points of observation. If missingness in the outcome is -present or if time-to-event outcome, must be provided.} - -\item{shift}{[\code{closure}]\cr -A two argument function that specifies how treatment variables should be shifted. -See examples for how to specify shift functions for continuous, binary, and categorical exposures.} - -\item{shifted}{[\code{data.frame}]\cr -An optional data frame, the same as in \code{data}, but modified according -to the treatment policy of interest. If specified, \code{shift} is ignored.} - -\item{mtp}{[\code{logical(1)}]\cr -Is the intervention of interest a modified treatment policy? -Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} - -\item{k}{[\code{integer(1)}]\cr -An integer specifying how previous time points should be -used for estimation at the given time point. Default is \code{Inf}, -all time points.} - -\item{id}{[\code{character(1)}]\cr -An optional column name containing cluster level identifiers.} - -\item{outcome_type}{[\code{character(1)}]\cr -Outcome variable type (i.e., continuous, binomial, survival).} - -\item{learners}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -\bold{Only include candidate learners capable of binary classification}.} - -\item{folds}{[\code{integer(1)}]\cr -The number of folds to be used for cross-fitting.} - -\item{weights}{[\code{numeric(nrow(data))}]\cr -An optional vector containing sampling weights.} - -\item{.bound}{[\code{numeric(1)}]\cr -Determines that maximum and minimum values (scaled) predictions -will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999.} - -\item{.trim}{[\code{numeric(1)}]\cr -Determines the amount the density ratios should be trimmed. -The default is 0.999, trimming the density ratios greater than the 0.999 percentile -to the 0.999 percentile. A value of 1 indicates no trimming.} - -\item{.learners_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners}.} - -\item{.return_full_fits}{[\code{logical(1)}]\cr -Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} -} -\value{ -A list of class \code{lmtp} containing the following components: - -\item{estimator}{The estimator used, in this case "IPW".} -\item{theta}{The estimated population LMTP effect.} -\item{standard_error}{NA} -\item{low}{NA} -\item{high}{NA} -\item{shift}{The shift function specifying the treatment policy of interest.} -\item{density_ratios}{An n x Tau matrix of the estimated density ratios.} -\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold of density ratio estimation.} -} -\description{ -Inverse probability of treatment weighting estimator for the effects of traditional causal -effects and modified treatment policies for both point treatment and longitudinal data -with binary, continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -} -\details{ -\subsection{Should \code{mtp = TRUE}?}{ - -A modified treatment policy (MTP) is an intervention that depends -on the natural value of the exposure (the value that the treatment would have taken under no intervention). -This differs from other causal effects, -such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -by some amount, use \code{mtp = TRUE}}. -} -} -\examples{ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_ipw(ex1_dat, "A", "Y", "W", mtp = TRUE, shift = policy, - outcome_type = "continuous", folds = 2) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_ipw(sim_t4, A, "Y", time_vary = L, - shift = policy, folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_ipw(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - shift = policy, k = 0, folds = 2) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_ipw(sim_t4, A, "Y", time_vary = L, - k = 0, mtp = TRUE, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) \%in\% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_ipw(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_ipw(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_ipw(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_ipw(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} -} diff --git a/man/lmtp_sdr.Rd b/man/lmtp_sdr.Rd deleted file mode 100644 index 6a09186b..00000000 --- a/man/lmtp_sdr.Rd +++ /dev/null @@ -1,324 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/estimators.R -\name{lmtp_sdr} -\alias{lmtp_sdr} -\title{LMTP Sequential Doubly Robust Estimator} -\usage{ -lmtp_sdr( - data, - trt, - outcome, - baseline = NULL, - time_vary = NULL, - cens = NULL, - shift = NULL, - shifted = NULL, - k = Inf, - mtp = FALSE, - outcome_type = c("binomial", "continuous", "survival"), - id = NULL, - bounds = NULL, - learners_outcome = "SL.glm", - learners_trt = "SL.glm", - folds = 10, - weights = NULL, - .bound = 1e-05, - .trim = 0.999, - .learners_outcome_folds = 10, - .learners_trt_folds = 10, - .return_full_fits = FALSE, - ... -) -} -\arguments{ -\item{data}{[\code{data.frame}]\cr -A \code{data.frame} in wide format containing all necessary variables -for the estimation problem. Must not be a \code{data.table}.} - -\item{trt}{[\code{character}] or [\code{list}]\cr -A vector containing the column names of treatment variables ordered by time. -Or, a list of vectors, the same length as the number of time points of observation. -Vectors should contain column names for the treatment variables at each time point. The list -should be ordered following the time ordering of the model.} - -\item{outcome}{[\code{character}]\cr -The column name of the outcome variable. In the case of time-to-event -analysis, a vector containing the columns names of intermediate outcome variables and the final -outcome variable ordered by time. Only numeric values are allowed. If the outcome type -is binary, data should be coded as 0 and 1.} - -\item{baseline}{[\code{character}]\cr -An optional vector containing the column names of baseline covariates to be -included for adjustment at every time point.} - -\item{time_vary}{[\code{list}]\cr -A list the same length as the number of time points of observation with -the column names for new time-varying covariates introduced at each time point. The list -should be ordered following the time ordering of the model.} - -\item{cens}{[\code{character}]\cr -An optional vector of column names of censoring indicators the same -length as the number of time points of observation. If missingness in the outcome is -present or if time-to-event outcome, must be provided.} - -\item{shift}{[\code{closure}]\cr -A two argument function that specifies how treatment variables should be shifted. -See examples for how to specify shift functions for continuous, binary, and categorical exposures.} - -\item{shifted}{[\code{data.frame}]\cr -An optional data frame, the same as in \code{data}, but modified according -to the treatment policy of interest. If specified, \code{shift} is ignored.} - -\item{k}{[\code{integer(1)}]\cr -An integer specifying how previous time points should be -used for estimation at the given time point. Default is \code{Inf}, -all time points.} - -\item{mtp}{[\code{logical(1)}]\cr -Is the intervention of interest a modified treatment policy? -Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} - -\item{outcome_type}{[\code{character(1)}]\cr -Outcome variable type (i.e., continuous, binomial, survival).} - -\item{id}{[\code{character(1)}]\cr -An optional column name containing cluster level identifiers.} - -\item{bounds}{[\code{numeric(2)}]\cr -An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -the bounds will be taken as the minimum and maximum of the observed data. -Should be left as \code{NULL} if the outcome type is binary.} - -\item{learners_outcome}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} - -\item{learners_trt}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -\bold{Only include candidate learners capable of binary classification}.} - -\item{folds}{[\code{integer(1)}]\cr -The number of folds to be used for cross-fitting.} - -\item{weights}{[\code{numeric(nrow(data))}]\cr -An optional vector containing sampling weights.} - -\item{.bound}{[\code{numeric(1)}]\cr -Determines that maximum and minimum values (scaled) predictions -will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999.} - -\item{.trim}{[\code{numeric(1)}]\cr -Determines the amount the density ratios should be trimmed. -The default is 0.999, trimming the density ratios greater than the 0.999 percentile -to the 0.999 percentile. A value of 1 indicates no trimming.} - -\item{.learners_outcome_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners_outcome}.} - -\item{.learners_trt_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners_trt}.} - -\item{.return_full_fits}{[\code{logical(1)}]\cr -Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} -} -\value{ -A list of class \code{lmtp} containing the following components: - -\item{estimator}{The estimator used, in this case "SDR".} -\item{theta}{The estimated population LMTP effect.} -\item{standard_error}{The estimated standard error of the LMTP effect.} -\item{low}{Lower bound of the 95\% confidence interval of the LMTP effect.} -\item{high}{Upper bound of the 95\% confidence interval of the LMTP effect.} -\item{eif}{The estimated, un-centered, influence function of the estimate.} -\item{shift}{The shift function specifying the treatment policy of interest.} -\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -The mean of the first column is used for calculating theta.} -\item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} -\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold for the outcome regression.} -\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold of density ratio estimation.} -\item{outcome_type}{The outcome variable type.} -} -\description{ -Sequentially doubly robust estimator for the effects of traditional causal effects and -modified treatment policies for both point treatment and longitudinal data with binary, -continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -} -\details{ -\subsection{Should \code{mtp = TRUE}?}{ - -A modified treatment policy (MTP) is an intervention that depends -on the natural value of the exposure (the value that the treatment would have taken under no intervention). -This differs from other causal effects, -such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -by some amount, use \code{mtp = TRUE}}. -} -} -\examples{ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_sdr(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2, mtp = TRUE) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, - folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_sdr(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) \%in\% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_sdr(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_sdr( - iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2 - ) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_sdr(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_sdr(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} -} diff --git a/man/lmtp_sub.Rd b/man/lmtp_sub.Rd deleted file mode 100644 index f19858b8..00000000 --- a/man/lmtp_sub.Rd +++ /dev/null @@ -1,282 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/estimators.R -\name{lmtp_sub} -\alias{lmtp_sub} -\title{LMTP Substitution Estimator} -\usage{ -lmtp_sub( - data, - trt, - outcome, - baseline = NULL, - time_vary = NULL, - cens = NULL, - shift = NULL, - shifted = NULL, - k = Inf, - outcome_type = c("binomial", "continuous", "survival"), - id = NULL, - bounds = NULL, - learners = "SL.glm", - folds = 10, - weights = NULL, - .bound = 1e-05, - .learners_folds = 10, - .return_full_fits = FALSE -) -} -\arguments{ -\item{data}{[\code{data.frame}]\cr -A \code{data.frame} in wide format containing all necessary variables -for the estimation problem. Must not be a \code{data.table}.} - -\item{trt}{[\code{character}] or [\code{list}]\cr -A vector containing the column names of treatment variables ordered by time. -Or, a list of vectors, the same length as the number of time points of observation. -Vectors should contain column names for the treatment variables at each time point. The list -should be ordered following the time ordering of the model.} - -\item{outcome}{[\code{character}]\cr -The column name of the outcome variable. In the case of time-to-event -analysis, a vector containing the columns names of intermediate outcome variables and the final -outcome variable ordered by time. Only numeric values are allowed. If the outcome type -is binary, data should be coded as 0 and 1.} - -\item{baseline}{[\code{character}]\cr -An optional vector containing the column names of baseline covariates to be -included for adjustment at every time point.} - -\item{time_vary}{[\code{list}]\cr -A list the same length as the number of time points of observation with -the column names for new time-varying covariates introduced at each time point. The list -should be ordered following the time ordering of the model.} - -\item{cens}{[\code{character}]\cr -An optional vector of column names of censoring indicators the same -length as the number of time points of observation. If missingness in the outcome is -present or if time-to-event outcome, must be provided.} - -\item{shift}{[\code{closure}]\cr -A two argument function that specifies how treatment variables should be shifted. -See examples for how to specify shift functions for continuous, binary, and categorical exposures.} - -\item{shifted}{[\code{data.frame}]\cr -An optional data frame, the same as in \code{data}, but modified according -to the treatment policy of interest. If specified, \code{shift} is ignored.} - -\item{k}{[\code{integer(1)}]\cr -An integer specifying how previous time points should be -used for estimation at the given time point. Default is \code{Inf}, -all time points.} - -\item{outcome_type}{[\code{character(1)}]\cr -Outcome variable type (i.e., continuous, binomial, survival).} - -\item{id}{[\code{character(1)}]\cr -An optional column name containing cluster level identifiers.} - -\item{bounds}{[\code{numeric(2)}]\cr -An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -the bounds will be taken as the minimum and maximum of the observed data. -Should be left as \code{NULL} if the outcome type is binary.} - -\item{learners}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} - -\item{folds}{[\code{integer(1)}]\cr -The number of folds to be used for cross-fitting.} - -\item{weights}{[\code{numeric(nrow(data))}]\cr -An optional vector containing sampling weights.} - -\item{.bound}{[\code{numeric(1)}]\cr -Determines that maximum and minimum values (scaled) predictions -will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999.} - -\item{.learners_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners}.} - -\item{.return_full_fits}{[\code{logical(1)}]\cr -Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} -} -\value{ -A list of class \code{lmtp} containing the following components: - -\item{estimator}{The estimator used, in this case "substitution".} -\item{theta}{The estimated population LMTP effect.} -\item{standard_error}{NA} -\item{low}{NA} -\item{high}{NA} -\item{shift}{The shift function specifying the treatment policy of interest.} -\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -The mean of the first column is used for calculating theta.} -\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold for the outcome regression.} -\item{outcome_type}{The outcome variable type.} -} -\description{ -G-computation estimator for the effects of traditional causal effects and -modified treatment policies for both point treatment and longitudinal data with binary, -continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -} -\examples{ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_sub(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, folds = 2) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_sub(sim_t4, A, "Y", time_vary = L, k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) \%in\% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_sub(tmp, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_sub(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous") - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_sub(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_sub(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1) -} -} diff --git a/man/lmtp_tmle.Rd b/man/lmtp_tmle.Rd deleted file mode 100644 index a138ae0c..00000000 --- a/man/lmtp_tmle.Rd +++ /dev/null @@ -1,321 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/estimators.R -\name{lmtp_tmle} -\alias{lmtp_tmle} -\title{LMTP Targeted Maximum Likelihood Estimator} -\usage{ -lmtp_tmle( - data, - trt, - outcome, - baseline = NULL, - time_vary = NULL, - cens = NULL, - shift = NULL, - shifted = NULL, - k = Inf, - mtp = FALSE, - outcome_type = c("binomial", "continuous", "survival"), - id = NULL, - bounds = NULL, - learners_outcome = "SL.glm", - learners_trt = "SL.glm", - folds = 10, - weights = NULL, - .bound = 1e-05, - .trim = 0.999, - .learners_outcome_folds = 10, - .learners_trt_folds = 10, - .return_full_fits = FALSE, - ... -) -} -\arguments{ -\item{data}{[\code{data.frame}]\cr -A \code{data.frame} in wide format containing all necessary variables -for the estimation problem. Must not be a \code{data.table}.} - -\item{trt}{[\code{character}] or [\code{list}]\cr -A vector containing the column names of treatment variables ordered by time. -Or, a list of vectors, the same length as the number of time points of observation. -Vectors should contain column names for the treatment variables at each time point. The list -should be ordered following the time ordering of the model.} - -\item{outcome}{[\code{character}]\cr -The column name of the outcome variable. In the case of time-to-event -analysis, a vector containing the columns names of intermediate outcome variables and the final -outcome variable ordered by time. Only numeric values are allowed. If the outcome type -is binary, data should be coded as 0 and 1.} - -\item{baseline}{[\code{character}]\cr -An optional vector containing the column names of baseline covariates to be -included for adjustment at every time point.} - -\item{time_vary}{[\code{list}]\cr -A list the same length as the number of time points of observation with -the column names for new time-varying covariates introduced at each time point. The list -should be ordered following the time ordering of the model.} - -\item{cens}{[\code{character}]\cr -An optional vector of column names of censoring indicators the same -length as the number of time points of observation. If missingness in the outcome is -present or if time-to-event outcome, must be provided.} - -\item{shift}{[\code{closure}]\cr -A two argument function that specifies how treatment variables should be shifted. -See examples for how to specify shift functions for continuous, binary, and categorical exposures.} - -\item{shifted}{[\code{data.frame}]\cr -An optional data frame, the same as in \code{data}, but modified according -to the treatment policy of interest. If specified, \code{shift} is ignored.} - -\item{k}{[\code{integer(1)}]\cr -An integer specifying how previous time points should be -used for estimation at the given time point. Default is \code{Inf}, -all time points.} - -\item{mtp}{[\code{logical(1)}]\cr -Is the intervention of interest a modified treatment policy? -Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} - -\item{outcome_type}{[\code{character(1)}]\cr -Outcome variable type (i.e., continuous, binomial, survival).} - -\item{id}{[\code{character(1)}]\cr -An optional column name containing cluster level identifiers.} - -\item{bounds}{[\code{numeric(2)}]\cr -An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, -the bounds will be taken as the minimum and maximum of the observed data. -Should be left as \code{NULL} if the outcome type is binary.} - -\item{learners_outcome}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} - -\item{learners_trt}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation -of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. -\bold{Only include candidate learners capable of binary classification}.} - -\item{folds}{[\code{integer(1)}]\cr -The number of folds to be used for cross-fitting.} - -\item{weights}{[\code{numeric(nrow(data))}]\cr -An optional vector containing sampling weights.} - -\item{.bound}{[\code{numeric(1)}]\cr -Determines that maximum and minimum values (scaled) predictions -will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999.} - -\item{.trim}{[\code{numeric(1)}]\cr -Determines the amount the density ratios should be trimmed. -The default is 0.999, trimming the density ratios greater than the 0.999 percentile -to the 0.999 percentile. A value of 1 indicates no trimming.} - -\item{.learners_outcome_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners_outcome}.} - -\item{.learners_trt_folds}{[\code{integer(1)}]\cr -The number of cross-validation folds for \code{learners_trt}.} - -\item{.return_full_fits}{[\code{logical(1)}]\cr -Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} -} -\value{ -A list of class \code{lmtp} containing the following components: - -\item{estimator}{The estimator used, in this case "TMLE".} -\item{theta}{The estimated population LMTP effect.} -\item{standard_error}{The estimated standard error of the LMTP effect.} -\item{low}{Lower bound of the 95\% confidence interval of the LMTP effect.} -\item{high}{Upper bound of the 95\% confidence interval of the LMTP effect.} -\item{eif}{The estimated, un-centered, influence function of the estimate.} -\item{shift}{The shift function specifying the treatment policy of interest.} -\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. -The mean of the first column is used for calculating theta.} -\item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} -\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold for the outcome regression.} -\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point -for each fold of density ratio estimation.} -\item{outcome_type}{The outcome variable type.} -} -\description{ -Targeted maximum likelihood estimator for the effects of traditional causal effects and -modified treatment policies for both point treatment and longitudinal data with binary, -continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. -} -\details{ -\subsection{Should \code{mtp = TRUE}?}{ - -A modified treatment policy (MTP) is an intervention that depends -on the natural value of the exposure (the value that the treatment would have taken under no intervention). -This differs from other causal effects, -such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. -\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values -by some amount, use \code{mtp = TRUE}}. -} -} -\examples{ -\donttest{ - set.seed(56) - n <- 1000 - W <- rnorm(n, 10, 5) - A <- 23 + 5*W + rnorm(n) - Y <- 7.2*A + 3*W + rnorm(n) - ex1_dat <- data.frame(W, A, Y) - - # Example 1.1 - # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up - # Interested in the effect of a modified treatment policy where A is decreased by 15 - # units only among observations whose observed A was above 80. - # The true value under this intervention is about 513. - policy <- function(data, x) { - (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] - } - - lmtp_tmle(ex1_dat, "A", "Y", "W", shift = policy, - outcome_type = "continuous", folds = 2, mtp = TRUE) - - # Example 2.1 - # Longitudinal setting, time-varying continuous exposure bounded by 0, - # time-varying covariates, and a binary outcome with no loss-to-follow-up. - # Interested in the effect of a treatment policy where exposure decreases by - # one unit at every time point if an observations observed exposure is greater - # than or equal to 2. The true value under this intervention is about 0.305. - head(sim_t4) - - A <- c("A_1", "A_2", "A_3", "A_4") - L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - policy <- function(data, trt) { - a <- data[[trt]] - (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) - } - - # BONUS: progressr progress bars! - progressr::handlers(global = TRUE) - - lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, - folds = 2, mtp = TRUE) - - # Example 2.2 - # The previous example assumed that the outcome (as well as the treatment variables) - # were directly affected by all other nodes in the past. In certain situations, - # domain specific knowledge may suggest otherwise. - # This can be controlled using the k argument. - lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 2.3 - # Using the same data as examples 2.1 and 2.2. - # Now estimating the effect of a dynamic modified treatment policy. - # creating a dynamic mtp that applies the shift function - # but also depends on history and the current time - policy <- function(data, trt) { - mtp <- function(data, trt) { - (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) - } - - # if its the first time point, follow the same mtp as before - if (trt == "A_1") return(mtp(data, trt)) - - # otherwise check if the time varying covariate equals 1 - ifelse( - data[[sub("A", "L", trt)]] == 1, - mtp(data, trt), # if yes continue with the policy - data[[trt]] # otherwise do nothing - ) - } - - lmtp_tmle(sim_t4, A, "Y", time_vary = L, mtp = TRUE, - k = 0, shift = policy, folds = 2) - - # Example 2.4 - # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure - # as an ordered categorical variable. To account for the exposure being a - # factor we just need to modify the shift function (and the original data) - # so as to respect this. - tmp <- sim_t4 - for (i in A) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) - } - - policy <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) \%in\% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) - } - - lmtp_tmle(tmp, A, "Y", time_vary = L, shift = policy, - k = 0, folds = 2, mtp = TRUE) - - # Example 3.1 - # Longitudinal setting, time-varying binary treatment, time-varying covariates - # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" - # causal effect where treatment is set to 1 at all time points for all observations. - if (require("twang")) { - data("iptwExWide", package = "twang") - - A <- paste0("tx", 1:3) - W <- c("gender", "age") - L <- list(c("use0"), c("use1"), c("use2")) - - lmtp_tmle(iptwExWide, A, "outcome", baseline = W, time_vary = L, - shift = static_binary_on, outcome_type = "continuous", - mtp = FALSE, folds = 2) - } - - # Example 4.1 - # Longitudinal setting, time-varying continuous treatment, time-varying covariates, - # binary outcome with right censoring. Interested in the mean population outcome under - # the observed exposures in a hypothetical population with no loss-to-follow-up. - head(sim_cens) - - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - C <- c("C1", "C2") - Y <- "Y" - - lmtp_tmle(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) - - # Example 5.1 - # Time-to-event analysis with a binary time-invariant exposure. Interested in - # the effect of treatment being given to all observations on the cumulative - # incidence of the outcome. - # For a survival problem, the outcome argument now takes a vector of outcomes - # if an observation experiences the event prior to the end of follow-up, all future - # outcome nodes should be set to 1 (i.e., last observation carried forward). - A <- "trt" - Y <- paste0("Y.", 1:6) - C <- paste0("C.", 0:5) - W <- c("W1", "W2") - - lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, - shift = static_binary_on, outcome_type = "survival") - - # Example 6.1 - # Intervening on multiple exposures simultaneously. Interested in the effect of - # a modified treatment policy where variable D1 is decreased by 0.1 units and - # variable D2 is decreased by 0.5 units simultaneously. - A <- list(c("D1", "D2")) - W <- paste0("C", 1:3) - Y <- "Y" - - d <- function(data, a) { - out = list( - data[[a[1]]] - 0.1, - data[[a[2]]] - 0.5 - ) - setNames(out, a) - } - - lmtp_tmle(multivariate_data, A, Y, W, shift = d, - outcome_type = "continuous", folds = 1, mtp = TRUE) -} -} diff --git a/man/multivariate_data.Rd b/man/multivariate_data.Rd deleted file mode 100644 index 41d7cd36..00000000 --- a/man/multivariate_data.Rd +++ /dev/null @@ -1,25 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.R -\docType{data} -\name{multivariate_data} -\alias{multivariate_data} -\title{Simulated Multivariate Exposure Data} -\format{ -A data frame with 2000 rows and 6 variables: -\describe{ -\item{C1}{Continuous baseline variable.} -\item{C2}{Continuous baseline variable.} -\item{C3}{Continuous baseline variable.} -\item{D1}{Treatment variable one at baseline.} -\item{D2}{Treatment variable two at baseline.} -\item{Y}{Continuous outcome} -} -} -\usage{ -multivariate_data -} -\description{ -A dataset with a continuous outcome, three baseline covariates, -and two treatment variables. -} -\keyword{datasets} diff --git a/man/reexports.Rd b/man/reexports.Rd deleted file mode 100644 index 824a6293..00000000 --- a/man/reexports.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tidy.R -\docType{import} -\name{reexports} -\alias{reexports} -\alias{tidy} -\title{Objects exported from other packages} -\keyword{internal} -\description{ -These objects are imported from other packages. Follow the links -below to see their documentation. - -\describe{ - \item{generics}{\code{\link[generics]{tidy}}} -}} - diff --git a/man/sim_cens.Rd b/man/sim_cens.Rd deleted file mode 100644 index 9222d6e4..00000000 --- a/man/sim_cens.Rd +++ /dev/null @@ -1,26 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.R -\docType{data} -\name{sim_cens} -\alias{sim_cens} -\title{Simulated Longitudinal Data With Censoring} -\format{ -A data frame with 1000 rows and 10 variables: -\describe{ -\item{L1}{Time varying covariate time 1} -\item{A1}{Treatment node at time 1, effected by L_1} -\item{C1}{Censoring indicator that the observation is observed after time 1} -\item{L2}{Time varying covariate at time 2, effected by L_1 and A_1} -\item{A2}{Treatment node at time 2, effected by L_2 and A_1} -\item{C2}{Censoring indicator that the observation is observed after time 2} -\item{Y}{Binary outcome at time 3, effected by L_2 and A_2} -} -} -\usage{ -sim_cens -} -\description{ -A dataset with a binary outcome, two time varying treatment nodes, -two time varying covariates, and two censoring indicators. -} -\keyword{datasets} diff --git a/man/sim_point_surv.Rd b/man/sim_point_surv.Rd deleted file mode 100644 index 9698e75b..00000000 --- a/man/sim_point_surv.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.R -\docType{data} -\name{sim_point_surv} -\alias{sim_point_surv} -\title{Simulated Point-treatment Survival Data} -\format{ -A data frame with 2000 rows and 16 variables: -\describe{ -\item{W1}{Binary baseline variable.} -\item{W2}{Categorical baseline variable.} -\item{trt}{Binary treatment variable.} -\item{C.0}{Censoring indicator that the observation is observed future time points.} -\item{Y.1}{Outcome node at time 1.} -\item{C.1}{Censoring indicator that the observation is observed future time points.} -\item{Y.2}{Outcome node at time 2.} -\item{C.2}{Censoring indicator that the observation is observed future time points.} -\item{Y.3}{Outcome node at time 3.} -\item{C.3}{Censoring indicator that the observation is observed future time points.} -\item{Y.4}{Outcome node at time 4.} -\item{C.4}{Censoring indicator that the observation is observed future time points.} -\item{Y.5}{Outcome node at time 5.} -\item{C.5}{Censoring indicator that the observation is observed future time points.} -\item{Y.6}{Final outcome node.} -} -} -\usage{ -sim_point_surv -} -\description{ -A dataset with a time-to-event outcome, two baseline nodes, a binary -point treatment, six past-time outcome nodes, and six censoring indicators. -} -\keyword{datasets} diff --git a/man/sim_t4.Rd b/man/sim_t4.Rd deleted file mode 100644 index 0fc7f56c..00000000 --- a/man/sim_t4.Rd +++ /dev/null @@ -1,29 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.R -\docType{data} -\name{sim_t4} -\alias{sim_t4} -\title{Simulated Longitudinal Data} -\format{ -A data frame with 5000 rows and 10 variables: -\describe{ -\item{ID}{observation ID} -\item{L_1}{Time varying covariate time 1} -\item{A_1}{Treatment node at time 1, effected by L_1} -\item{L_2}{Time varying covariate time 1, effected by L_1 and A_1} -\item{A_2}{Treatment node at time 2, effected by L_2 and A_1} -\item{L_3}{Time varying covariate time 1, effected by L_2 and A_2} -\item{A_3}{Treatment node at time 3, effected by L_3 and A_2} -\item{L_4}{Time varying covariate time 1, effected by L_3 and A_3} -\item{A_4}{Treatment node at time 3, effected by L_4 and A_3} -\item{Y}{Binary outcome at time 5, effected by L_4 and A_4} -} -} -\usage{ -sim_t4 -} -\description{ -A dataset with a binary outcome, four time varying treatment nodes, -and four time varying covariates. -} -\keyword{datasets} diff --git a/man/sim_timevary_surv.Rd b/man/sim_timevary_surv.Rd deleted file mode 100644 index a0f525a3..00000000 --- a/man/sim_timevary_surv.Rd +++ /dev/null @@ -1,32 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.R -\docType{data} -\name{sim_timevary_surv} -\alias{sim_timevary_surv} -\title{Simulated Time-varying Survival Data} -\format{ -A data frame with 500 rows and 11 variables: -\describe{ -\item{L0.a}{Continuous baseline variable.} -\item{L0.b}{Time varying covariate at baseline.} -\item{L0.c}{Time varying covariate at baseline.} -\item{A0}{Treatment variable at baseline} -\item{C0}{Censoring indicator that the observation is observed future time points.} -\item{L1.a}{Time varying covariate at time 1.} -\item{L1.b}{Time varying covariate at time 1.} -\item{Y1}{Outcome node at time 1.} -\item{A1}{Treatment variable at time 1.} -\item{C1}{Censoring indicator that the observation is observed future time points.} -\item{Y2}{Final outcome node.} -} -} -\usage{ -sim_timevary_surv -} -\description{ -A dataset with a time-to-event outcome, one baseline nodes, two time-varying -covariates, a binary time-varying treatment, two outcome nodes, -and two censoring indicators. Data-generating mechanism taken from -Lendle, Schwab, Petersen, and van der Laan (\url{https://www.jstatsoft.org/article/view/v081i01}). -} -\keyword{datasets} diff --git a/man/static_binary_off.Rd b/man/static_binary_off.Rd deleted file mode 100644 index f522e398..00000000 --- a/man/static_binary_off.Rd +++ /dev/null @@ -1,33 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/shift.R -\name{static_binary_off} -\alias{static_binary_off} -\title{Turn All Treatment Nodes Off} -\usage{ -static_binary_off(data, trt) -} -\arguments{ -\item{data}{A dataframe containing the treatment variables.} - -\item{trt}{The name of the current treatment variable.} -} -\value{ -A dataframe with all treatment nodes set to 0. -} -\description{ -A pre-packaged shift function for use with provided estimators when the exposure is binary. -Used to estimate the population intervention effect when all treatment variables are set to 0. -} -\examples{ -\donttest{ -data("iptwExWide", package = "twang") -a <- paste0("tx", 1:3) -baseline <- c("gender", "age") -tv <- list(c("use0"), c("use1"), c("use2")) -lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, - shift = static_binary_off, outcome_type = "continuous", folds = 2) -} -} -\seealso{ -\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} -} diff --git a/man/static_binary_on.Rd b/man/static_binary_on.Rd deleted file mode 100644 index 73fcd521..00000000 --- a/man/static_binary_on.Rd +++ /dev/null @@ -1,33 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/shift.R -\name{static_binary_on} -\alias{static_binary_on} -\title{Turn All Treatment Nodes On} -\usage{ -static_binary_on(data, trt) -} -\arguments{ -\item{data}{A dataframe containing the treatment variables.} - -\item{trt}{The name of the current treatment variable.} -} -\value{ -A dataframe with all treatment nodes set to 1. -} -\description{ -A pre-packaged shift function for use with provided estimators when the exposure is binary. -Used to estimate the population intervention effect when all treatment variables are set to 1. -} -\examples{ -\donttest{ -data("iptwExWide", package = "twang") -a <- paste0("tx", 1:3) -baseline <- c("gender", "age") -tv <- list(c("use0"), c("use1"), c("use2")) -lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, - shift = static_binary_on, outcome_type = "continuous", folds = 2) -} -} -\seealso{ -\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} -} diff --git a/man/tidy.lmtp.Rd b/man/tidy.lmtp.Rd deleted file mode 100644 index 687bcfae..00000000 --- a/man/tidy.lmtp.Rd +++ /dev/null @@ -1,28 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tidy.R -\name{tidy.lmtp} -\alias{tidy.lmtp} -\title{Tidy a(n) lmtp object} -\usage{ -\method{tidy}{lmtp}(x, ...) -} -\arguments{ -\item{x}{A \code{lmtp} object produced by a call to \code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, -\code{\link[=lmtp_sub]{lmtp_sub()}}, or \code{\link[=lmtp_ipw]{lmtp_ipw()}}.} - -\item{...}{Unused, included for generic consistency only.} -} -\description{ -Tidy a(n) lmtp object -} -\examples{ -\donttest{ -a <- c("A1", "A2") -nodes <- list(c("L1"), c("L2")) -cens <- c("C1", "C2") -y <- "Y" -fit <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 2) -tidy(fit) -} - -} diff --git a/tests/testthat.R b/tests/testthat.R deleted file mode 100644 index 7355cc47..00000000 --- a/tests/testthat.R +++ /dev/null @@ -1,4 +0,0 @@ -library(testthat) -library(lmtp) - -test_check("lmtp") diff --git a/tests/testthat/test-censoring.R b/tests/testthat/test-censoring.R deleted file mode 100644 index c7b2ae1c..00000000 --- a/tests/testthat/test-censoring.R +++ /dev/null @@ -1,19 +0,0 @@ -context("Fidelity of estimates with censoring") - -A <- c("A1", "A2") -L <- list(c("L1"), c("L2")) -C <- c("C1", "C2") -truth <- 0.8 - -sub <- sw(lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) -ipw <- sw(lmtp_ipw(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) -tmle <- sw(lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) -sdr <- sw(lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) - -# tests -test_that("estimator fidelity with censoring", { - expect_equal(truth, sub$theta, tolerance = 0.15) - expect_equal(truth, ipw$theta, tolerance = 0.15) - expect_equal(truth, tmle$theta, tolerance = 0.15) - expect_equal(truth, sdr$theta, tolerance = 0.15) -}) diff --git a/tests/testthat/test-checks.R b/tests/testthat/test-checks.R deleted file mode 100644 index e8d20622..00000000 --- a/tests/testthat/test-checks.R +++ /dev/null @@ -1,179 +0,0 @@ -context("Argument checks") - -test_that("'data' is a 'data.frame'", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(list(), A, "tmp_lmtp_stack_indicator", time_vary = L, cens = cens), - "Assertion on 'data' failed: Must be of type 'data.frame', not 'list'." - ) - - sim_cens <- data.table::as.data.table(sim_cens) - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'data' failed: Must be a 'data.frame', not a 'data.table'." - ) -}) - -test_that("No uncensored missing data", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - sim_cens$A2 <- NA_real_ - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'data' failed: Missing data found in treatment and/or covariate nodes for uncensored observations." - ) -}) - -test_that("Reserved variables", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - sim_cens$tmp_lmtp_stack_indicator <- sim_cens$Y - - expect_error( - lmtp_sub(sim_cens, A, "tmp_lmtp_stack_indicator", time_vary = L, cens = cens), - "Assertion on 'data' failed: 'lmtp_id', 'tmp_lmtp_stack_indicator', and 'tmp_lmtp_scaled_outcome' are reserved variable names." - ) -}) - -test_that("Incorrect folds", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 0), - "Assertion on 'folds' failed: Element 1 is not >= 1." - ) -}) - -test_that("Variables dont exist", { - A <- c("A", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id)' failed: Must be a subset of {'L1','A1','C1','L2','A2','C2','Y'}, but has additional elements {'A'}.", - fixed = TRUE - ) -}) - -test_that("Time_vary is a list", { - A <- c("A1", "A2") - L <- c("L1", "L2") - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'time_vary' failed: Must be of type 'list' (or 'NULL'), not 'character'.", - fixed = TRUE - ) -}) - -test_that("Variable length mismatch", { - A <- c("A1") - L <- c("L1", "L2") - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'cens' failed: Must have length 1, but has length 2." - ) -}) - -test_that("No outcome variation changes learners", { - x <- check_variation(rep(0.5, 10), "SL.glm") - y <- "SL.mean" - expect_equal(x, y) -}) - -test_that("Only 0 and 1 in 'outcome' when binary or surival", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - sim_cens$Y <- sample(c(3, 4), nrow(sim_cens), replace = TRUE) - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), - "Assertion on 'data' failed: Only 0 and 1 allowed in outcome variables if 'outcome_type' set to binomial or survival." - ) -}) - -test_that("Issues with 'outcome_type' being or not being survival", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - - expect_error( - lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, outcome_type = "survival"), - "Assertion on 'outcome' failed: Must have length >= 2, but has length 1." - ) - - A <- "trt" - Y <- paste0("Y.", 1:6) - cens <- paste0("C.", 0:5) - W <- c("W1", "W2") - - expect_error( - lmtp_ipw(sim_point_surv, A, Y, W, cens = cens, shift = static_binary_on), - "Assertion on 'outcome' failed: Must have length 1, but has length 6." - ) -}) - -test_that("Issues with 'shift' function and providing 'shifted' data", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - shifted <- shift_data(sim_cens, A, cens, function(data, trt) data[[trt]] + 0.5) - shifted$L1 <- 1 - - expect_error( - lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shift = function(data, trt, extra) data[[trt]] + 0.5), - "Assertion on 'shift' failed: Must have exactly 2 formal arguments, but has 3." - ) - - expect_error( - lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shifted = shifted), - "Assertion on 'shifted' failed: The only columns that can be different between `data` and `shifted` are those indicated in `trt` and `cens`." - ) - - shifted <- shift_data(sim_cens, A, NULL, function(data, trt) data[[trt]] + 0.5) - expect_error( - lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shifted = shifted), - "Assertion on 'shifted' failed: Censoring variables should be 1 in 'shifted'." - ) -}) - -test_that("Contrast assertions", { - A <- c("A1", "A2") - L <- list(c("L1"), c("L2")) - cens <- c("C1", "C2") - - fit <- lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1) - expect_error( - lmtp_contrast(fit, ref = 0.1), - "Assertion on 'fits' failed: Contrasts not implemented for substitution/IPW estimators." - ) - - fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1) - expect_error( - lmtp_contrast(fit, ref = c(0.1, 0.2)), - "Assertion on 'ref' failed: Must either be a single numeric value or another lmtp object." - ) - - expect_error( - lmtp_contrast(fit, "Not lmtp object", ref = 0.1), - "Assertion on 'fits' failed: Objects must be of type 'lmtp'." - ) - - fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1, outcome_type = "continuous") - expect_error( - lmtp_contrast(fit, ref = 0.1, type = "rr"), - "Assertion on 'type' failed: 'rr' specified but one or more outcome types are not 'binomial' or 'survival'." - ) -}) diff --git a/tests/testthat/test-dynamic.R b/tests/testthat/test-dynamic.R deleted file mode 100644 index 94bf0c2d..00000000 --- a/tests/testthat/test-dynamic.R +++ /dev/null @@ -1,56 +0,0 @@ -dynamic_vec <- function(data, trt) { - # the function should either be vectorized or iterate over the rows - if (trt == "A1") { # if the first time point set to 1 - return(rep(1, nrow(data))) - } else { # a vectorized version - (data[["L"]] > 0)*1 + (data[["L"]] <= 0)*0 # else return 1 or 0 based on L - } -} - -time_vary_on <- function(data, trt) { - if (trt == "A1") return(rep(1, nrow(data))) - else return(rep(0, nrow(data))) -} - -# test adapted from the ltmle package vignette for a dynamic intervention example with censoring -rexpit <- function(x) rbinom(n = length(x), size = 1, prob = plogis(x)) -n <- 10000 -W <- rnorm(n) -A1 <- rexpit(W) -C1 <- rexpit(0.6 * W - 0.5 * A1) -uncensored <- C1 == 1 -L <- A2 <- C2 <- Y <- rep(NA, n) -L[uncensored] <- (0.3 * W[uncensored] + 0.2 * A1[uncensored] + rnorm(sum(uncensored))) -A2[uncensored] <- rexpit(W[uncensored] + A1[uncensored] + L[uncensored]) -C2[uncensored] <- 1 -C2[!uncensored] <- 0 -Y[uncensored] <- rexpit(W[uncensored] - 0.6 * A1[uncensored] + L[uncensored] - 0.8 * A2[uncensored]) -sim <- data.frame(W, A1, C1, L, A2, C2, Y) -a <- c("A1", "A2") -baseline <- "W" -cens <- c("C1", "C2") -nodes <- list(c(NULL), c("L")) - -# truth = 0.308 -tml.stc <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = static_binary_on, folds = 1)) - -# truth = 0.528 -sdr.stc <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = static_binary_off, folds = 1)) - -# truth = 0.433 -tml.tv <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = time_vary_on, folds = 1)) -sdr.tv <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = time_vary_on, folds = 1)) - -# time varying and covariate dynamic -# truth = 0.345 -tml.dyn <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = dynamic_vec, folds = 1)) -sdr.dyn <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = dynamic_vec, folds = 1)) - -test_that("Dynamic intervention fidelity", { - expect_equal(0.308, tml.stc$theta, tolerance = 0.1) - expect_equal(0.528, sdr.stc$theta, tolerance = 0.1) - expect_equal(0.433, tml.tv$theta, tolerance = 0.1) - expect_equal(0.433, sdr.tv$theta, tolerance = 0.1) - expect_equal(0.345, tml.dyn$theta, tolerance = 0.1) - expect_equal(0.345, sdr.dyn$theta, tolerance = 0.1) -}) diff --git a/tests/testthat/test-node-list.txt b/tests/testthat/test-node-list.txt deleted file mode 100644 index 290b12a5..00000000 --- a/tests/testthat/test-node-list.txt +++ /dev/null @@ -1,243 +0,0 @@ -> a <- c("A_1", "A_2", "A_3", "A_4") -> bs <- c("W") -> nodes <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) -> create_node_list(a, 4, nodes, baseline = NULL, k = NULL) -$trt -$trt[[1]] -[1] "L_1" "A_1" - -$trt[[2]] -[1] "L_1" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "L_1" "A_1" - -$outcome[[2]] -[1] "L_1" "A_1" "L_2" "A_2" - -$outcome[[3]] -[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" - -$outcome[[4]] -[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, baseline = NULL, k = Inf) -$trt -$trt[[1]] -[1] "L_1" "A_1" - -$trt[[2]] -[1] "L_1" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "L_1" "A_1" - -$outcome[[2]] -[1] "L_1" "A_1" "L_2" "A_2" - -$outcome[[3]] -[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" - -$outcome[[4]] -[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, baseline = NULL, k = 0) -$trt -$trt[[1]] -[1] "L_1" "A_1" - -$trt[[2]] -[1] "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "L_1" "A_1" - -$outcome[[2]] -[1] "L_2" "A_2" - -$outcome[[3]] -[1] "L_3" "A_3" - -$outcome[[4]] -[1] "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, baseline = NULL, k = 1) -$trt -$trt[[1]] -[1] "L_1" "A_1" - -$trt[[2]] -[1] "L_1" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "L_2" "A_1" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "L_3" "A_2" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "L_1" "A_1" - -$outcome[[2]] -[1] "L_1" "A_1" "L_2" "A_2" - -$outcome[[3]] -[1] "L_2" "A_2" "L_3" "A_3" - -$outcome[[4]] -[1] "L_3" "A_3" "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, baseline = NULL, k = 2) -$trt -$trt[[1]] -[1] "L_1" "A_1" - -$trt[[2]] -[1] "L_1" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "L_1" "A_1" - -$outcome[[2]] -[1] "L_1" "A_1" "L_2" "A_2" - -$outcome[[3]] -[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" - -$outcome[[4]] -[1] "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, bs, k = 0) -$trt -$trt[[1]] -[1] "W" "L_1" "A_1" - -$trt[[2]] -[1] "W" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "W" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "W" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "W" "L_1" "A_1" - -$outcome[[2]] -[1] "W" "L_2" "A_2" - -$outcome[[3]] -[1] "W" "L_3" "A_3" - -$outcome[[4]] -[1] "W" "L_4" "A_4" - - - -> create_node_list(a, 4, nodes, bs, k = Inf) -$trt -$trt[[1]] -[1] "W" "L_1" "A_1" - -$trt[[2]] -[1] "W" "L_1" "L_2" "A_1" "A_2" - -$trt[[3]] -[1] "W" "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" - -$trt[[4]] -[1] "W" "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "W" "L_1" "A_1" - -$outcome[[2]] -[1] "W" "L_1" "A_1" "L_2" "A_2" - -$outcome[[3]] -[1] "W" "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" - -$outcome[[4]] -[1] "W" "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" - - - -> create_node_list(a, 4, NULL, bs, k = Inf) -$trt -$trt[[1]] -[1] "W" "A_1" - -$trt[[2]] -[1] "W" "A_1" "A_2" - -$trt[[3]] -[1] "W" "A_1" "A_2" "A_3" - -$trt[[4]] -[1] "W" "A_1" "A_2" "A_3" "A_4" - - -$outcome -$outcome[[1]] -[1] "W" "A_1" - -$outcome[[2]] -[1] "W" "A_1" "A_2" - -$outcome[[3]] -[1] "W" "A_1" "A_2" "A_3" - -$outcome[[4]] -[1] "W" "A_1" "A_2" "A_3" "A_4" - - - diff --git a/tests/testthat/test-node_list.R b/tests/testthat/test-node_list.R deleted file mode 100644 index 5622bd97..00000000 --- a/tests/testthat/test-node_list.R +++ /dev/null @@ -1,33 +0,0 @@ -context("Node list creation") - -test_that("create proper node lists, t > 1", { - verify_output(test_path("test-node-list.txt"), { - a <- c("A_1", "A_2", "A_3", "A_4") - bs <- c("W") - nodes <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - - # k = NULL - create_node_list(a, 4, nodes, baseline = NULL, k = NULL) - - # k = Inf - create_node_list(a, 4, nodes, baseline = NULL, k = Inf) - - # k = 0 - create_node_list(a, 4, nodes, baseline = NULL, k = 0) - - # k = 1 - create_node_list(a, 4, nodes, baseline = NULL, k = 1) - - # k = 2 - create_node_list(a, 4, nodes, baseline = NULL, k = 2) - - # Markov - create_node_list(a, 4, nodes, bs, k = 0) - - # Non-Markov with baseline - create_node_list(a, 4, nodes, bs, k = Inf) - - # NULL time-varying - create_node_list(a, 4, NULL, bs, k = Inf) - }) -}) diff --git a/tests/testthat/test-point_treatment.R b/tests/testthat/test-point_treatment.R deleted file mode 100644 index 638e103b..00000000 --- a/tests/testthat/test-point_treatment.R +++ /dev/null @@ -1,27 +0,0 @@ -context("Fidelity of estimators for a point treatment") - -set.seed(543523) - -n <- 1e4 -W1 <- rbinom(n, size = 1, prob = 0.5) -W2 <- rbinom(n, size = 1, prob = 0.65) -A <- rbinom(n, size = 1, prob = plogis(-0.4 + 0.2 * W2 + 0.15 * W1)) -Y.1 <-rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) -Y.0 <- rbinom(n, size = 1, prob = plogis(-1 + 0 - 0.1 * W1 + 0.3 * W2)) - -Y <- Y.1 * A + Y.0 * (1 - A) -tmp <- data.frame(W1, W2, A, Y, Y.1, Y.0) -truth <- mean(tmp$Y.1) - -sub <- lmtp_sub(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) -ipw <- lmtp_ipw(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) -tmle <- lmtp_tmle(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) -sdr <- lmtp_sdr(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) - -# tests -test_that("point treatment fidelity", { - expect_equal(truth, sub$theta, tolerance = 0.025) - expect_equal(truth, ipw$theta, tolerance = 0.025) - expect_equal(truth, tmle$theta, tolerance = 0.025) - expect_equal(truth, sdr$theta, tolerance = 0.025) -}) diff --git a/tests/testthat/test-shifted.R b/tests/testthat/test-shifted.R deleted file mode 100644 index b85f90ba..00000000 --- a/tests/testthat/test-shifted.R +++ /dev/null @@ -1,36 +0,0 @@ -context("Fidelity of estimates with shifted data supplied") - -a <- c("A1", "A2") -nodes <- list(c("L1"), c("L2")) -cens <- c("C1", "C2") -truth <- 0.88 - -sc <- shift_data(sim_cens, a, cens, function(data, trt) data[[trt]] + 0.5) - -sub <- - sw(lmtp_sub(sim_cens, a, "Y", nodes, baseline = NULL, - cens, k = 0, shifted = sc, - outcome_type = "binomial", - folds = 2)) - -ipw <- - sw(lmtp_ipw(sim_cens, a, "Y", NULL, nodes, - cens, k = 0, shifted = sc, folds = 2, mtp = TRUE)) - -tmle <- - sw(lmtp_tmle(sim_cens, a, "Y", nodes, baseline = NULL, - cens, k = 0, shifted = sc, - outcome_type = "binomial", folds = 2, mtp = TRUE)) - -sdr <- - sw(lmtp_sdr(sim_cens, a, "Y", nodes, baseline = NULL, - cens, k = 0, shifted = sc, - outcome_type = "binomial", folds = 2, mtp = TRUE)) - -# tests -test_that("estimator fidelity with shifted data supplied", { - expect_equal(truth, sub$theta, tolerance = 0.05) - expect_equal(truth, ipw$theta, tolerance = 0.025) - expect_equal(truth, tmle$theta, tolerance = 0.025) - expect_equal(truth, sdr$theta, tolerance = 0.025) -}) diff --git a/tests/testthat/test-survey.R b/tests/testthat/test-survey.R deleted file mode 100644 index 2cdd6d5c..00000000 --- a/tests/testthat/test-survey.R +++ /dev/null @@ -1,40 +0,0 @@ -context("Survey weights") - -set.seed(429153) - -n <- 1e4 -W1 <- rbinom(n, size = 1, prob = 0.5) -W2 <- rbinom(n, size = 1, prob = 0.65) -A <- rbinom(n, size = 1, prob = plogis(-0.4 + 0.2 * W2 + 0.15 * W1)) -Y.1 <- rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) -Y.0 <- rbinom(n, size = 1, prob = plogis(-1 + 0 - 0.1 * W1 + 0.3 * W2)) - -Y <- Y.1 * A + Y.0 * (1 - A) -tmp <- data.frame(W1, W2, A, Y, Y.1, Y.0) -truth <- mean(tmp$Y.1) - -prob_S <- plogis(W1 * 0.5 + rnorm(n, mean = 0, sd = 1)) -S <- rbinom(n, 1, prob_S) -tmp <- tmp[S == 1, ] -wts <- 1 / prob_S[S == 1] - -sub <- lmtp_sub(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, - weights = wts, folds = 2) - -ipw <- lmtp_ipw(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, - weights = wts, folds = 2) - -tmle <- lmtp_tmle(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, - weights = wts, folds = 2) - -sdr <- lmtp_sdr(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, - weights = wts, folds = 2) - - -# tests -test_that("survey weight fidelity", { - expect_equal(truth, sub$theta, tolerance = 0.025) - expect_equal(truth, ipw$theta, tolerance = 0.025) - expect_equal(truth, tmle$theta, tolerance = 0.025) - expect_equal(truth, sdr$theta, tolerance = 0.025) -}) diff --git a/tests/testthat/test-time_varying_treatment.R b/tests/testthat/test-time_varying_treatment.R deleted file mode 100644 index 7e7cd1e0..00000000 --- a/tests/testthat/test-time_varying_treatment.R +++ /dev/null @@ -1,36 +0,0 @@ -context("Fidelity of estimators for time-varying treatment") - -tmp <- sim_t4 -a <- c("A_1", "A_2", "A_3", "A_4") -time_varying <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) - -for (i in a) { - tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) -} - -d <- function(data, trt) { - out <- list() - a <- data[[trt]] - for (i in 1:length(a)) { - if (as.character(a[i]) %in% c("0", "1")) { - out[[i]] <- as.character(a[i]) - } else { - out[[i]] <- as.numeric(as.character(a[i])) - 1 - } - } - factor(unlist(out), levels = 0:5, ordered = TRUE) -} - -truth <- 0.305 - -sub <- sw(lmtp_sub(tmp, a, "Y", time_vary = time_varying, shift = d, folds = 1)) -ipw <- sw(lmtp_ipw(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) -tmle <- sw(lmtp_tmle(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) -sdr <- sw(lmtp_sdr(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) - -test_that("time varying treatment fidelity, t = 4", { - expect_equal(truth, sub$theta, tolerance = 0.025) - expect_equal(truth, ipw$theta, tolerance = 0.05) - expect_equal(truth, tmle$theta, tolerance = 0.025) - expect_equal(truth, sdr$theta, tolerance = 0.025) -}) From 2be793174aeb91e303a08cc821b1baabb81ee1b7 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Wed, 24 Apr 2024 12:26:32 -0700 Subject: [PATCH 19/34] Git issues --- .Rbuildignore | 14 + .covrignore | 1 + .github/.gitignore | 1 + .github/ISSUE_TEMPLATE/feature_request.md | 22 + .github/ISSUE_TEMPLATE/issue-report.md | 28 + .github/workflows/R-CMD-check.yaml | 52 ++ .gitignore | 4 + DESCRIPTION | 48 ++ LICENSE.md | 659 +++++++++++++++++++ NAMESPACE | 39 ++ NEWS.md | 164 +++++ R/checks.R | 173 +++++ R/contrasts.R | 184 ++++++ R/data.R | 100 +++ R/density_ratios.R | 90 +++ R/estimators.R | 645 ++++++++++++++++++ R/gcomp.R | 85 +++ R/lmtp-package.R | 9 + R/lmtp_Task.R | 73 ++ R/lmtp_control.R | 32 + R/nodelist.R | 143 ++++ R/print.R | 23 + R/sdr.R | 113 ++++ R/shift.R | 129 ++++ R/sl.R | 31 + R/theta.R | 119 ++++ R/tidy.R | 30 + R/tmle.R | 109 +++ R/utils.R | 217 ++++++ README.Rmd | 183 +++++ README.md | 231 +++++++ codecov.yml | 14 + cran-comments.md | 13 + data/multivariate_data.rda | Bin 0 -> 94038 bytes data/sim_cens.rda | Bin 0 -> 16749 bytes data/sim_point_surv.rda | Bin 0 -> 6805 bytes data/sim_t4.rda | Bin 0 -> 22802 bytes data/sim_timevary_surv.rda | Bin 0 -> 15488 bytes inst/CITATION | 22 + inst/examples/contrasts-ex.R | 39 ++ inst/examples/ipw-ex.R | 163 +++++ inst/examples/sdr-ex.R | 165 +++++ inst/examples/sub-ex.R | 159 +++++ inst/examples/tmle-ex.R | 162 +++++ lmtp.Rproj | 21 + man/create_node_list.Rd | 46 ++ man/event_locf.Rd | 25 + man/figures/lmtp.png | Bin 0 -> 295373 bytes man/figures/pointtrt.png | Bin 0 -> 34606 bytes man/figures/survival.png | Bin 0 -> 43332 bytes man/figures/timevary.png | Bin 0 -> 65748 bytes man/figures/timevarysurvival.png | Bin 0 -> 72075 bytes man/ipsi.Rd | 32 + man/lmtp-package.Rd | 28 + man/lmtp_contrast.Rd | 69 ++ man/lmtp_control.Rd | 42 ++ man/lmtp_ipw.Rd | 286 ++++++++ man/lmtp_sdr.Rd | 304 +++++++++ man/lmtp_sub.Rd | 273 ++++++++ man/lmtp_tmle.Rd | 301 +++++++++ man/multivariate_data.Rd | 25 + man/reexports.Rd | 16 + man/sim_cens.Rd | 26 + man/sim_point_surv.Rd | 34 + man/sim_t4.Rd | 29 + man/sim_timevary_surv.Rd | 32 + man/static_binary_off.Rd | 33 + man/static_binary_on.Rd | 33 + man/tidy.lmtp.Rd | 28 + tests/testthat.R | 4 + tests/testthat/test-censoring.R | 19 + tests/testthat/test-checks.R | 179 +++++ tests/testthat/test-dynamic.R | 56 ++ tests/testthat/test-node-list.txt | 243 +++++++ tests/testthat/test-node_list.R | 33 + tests/testthat/test-point_treatment.R | 27 + tests/testthat/test-shifted.R | 36 + tests/testthat/test-survey.R | 40 ++ tests/testthat/test-time_varying_treatment.R | 36 + 79 files changed, 6844 insertions(+) create mode 100644 .Rbuildignore create mode 100644 .covrignore create mode 100644 .github/.gitignore create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/issue-report.md create mode 100644 .github/workflows/R-CMD-check.yaml create mode 100644 .gitignore create mode 100644 DESCRIPTION create mode 100755 LICENSE.md create mode 100644 NAMESPACE create mode 100644 NEWS.md create mode 100644 R/checks.R create mode 100644 R/contrasts.R create mode 100644 R/data.R create mode 100644 R/density_ratios.R create mode 100644 R/estimators.R create mode 100644 R/gcomp.R create mode 100644 R/lmtp-package.R create mode 100644 R/lmtp_Task.R create mode 100644 R/lmtp_control.R create mode 100644 R/nodelist.R create mode 100644 R/print.R create mode 100644 R/sdr.R create mode 100644 R/shift.R create mode 100644 R/sl.R create mode 100644 R/theta.R create mode 100644 R/tidy.R create mode 100644 R/tmle.R create mode 100644 R/utils.R create mode 100644 README.Rmd create mode 100644 README.md create mode 100644 codecov.yml create mode 100644 cran-comments.md create mode 100644 data/multivariate_data.rda create mode 100644 data/sim_cens.rda create mode 100644 data/sim_point_surv.rda create mode 100644 data/sim_t4.rda create mode 100644 data/sim_timevary_surv.rda create mode 100644 inst/CITATION create mode 100644 inst/examples/contrasts-ex.R create mode 100644 inst/examples/ipw-ex.R create mode 100644 inst/examples/sdr-ex.R create mode 100644 inst/examples/sub-ex.R create mode 100644 inst/examples/tmle-ex.R create mode 100755 lmtp.Rproj create mode 100644 man/create_node_list.Rd create mode 100644 man/event_locf.Rd create mode 100644 man/figures/lmtp.png create mode 100644 man/figures/pointtrt.png create mode 100644 man/figures/survival.png create mode 100644 man/figures/timevary.png create mode 100644 man/figures/timevarysurvival.png create mode 100644 man/ipsi.Rd create mode 100644 man/lmtp-package.Rd create mode 100644 man/lmtp_contrast.Rd create mode 100644 man/lmtp_control.Rd create mode 100644 man/lmtp_ipw.Rd create mode 100644 man/lmtp_sdr.Rd create mode 100644 man/lmtp_sub.Rd create mode 100644 man/lmtp_tmle.Rd create mode 100644 man/multivariate_data.Rd create mode 100644 man/reexports.Rd create mode 100644 man/sim_cens.Rd create mode 100644 man/sim_point_surv.Rd create mode 100644 man/sim_t4.Rd create mode 100644 man/sim_timevary_surv.Rd create mode 100644 man/static_binary_off.Rd create mode 100644 man/static_binary_on.Rd create mode 100644 man/tidy.lmtp.Rd create mode 100644 tests/testthat.R create mode 100644 tests/testthat/test-censoring.R create mode 100644 tests/testthat/test-checks.R create mode 100644 tests/testthat/test-dynamic.R create mode 100644 tests/testthat/test-node-list.txt create mode 100644 tests/testthat/test-node_list.R create mode 100644 tests/testthat/test-point_treatment.R create mode 100644 tests/testthat/test-shifted.R create mode 100644 tests/testthat/test-survey.R create mode 100644 tests/testthat/test-time_varying_treatment.R diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 00000000..8fa1b2b9 --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,14 @@ +^lmtp\.Rproj$ +^\.Rproj\.user$ +^LICENSE\.md$ +^README\.Rmd$ +^codecov\.yml$ +^\.travis\.yml$ +^\.github$ +^\.covrignore$ +^vignettes/articles$ +^cran-comments\.md$ +^CRAN-RELEASE$ +^inst/examples$ +^paper/ +^CRAN-SUBMISSION$ diff --git a/.covrignore b/.covrignore new file mode 100644 index 00000000..358e5936 --- /dev/null +++ b/.covrignore @@ -0,0 +1 @@ +R/print.R diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 00000000..d3fc626f --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..f0e77cfb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Suggest an idea for lmtp +title: '' +labels: '' +assignees: '' + +--- + +**First, go through the issues and make sure this hasn't already been requested** + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. Ex. "A change to the UI..." + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/issue-report.md b/.github/ISSUE_TEMPLATE/issue-report.md new file mode 100644 index 00000000..8c2613de --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue-report.md @@ -0,0 +1,28 @@ +--- +name: Issue report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the issue** +Please be clear and concise. + +**reprex** +Please include a reproducible example. This should include: +1. The code to create an example dataset. +2. The code necessary to arrive at the spot where the error occurs. + +More information on how and why to use a reprex can be found [here](https://community.rstudio.com/t/faq-whats-a-reproducible-example-reprex-and-how-do-i-do-one/5219). + +**Expected behavior** +Please include a description of the expected behavior. + +**Please include your R session info:** +``` +Put session info here +``` + +And lastly, please **be kind and respectful** :smile: diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 00000000..6e351e4e --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,52 @@ +# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. +# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +on: + push: + branches: + - master + - devel + pull_request: + branches: + - master + - devel + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macOS-latest, r: 'release'} + - {os: macOS-latest, r: 'oldrel'} + - {os: windows-latest, r: 'release'} + - {os: windows-latest, r: 'oldrel'} + - {os: ubuntu-18.04, r: 'release'} + + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + RSPM: ${{ matrix.config.rspm }} + + steps: + - uses: actions/checkout@v2 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..42defcc4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.Rproj.user +.Rapp.history +.DS_Store +inst/doc diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 00000000..14c2e99d --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,48 @@ +Package: lmtp +Title: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies +Version: 1.4.0 +Authors@R: + c(person(given = "Nicholas", + family = "Williams", + role = c("aut", "cre", "cph"), + email = "ntwilliams.personal@gmail.com", + comment = c(ORCID = "0000-0002-1378-4831")), + person(given = "Iván", + family = "Díaz", + email = "ild2005@med.cornell.edu", + role = c("aut", "cph"), + comment = c(ORCID = "0000-0001-9056-2047"))) +Description: Non-parametric estimators for casual effects based on longitudinal modified treatment + policies as described in Diaz, Williams, Hoffman, and Schenck , traditional point treatment, + and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are + censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure + irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects + can be calculated and relative risks and odds ratios may be calculated for binary outcomes. +Depends: + R (>= 2.10) +License: AGPL-3 +Encoding: UTF-8 +LazyData: true +Roxygen: list(markdown = TRUE) +RoxygenNote: 7.2.3 +Imports: + stats, + nnls, + cli, + R6, + generics, + origami, + future (>= 1.17.0), + progressr, + data.table (>= 1.13.0), + checkmate (>= 2.1.0), + SuperLearner +URL: https://github.com/nt-williams/lmtp +BugReports: https://github.com/nt-williams/lmtp/issues +Suggests: + testthat (>= 2.1.0), + covr, + rmarkdown, + knitr, + ranger, + twang diff --git a/LICENSE.md b/LICENSE.md new file mode 100755 index 00000000..6d4fac66 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,659 @@ +GNU Affero General Public License +================================= + +_Version 3, 19 November 2007_ +_Copyright (C) 2007 Free Software Foundation, Inc. <>_ + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +## Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains +free software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing +under this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +## TERMS AND CONDITIONS + +### 0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public +License. + +"Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a "modified version" of +the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays "Appropriate Legal Notices" to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +### 1. Source Code. + +The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +### 2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes +it unnecessary. + +### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +- a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. +- b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section 4 + to "keep intact all notices". +- c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +- d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +- a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +- b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. +- c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +- d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +- e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the general + public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +- a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +- b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +- c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +- d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or +- e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +- f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +### 8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree to +terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +### 13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your +version supports such interaction) an opportunity to receive the +Corresponding Source of your version by providing access to the +Corresponding Source from a network server at no charge, through some +standard or customary means of facilitating copying of software. This +Corresponding Source shall include the Corresponding Source for any +work covered by version 3 of the GNU General Public License that is +incorporated pursuant to the following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Affero General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +## How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively state +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for +the specific requirements. + +You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU AGPL, see . diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 00000000..102394ea --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,39 @@ +# Generated by roxygen2: do not edit by hand + +S3method(print,lmtp) +S3method(print,lmtp_contrast) +S3method(tidy,lmtp) +export(create_node_list) +export(event_locf) +export(ipsi) +export(lmtp_contrast) +export(lmtp_control) +export(lmtp_ipw) +export(lmtp_sdr) +export(lmtp_sub) +export(lmtp_tmle) +export(static_binary_off) +export(static_binary_on) +export(tidy) +importFrom(R6,R6Class) +importFrom(data.table,.SD) +importFrom(data.table,`:=`) +importFrom(data.table,as.data.table) +importFrom(generics,tidy) +importFrom(nnls,nnls) +importFrom(stats,as.formula) +importFrom(stats,binomial) +importFrom(stats,coef) +importFrom(stats,gaussian) +importFrom(stats,glm) +importFrom(stats,na.omit) +importFrom(stats,plogis) +importFrom(stats,pnorm) +importFrom(stats,predict) +importFrom(stats,qlogis) +importFrom(stats,qnorm) +importFrom(stats,quantile) +importFrom(stats,runif) +importFrom(stats,sd) +importFrom(stats,var) +importFrom(stats,weighted.mean) diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 00000000..f512846f --- /dev/null +++ b/NEWS.md @@ -0,0 +1,164 @@ +# lmtp 1.4.0 + +### New Features + +- Can now estimate the effects of simultaneous interventions on multiple variables. +- New pre-packaged shift function, `ipsi()` for estimating IPSI effects using the risk ratio. +- `lmtp_control()` now replaces extra estimator arguments. + +### Buf Fixes + +### General + +- The `intervention_type` argument has been fully deprecated. + +# lmtp 1.3.3 + +### New Features + +### Bug Fixes + +- Fixed a bug where estimators return incorrect parameter estimates for a specific DGP (see issue \#130) + +### General + +# lmtp 1.3.2 + +### New Features + +### Bug Fixes + +- Fixed bug in calculation of EIF where density ratios were not non-cumulative product ratios. Previous variance estimates starting with version 1.0 were incorrect. Point-estimates remain unaffected. + +### General + +- Updating citations + +# lmtp 1.3.1 + +### New Features + +- Added parameter `.return_full_fits`. Allows the user to decide if full SuperLearner fit should be returned (issue \#119). +- `intervention_type` argument replaced with `mtp`. + +### Bug Fixes + +- Added a check for `fits$id` being `NULL`. Fixes a backwards compatibility bug (issue \#117). +- `data.table` version must be 1.13.0 or later. This was when the function `fcase` was released (issue \#122). + +### General + +- Changed 'effect' to 'estimate' in 'Population mean effects' portion of output (issue \#120). + +# lmtp 1.3.0 + +### New Features + +### Bug Fixes + +### General + +- Major internal refactor. Argument checking is now performed using *checkmate* package. +- `.SL_folds` argument split into `.learners_outcome_folds` and `.learners_trt_folds`. + +# lmtp 1.1.0 + +### New Features + +### Bug Fixes + +- Corrected standard errors when providing `id` with `lmtp_contrast` (issue \#110). + +### General + +- Removed the requirement that `folds` must be greater than 1 (issue \#112). + +# lmtp 1.0.0 + +### New Features + +- New `shifted` parameter for directly passing shifted data instead of using a shift function (issue \#89). +- New `intervention_type` parameter required for specifying if the intervention of interest is a static regime, a dynamic regime, or a modified treatment policy (issue \#94). +- `return_all_ratios` removed as an argument. Returned density ratios are now non-cumulative product ratios. + +### Bug Fixes + +- Density ratio trimming now occurs in the same spot for all estimators and is only performed on non-cumulative product ratios (issue #\93). +- Fixed issue where `lmtp_tmle` and `lmtp_sdr` weren't using validation set density ratios. +- No longer fails when `data` is a `data.table` (issue \#88). + +### General + +- Removing extra column in `sim_point_surv` data set (issue \#91). +- Paper citation updated with release in JASA (issue \#103). + +# lmtp 0.9.1 + +### Bug Fixes + +- Fixed a bug that caused failure when knitting the `getting-started.Rmd` vignette when using new version of the *future* package (issue \#100). + +### General + +- GitHub links added to DESCRIPTION (issue \# 99). + +### Bug Fixes + +- Fixed a bug that caused failure when no variation existed in the outcome at a type point (issue \#92). +- No longer fails when `data` is a `data.table` (issue \#88). + +### General + +- Removing extra column in `sim_point_surv` data set (issue \#91). + +# lmtp 0.9.0 + +### New Features + +- New `weights` parameter for observation sampling weights (issue \#78). + +- For time-to-event analysis, survival probability is now estimated instead of the cumulative incidence. This fixes a bug with IPW and survival problems. + +- Outcome type now accepts `"survival"` for explicit indication of a survival outcome (issue \#76). Because of this `lmtp_ipw()` now requires setting the outcome type. + +- New `.trimming` parameter for trimming extreme density ratios. + +- New `.SL_folds` parameter that controls the splits used for fitting the SuperLearner (issue \#84). + +- New `.return_all_ratios` parameter that allows for returning non-cumulative product density ratios to the user. + +- `bound` parameter renamed to `.bound`. + +### Bug Fixes + +- Fixed a bug that caused the final estimate to be incorrectly estimated with SDR (issue \#87). + +- Fixed a bug that outputted outcome regressions and density ratios in incorrect order compared to the original data. + +- Fixed a bug in the missing data check that threw an error for missing data after an observation experiences the outcome. + +- Fixed a bug in the calculation of standard errors when the `id` parameter is specified. + +- Fixed a bug that resulted in `NA` censoring indicators throwing an error for missing data. + +- Fixed a bug about `values()` being deprecated in the **future** package (issue \#82). + +- Fixed a warning from the **future** package regarding random number generation (issue \#81). + +- Fixed `create_node_list()` returns description (issue \#77). + +### Dependencies + +- **slider** dependency removed. + +- **data.table** added as a dependency. + +### General + +- `event_locf()` speed greatly improved (issue \#80). + +- Migrated continuous integration from Travis-CI to GitHub Actions. + +- Added a `NEWS.md` file to track changes to the package. + +- License change to GPL-3. diff --git a/R/checks.R b/R/checks.R new file mode 100644 index 00000000..be50deaf --- /dev/null +++ b/R/checks.R @@ -0,0 +1,173 @@ +check_lmtp_data <- function(x, trt, outcome, baseline, time_vary, cens, id) { + for (t in 1:determine_tau(outcome, trt)) { + ci <- censored(x, cens, t)$j + di <- at_risk(x, risk_indicators(outcome), t, TRUE) + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + data_t <- x[ci & di, c(trt_t, baseline, unlist(time_vary[t])), drop = FALSE] + + if (any(is.na(data_t))) { + return("Missing data found in treatment and/or covariate nodes for uncensored observations") + } + } + + TRUE +} + +assertLmtpData <- checkmate::makeAssertionFunction(check_lmtp_data) + +assert_trt <- function(trt, tau) { + is_list <- is.list(trt) + if (!isTRUE(is_list)) { + return(assertTrtCharacter(trt, tau)) + } + assertTrtList(trt, tau) +} + +check_trt_character <- function(trt, tau) { + is_character <- checkmate::check_character(trt) + if (!isTRUE(is_character)) { + return(is_character) + } + + if (length(trt) != 1 && length(trt) != tau) { + return(paste0("'trt' should be of length 1 or ", tau)) + } + + TRUE +} + +assertTrtCharacter <- checkmate::makeAssertionFunction(check_trt_character) + +check_trt_list <- function(trt, tau) { + is_list <- checkmate::check_list(trt) + if (!isTRUE(is_list)) { + return(is_list) + } + + if (length(trt) != 1 && length(trt) != tau) { + return(paste0("'trt' should be of length 1 or ", tau)) + } + + TRUE +} + +assertTrtList <- checkmate::makeAssertionFunction(check_trt_list) + +check_reserved_names <- function(x) { + bad_names <- c("lmtp_id", "tmp_lmtp_stack_indicator", "tmp_lmtp_scaled_outcome") %in% names(x) + if (!any(bad_names)) { + return(TRUE) + } + "'lmtp_id', 'tmp_lmtp_stack_indicator', and 'tmp_lmtp_scaled_outcome' are reserved variable names" +} + +assertReservedNames <- checkmate::makeAssertionFunction(check_reserved_names) + +check_shifted_data <- function(x, natural, doesnt_change, cens, null.ok = TRUE) { + if (is.null(x)) { + if (null.ok) + return(TRUE) + return("Can't be 'NULL'") + } + + if (!(identical(natural[doesnt_change], x[doesnt_change]))) { + return("The only columns that can be different between `data` and `shifted` are those indicated in `trt` and `cens`") + } + + if (is.null(cens)) { + return(TRUE) + } + + if (!all(x[cens] == 1)) { + return("Censoring variables should be 1 in 'shifted'") + } + + TRUE +} + +assertShiftedData <- checkmate::makeAssertionFunction(check_shifted_data) + +check_not_data_table <- function(x) { + is_data_frame <- checkmate::checkDataFrame(x) + if (!isTRUE(is_data_frame)) { + return(is_data_frame) + } + + is_data_table <- data.table::is.data.table(x) + if (is_data_table) { + return("Must be a 'data.frame', not a 'data.table'") + } + TRUE +} + +assert_not_data_table <- assertNotDataTable <- checkmate::makeAssertionFunction(check_not_data_table) + +check_outcome_types <- function(x, outcomes, outcome_type) { + x <- x[, outcomes, drop = FALSE] + all_numeric <- checkmate::testDataFrame(x, types = "numeric") + if (!all_numeric) { + return("Outcome variables must be of type numeric") + } + + if (outcome_type %in% c("binomial", "survival")) { + vals <- lapply(outcomes, function(var) as.character(unique(na.omit(x[[var]])))) + all_binary <- all(unlist(vals) %in% c("0", "1")) + + if (!isTRUE(all_binary)) + return("Only 0 and 1 allowed in outcome variables if 'outcome_type' set to binomial or survival") + } + TRUE +} + +assertOutcomeTypes <- checkmate::makeAssertionFunction(check_outcome_types) + +check_contrast_type <- function(x, fits) { + if (x == "additive") { + return(TRUE) + } + + all_binom <- all(lapply(fits, function(x) x[["outcome_type"]]) == "binomial") + if (!all_binom) { + return(paste0("'", x, "' specified but one or more outcome types are not 'binomial' or 'survival'")) + } + + TRUE +} + +assertContrastType <- checkmate::makeAssertionFunction(check_contrast_type) + +check_lmtp_list <- function(x) { + all_lmtp <- all(unlist(lapply(x, is.lmtp))) + if (!all_lmtp) { + return("Objects must be of type 'lmtp'") + } + TRUE +} + +assertLmtpList <- checkmate::makeAssertionFunction(check_lmtp_list) + +check_dr <- function(x) { + all_dr <- all(lapply(x, function(x) x[["estimator"]]) %in% c("TMLE", "SDR")) + if (!all_dr) { + return("Contrasts not implemented for substitution/IPW estimators") + } + TRUE +} + +assertDr <- checkmate::makeAssertionFunction(check_dr) + +check_ref_class <- function(x) { + if (!is.lmtp(x)) { + is_num <- checkmate::check_number(x) + if (!isTRUE(is_num)) { + return("Must either be a single numeric value or another lmtp object") + } + } + TRUE +} + +assertRefClass <- checkmate::makeAssertionFunction(check_ref_class) diff --git a/R/contrasts.R b/R/contrasts.R new file mode 100644 index 00000000..330d4fcb --- /dev/null +++ b/R/contrasts.R @@ -0,0 +1,184 @@ +#' Perform Contrasts of LMTP Fits +#' +#' Estimates contrasts of multiple LMTP fits compared to either a known reference value +#' or a reference LMTP fit. +#' +#' @param ... One or more objects of class lmtp. +#' @param ref A reference value or another lmtp fit to compare all other fits against. +#' @param type The contrasts of interest. Options are "additive" (the default), +#' "rr", and "or". +#' +#' @return A list of class \code{lmtp_contrast} containing the following components: +#' +#' \item{type}{The type of contrast performed.} +#' \item{null}{The null hypothesis.} +#' \item{vals}{A dataframe containing the contrasts estimates, standard errors, and confidence intervals.} +#' \item{eifs}{Un-centered estimated influence functions for contrasts estimated.} +#' @export +#' +#' @example inst/examples/contrasts-ex.R +lmtp_contrast <- function(..., ref, type = c("additive", "rr", "or")) { + fits <- list(...) + + assertLmtpList(fits) + assertDr(fits) + assertRefClass(ref) + assertContrastType(match.arg(type), fits, .var.name = "type") + + if (is.numeric(ref)) { + type <- "additive" + message("Non-estimated reference value, defaulting type = 'additive'") + } else { + type <- match.arg(type) + } + + switch(type, + "additive" = contrast_additive(fits = fits, ref = ref), + "rr" = contrast_rr(fits = fits, ref = ref), + "or" = contrast_or(fits = fits, ref = ref)) +} + +contrast_additive <- function(fits, ref) { + res <- lapply(fits, function(x) contrast_additive_single(x, ref)) + vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) + eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) + + out <- list( + type = "additive", + null = 0, + vals = vals, + eifs = eifs + ) + class(out) <- "lmtp_contrast" + return(out) +} + +contrast_additive_single <- function(fit, ref) { + if (is.lmtp(ref)) { + theta <- fit$theta - ref$theta + eif <- fit$eif - ref$eif + } + + if (isFALSE(is.lmtp(ref))) { + theta <- fit$theta - ref + eif <- fit$eif + } + + if (is.null(fit$id)) { + fit$id <- 1:length(eif) + } + + clusters <- split(eif, fit$id) + j <- length(clusters) + std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) + conf.low <- theta - qnorm(0.975) * std.error + conf.high <- theta + qnorm(0.975) * std.error + p.value <- pnorm(abs(theta) / std.error, lower.tail = FALSE) * 2 + + list( + vals = data.frame( + theta = theta, + shift = fit$theta, + ref = ifelse(is.lmtp(ref), ref$theta, ref), + std.error = std.error, + conf.low = conf.low, + conf.high = conf.high, + p.value = p.value + ), + eif = eif + ) +} + +contrast_rr <- function(fits, ref) { + res <- lapply(fits, function(x) contrast_rr_single(x, ref)) + vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) + eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) + + out <- list( + type = "relative risk", + null = 1, + vals = vals, + eifs = eifs + ) + + class(out) <- "lmtp_contrast" + return(out) +} + +contrast_rr_single <- function(fit, ref) { + theta <- fit$theta / ref$theta + log_eif <- (fit$eif / fit$theta) - (ref$eif / ref$theta) + + if (is.null(fit$id)) { + fit$id <- 1:length(eif) + } + + clusters <- split(log_eif, fit$id) + j <- length(clusters) + std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) + conf.low <- exp(log(theta) - qnorm(0.975) * std.error) + conf.high <- exp(log(theta) + qnorm(0.975) * std.error) + p.value <- pnorm(abs(log(theta)) / std.error, lower.tail = FALSE) * 2 + + list( + vals = data.frame( + theta = theta, + shift = fit$theta, + ref = ref$theta, + std.error = std.error, + conf.low = conf.low, + conf.high = conf.high, + p.value = p.value + ), + eif = log_eif + ) +} + +contrast_or <- function(fits, ref) { + res <- lapply(fits, function(x) contrast_or_single(x, ref)) + vals <- Reduce(rbind, lapply(res, function(x) x[["vals"]])) + eifs <- Reduce(cbind, lapply(res, function(x) x[["eif"]])) + + out <- list( + type = "odds ratio", + null = 1, + vals = vals, + eifs = eifs + ) + class(out) <- "lmtp_contrast" + out +} + +contrast_or_single <- function(fit, ref) { + theta <- (fit$theta / (1 - fit$theta)) / (ref$theta / (1 - ref$theta)) + log_eif <- (fit$eif / (fit$theta * (1 - fit$theta))) - (ref$eif / (ref$theta * (1 - ref$theta))) + + if (is.null(fit$id)) { + fit$id <- 1:length(eif) + } + + clusters <- split(log_eif, fit$id) + j <- length(clusters) + std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) + conf.low <- exp(log(theta) - qnorm(0.975) * std.error) + conf.high <- exp(log(theta) + qnorm(0.975) * std.error) + p.value <- pnorm(abs(log(theta)) / std.error, lower.tail = FALSE) * 2 + + list( + vals = data.frame( + theta = theta, + shift = fit$theta, + ref = ref$theta, + std.error = std.error, + conf.low = conf.low, + conf.high = conf.high, + p.value = p.value + ), + eif = log_eif + ) +} + +no_stderr_warning <- function(estimator) { + cat("\n") + cli::cli_alert_warning("Standard errors aren't provided for the {estimator} estimator.") +} diff --git a/R/data.R b/R/data.R new file mode 100644 index 00000000..cd7fb70c --- /dev/null +++ b/R/data.R @@ -0,0 +1,100 @@ +#' Simulated Longitudinal Data +#' +#' A dataset with a binary outcome, four time varying treatment nodes, +#' and four time varying covariates. +#' +#' @format A data frame with 5000 rows and 10 variables: +#' \describe{ +#' \item{ID}{observation ID} +#' \item{L_1}{Time varying covariate time 1} +#' \item{A_1}{Treatment node at time 1, effected by L_1} +#' \item{L_2}{Time varying covariate time 1, effected by L_1 and A_1} +#' \item{A_2}{Treatment node at time 2, effected by L_2 and A_1} +#' \item{L_3}{Time varying covariate time 1, effected by L_2 and A_2} +#' \item{A_3}{Treatment node at time 3, effected by L_3 and A_2} +#' \item{L_4}{Time varying covariate time 1, effected by L_3 and A_3} +#' \item{A_4}{Treatment node at time 3, effected by L_4 and A_3} +#' \item{Y}{Binary outcome at time 5, effected by L_4 and A_4} +#' } +"sim_t4" + +#' Simulated Longitudinal Data With Censoring +#' +#' A dataset with a binary outcome, two time varying treatment nodes, +#' two time varying covariates, and two censoring indicators. +#' +#' @format A data frame with 1000 rows and 10 variables: +#' \describe{ +#' \item{L1}{Time varying covariate time 1} +#' \item{A1}{Treatment node at time 1, effected by L_1} +#' \item{C1}{Censoring indicator that the observation is observed after time 1} +#' \item{L2}{Time varying covariate at time 2, effected by L_1 and A_1} +#' \item{A2}{Treatment node at time 2, effected by L_2 and A_1} +#' \item{C2}{Censoring indicator that the observation is observed after time 2} +#' \item{Y}{Binary outcome at time 3, effected by L_2 and A_2} +#' } +"sim_cens" + +#' Simulated Point-treatment Survival Data +#' +#' A dataset with a time-to-event outcome, two baseline nodes, a binary +#' point treatment, six past-time outcome nodes, and six censoring indicators. +#' +#' @format A data frame with 2000 rows and 16 variables: +#' \describe{ +#' \item{W1}{Binary baseline variable.} +#' \item{W2}{Categorical baseline variable.} +#' \item{trt}{Binary treatment variable.} +#' \item{C.0}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.1}{Outcome node at time 1.} +#' \item{C.1}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.2}{Outcome node at time 2.} +#' \item{C.2}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.3}{Outcome node at time 3.} +#' \item{C.3}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.4}{Outcome node at time 4.} +#' \item{C.4}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.5}{Outcome node at time 5.} +#' \item{C.5}{Censoring indicator that the observation is observed future time points.} +#' \item{Y.6}{Final outcome node.} +#' } +"sim_point_surv" + +#' Simulated Time-varying Survival Data +#' +#' A dataset with a time-to-event outcome, one baseline nodes, two time-varying +#' covariates, a binary time-varying treatment, two outcome nodes, +#' and two censoring indicators. Data-generating mechanism taken from +#' Lendle, Schwab, Petersen, and van der Laan (). +#' +#' @format A data frame with 500 rows and 11 variables: +#' \describe{ +#' \item{L0.a}{Continuous baseline variable.} +#' \item{L0.b}{Time varying covariate at baseline.} +#' \item{L0.c}{Time varying covariate at baseline.} +#' \item{A0}{Treatment variable at baseline} +#' \item{C0}{Censoring indicator that the observation is observed future time points.} +#' \item{L1.a}{Time varying covariate at time 1.} +#' \item{L1.b}{Time varying covariate at time 1.} +#' \item{Y1}{Outcome node at time 1.} +#' \item{A1}{Treatment variable at time 1.} +#' \item{C1}{Censoring indicator that the observation is observed future time points.} +#' \item{Y2}{Final outcome node.} +#' } +"sim_timevary_surv" + +#' Simulated Multivariate Exposure Data +#' +#' A dataset with a continuous outcome, three baseline covariates, +#' and two treatment variables. +#' +#' @format A data frame with 2000 rows and 6 variables: +#' \describe{ +#' \item{C1}{Continuous baseline variable.} +#' \item{C2}{Continuous baseline variable.} +#' \item{C3}{Continuous baseline variable.} +#' \item{D1}{Treatment variable one at baseline.} +#' \item{D2}{Treatment variable two at baseline.} +#' \item{Y}{Continuous outcome} +#' } +"multivariate_data" diff --git a/R/density_ratios.R b/R/density_ratios.R new file mode 100644 index 00000000..344dbcdb --- /dev/null +++ b/R/density_ratios.R @@ -0,0 +1,90 @@ +cf_r <- function(Task, learners, mtp, lrnr_folds, trim, full_fits, pb) { + fopts <- options("lmtp.bound", "lmtp.trt.length") + + out <- vector("list", length = length(Task$folds)) + for (fold in seq_along(Task$folds)) { + out[[fold]] <- future::future({ + options(fopts) + + estimate_r( + get_folded_data(Task$natural, Task$folds, fold), + get_folded_data(Task$shifted, Task$folds, fold), + Task$trt, Task$cens, Task$risk, Task$tau, Task$node_list$trt, + learners, pb, mtp, lrnr_folds, full_fits + ) + }, + seed = TRUE) + } + + trim_ratios(recombine_ratios(future::value(out), Task$folds), trim) +} + +estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, lrnr_folds, full_fits) { + densratios <- matrix(nrow = nrow(natural$valid), ncol = tau) + fits <- vector("list", length = tau) + + for (t in 1:tau) { + jrt <- rep(censored(natural$train, cens, t)$j, 2) + drt <- rep(at_risk(natural$train, risk, t), 2) + irv <- censored(natural$valid, cens, t)$i + jrv <- censored(natural$valid, cens, t)$j + drv <- at_risk(natural$valid, risk, t) + + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + + frv <- followed_rule(natural$valid[, trt_t], shifted$valid[, trt_t], mtp) + + vars <- c(node_list[[t]], cens[[t]]) + stacked <- stack_data(natural$train, shifted$train, trt, cens, t) + + fit <- run_ensemble( + stacked[jrt & drt, ][["tmp_lmtp_stack_indicator"]], + stacked[jrt & drt, vars], + learners, + "binomial", + stacked[jrt & drt, ]$lmtp_id, + lrnr_folds + ) + + if (full_fits) { + fits[[t]] <- fit + } else { + fits[[t]] <- extract_sl_weights(fit) + } + + pred <- matrix(-999L, nrow = nrow(natural$valid), ncol = 1) + pred[jrv & drv, ] <- bound(SL_predict(fit, natural$valid[jrv & drv, vars]), .Machine$double.eps) + + ratios <- density_ratios(pred, irv, drv, frv, mtp) + densratios[, t] <- ratios + + pb() + } + + list(ratios = densratios, fits = fits) +} + +stack_data <- function(natural, shifted, trt, cens, tau) { + shifted_half <- natural + + if (length(trt) > 1 || tau == 1) { + shifted_half[, trt[[tau]]] <- shifted[, trt[[tau]]] + } + + if (!is.null(cens)) { + shifted_half[[cens[tau]]] <- shifted[[cens[tau]]] + } + + out <- rbind(natural, shifted_half) + out[["tmp_lmtp_stack_indicator"]] <- rep(c(0, 1), each = nrow(natural)) + out +} + +density_ratios <- function(pred, cens, risk, followed, mtp) { + pred <- ifelse(followed & isFALSE(mtp), pmax(pred, 0.5), pred) + (pred * cens * risk * followed) / (1 - pmin(pred, 0.999)) +} diff --git a/R/estimators.R b/R/estimators.R new file mode 100644 index 00000000..fbf50dc2 --- /dev/null +++ b/R/estimators.R @@ -0,0 +1,645 @@ +#' LMTP Targeted Maximum Likelihood Estimator +#' +#' Targeted maximum likelihood estimator for the effects of traditional causal effects and +#' modified treatment policies for both point treatment and longitudinal data with binary, +#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +#' +#' @param data \[\code{data.frame}\]\cr +#' A \code{data.frame} in wide format containing all necessary variables +#' for the estimation problem. Must not be a \code{data.table}. +#' @param trt \[\code{character}\] or \[\code{list}\]\cr +#' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param outcome \[\code{character}\]\cr +#' The column name of the outcome variable. In the case of time-to-event +#' analysis, a vector containing the columns names of intermediate outcome variables and the final +#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type +#' is binary, data should be coded as 0 and 1. +#' @param baseline \[\code{character}\]\cr +#' An optional vector containing the column names of baseline covariates to be +#' included for adjustment at every time point. +#' @param time_vary \[\code{list}\]\cr +#' A list the same length as the number of time points of observation with +#' the column names for new time-varying covariates introduced at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param cens \[\code{character}\]\cr +#' An optional vector of column names of censoring indicators the same +#' length as the number of time points of observation. If missingness in the outcome is +#' present or if time-to-event outcome, must be provided. +#' @param shift \[\code{closure}\]\cr +#' A two argument function that specifies how treatment variables should be shifted. +#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. +#' @param shifted \[\code{data.frame}\]\cr +#' An optional data frame, the same as in \code{data}, but modified according +#' to the treatment policy of interest. If specified, \code{shift} is ignored. +#' @param k \[\code{integer(1)}\]\cr +#' An integer specifying how previous time points should be +#' used for estimation at the given time point. Default is \code{Inf}, +#' all time points. +#' @param mtp \[\code{logical(1)}\]\cr +#' Is the intervention of interest a modified treatment policy? +#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. +#' @param outcome_type \[\code{character(1)}\]\cr +#' Outcome variable type (i.e., continuous, binomial, survival). +#' @param id \[\code{character(1)}\]\cr +#' An optional column name containing cluster level identifiers. +#' @param bounds \[\code{numeric(2)}\]\cr +#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +#' the bounds will be taken as the minimum and maximum of the observed data. +#' Should be left as \code{NULL} if the outcome type is binary. +#' @param learners_outcome \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. +#' @param learners_trt \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +#' \bold{Only include candidate learners capable of binary classification}. +#' @param folds \[\code{integer(1)}\]\cr +#' The number of folds to be used for cross-fitting. +#' @param weights \[\code{numeric(nrow(data))}\]\cr +#' An optional vector containing sampling weights. +#' @param control \[\code{list()}\]\cr +#' Output of \code{lmtp_control()}. +#' +#' @details +#' ## Should \code{mtp = TRUE}? +#' A modified treatment policy (MTP) is an intervention that depends +#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). +#' This differs from other causal effects, +#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +#' by some amount, use \code{mtp = TRUE}}. +#' +#' @return A list of class \code{lmtp} containing the following components: +#' +#' \item{estimator}{The estimator used, in this case "TMLE".} +#' \item{theta}{The estimated population LMTP effect.} +#' \item{standard_error}{The estimated standard error of the LMTP effect.} +#' \item{low}{Lower bound of the 95% confidence interval of the LMTP effect.} +#' \item{high}{Upper bound of the 95% confidence interval of the LMTP effect.} +#' \item{eif}{The estimated, un-centered, influence function of the estimate.} +#' \item{shift}{The shift function specifying the treatment policy of interest.} +#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +#' The mean of the first column is used for calculating theta.} +#' \item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} +#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold for the outcome regression.} +#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold of density ratio estimation.} +#' \item{outcome_type}{The outcome variable type.} +#' +#' @example inst/examples/tmle-ex.R +#' @export +lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, + cens = NULL, shift = NULL, shifted = NULL, k = Inf, + mtp = FALSE, outcome_type = c("binomial", "continuous", "survival"), + id = NULL, bounds = NULL, + learners_outcome = "SL.glm", + learners_trt = "SL.glm", + folds = 10, weights = NULL, + control = lmtp_control()) { + + assertNotDataTable(data) + checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, + min.len = if (match.arg(outcome_type) == "survival") 2) + checkmate::assertCharacter(baseline, null.ok = TRUE) + + tau <- determine_tau(outcome, trt) + + assert_trt(trt, tau) + checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) + checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) + checkmate::assertCharacter(id, len = 1, null.ok = TRUE) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) + assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) + assertOutcomeTypes(data, outcome, match.arg(outcome_type)) + assertReservedNames(data) + checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) + assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) + checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) + checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) + checkmate::assertNumber(k, lower = 0, upper = Inf) + checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) + checkmate::assertNumber(control$.learners_outcome_folds, null.ok = TRUE) + checkmate::assertNumber(control$.learners_trt_folds, null.ok = TRUE) + checkmate::assertNumber(control$.bound) + checkmate::assertNumber(control$.trim, upper = 1) + checkmate::assertLogical(control$.return_full_fits, len = 1) + + Task <- lmtp_Task$new( + data = data, + trt = trt, + outcome = outcome, + time_vary = time_vary, + baseline = baseline, + cens = cens, + k = k, + shift = shift, + shifted = shifted, + id = id, + outcome_type = match.arg(outcome_type), + V = folds, + weights = weights, + bounds = bounds, + bound = control$.bound + ) + + pb <- progressr::progressor(Task$tau*folds*2) + + ratios <- cf_r(Task, learners_trt, mtp, control$.learners_trt_folds, control$.trim, control$.return_full_fits, pb) + estims <- cf_tmle(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, control$.learners_outcome_folds, control$.return_full_fits, pb) + + theta_dr( + list( + estimator = "TMLE", + m = list(natural = estims$natural, shifted = estims$shifted), + r = ratios$ratios, + tau = Task$tau, + folds = Task$folds, + id = Task$id, + outcome_type = Task$outcome_type, + bounds = Task$bounds, + weights = Task$weights, + shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, + fits_m = estims$fits, + fits_r = ratios$fits, + outcome_type = Task$outcome_type + ), + FALSE + ) +} + +#' LMTP Sequential Doubly Robust Estimator +#' +#' Sequentially doubly robust estimator for the effects of traditional causal effects and +#' modified treatment policies for both point treatment and longitudinal data with binary, +#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +#' +#' @param data \[\code{data.frame}\]\cr +#' A \code{data.frame} in wide format containing all necessary variables +#' for the estimation problem. Must not be a \code{data.table}. +#' @param trt \[\code{character}\] or \[\code{list}\]\cr +#' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param outcome \[\code{character}\]\cr +#' The column name of the outcome variable. In the case of time-to-event +#' analysis, a vector containing the columns names of intermediate outcome variables and the final +#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type +#' is binary, data should be coded as 0 and 1. +#' @param baseline \[\code{character}\]\cr +#' An optional vector containing the column names of baseline covariates to be +#' included for adjustment at every time point. +#' @param time_vary \[\code{list}\]\cr +#' A list the same length as the number of time points of observation with +#' the column names for new time-varying covariates introduced at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param cens \[\code{character}\]\cr +#' An optional vector of column names of censoring indicators the same +#' length as the number of time points of observation. If missingness in the outcome is +#' present or if time-to-event outcome, must be provided. +#' @param shift \[\code{closure}\]\cr +#' A two argument function that specifies how treatment variables should be shifted. +#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. +#' @param shifted \[\code{data.frame}\]\cr +#' An optional data frame, the same as in \code{data}, but modified according +#' to the treatment policy of interest. If specified, \code{shift} is ignored. +#' @param k \[\code{integer(1)}\]\cr +#' An integer specifying how previous time points should be +#' used for estimation at the given time point. Default is \code{Inf}, +#' all time points. +#' @param mtp \[\code{logical(1)}\]\cr +#' Is the intervention of interest a modified treatment policy? +#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. +#' @param outcome_type \[\code{character(1)}\]\cr +#' Outcome variable type (i.e., continuous, binomial, survival). +#' @param id \[\code{character(1)}\]\cr +#' An optional column name containing cluster level identifiers. +#' @param bounds \[\code{numeric(2)}\]\cr +#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +#' the bounds will be taken as the minimum and maximum of the observed data. +#' Should be left as \code{NULL} if the outcome type is binary. +#' @param learners_outcome \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. +#' @param learners_trt \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +#' \bold{Only include candidate learners capable of binary classification}. +#' @param folds \[\code{integer(1)}\]\cr +#' The number of folds to be used for cross-fitting. +#' @param weights \[\code{numeric(nrow(data))}\]\cr +#' An optional vector containing sampling weights. +#' @param control \[\code{list()}\]\cr +#' Output of \code{lmtp_control()}. +#' +#' @details +#' ## Should \code{mtp = TRUE}? +#' A modified treatment policy (MTP) is an intervention that depends +#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). +#' This differs from other causal effects, +#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +#' by some amount, use \code{mtp = TRUE}}. +#' +#' @return A list of class \code{lmtp} containing the following components: +#' +#' \item{estimator}{The estimator used, in this case "SDR".} +#' \item{theta}{The estimated population LMTP effect.} +#' \item{standard_error}{The estimated standard error of the LMTP effect.} +#' \item{low}{Lower bound of the 95% confidence interval of the LMTP effect.} +#' \item{high}{Upper bound of the 95% confidence interval of the LMTP effect.} +#' \item{eif}{The estimated, un-centered, influence function of the estimate.} +#' \item{shift}{The shift function specifying the treatment policy of interest.} +#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +#' The mean of the first column is used for calculating theta.} +#' \item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} +#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold for the outcome regression.} +#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold of density ratio estimation.} +#' \item{outcome_type}{The outcome variable type.} +#' +#' @example inst/examples/sdr-ex.R +#' @export +lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, + cens = NULL, shift = NULL, shifted = NULL, k = Inf, + mtp = FALSE, + # intervention_type = c("static", "dynamic", "mtp"), + outcome_type = c("binomial", "continuous", "survival"), + id = NULL, bounds = NULL, + learners_outcome = "SL.glm", + learners_trt = "SL.glm", + folds = 10, weights = NULL, + control = lmtp_control()) { + + assertNotDataTable(data) + checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, + min.len = if (match.arg(outcome_type) == "survival") 2) + checkmate::assertCharacter(baseline, null.ok = TRUE) + + tau <- determine_tau(outcome, trt) + + assert_trt(trt, tau) + checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) + checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) + checkmate::assertCharacter(id, len = 1, null.ok = TRUE) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) + assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) + assertOutcomeTypes(data, outcome, match.arg(outcome_type)) + assertReservedNames(data) + checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) + assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) + checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) + checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) + checkmate::assertNumber(k, lower = 0, upper = Inf) + checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) + checkmate::assertNumber(control$.learners_outcome_folds, null.ok = TRUE) + checkmate::assertNumber(control$.learners_trt_folds, null.ok = TRUE) + checkmate::assertNumber(control$.bound) + checkmate::assertNumber(control$.trim, upper = 1) + checkmate::assertLogical(control$.return_full_fits, len = 1) + + Task <- lmtp_Task$new( + data = data, + trt = trt, + outcome = outcome, + time_vary = time_vary, + baseline = baseline, + cens = cens, + k = k, + shift = shift, + shifted = shifted, + id = id, + outcome_type = match.arg(outcome_type), + V = folds, + weights = weights, + bounds = bounds, + bound = control$control$.bound + ) + + pb <- progressr::progressor(Task$tau*folds*2) + + ratios <- cf_r(Task, learners_trt, mtp, + control$.learners_trt_folds, control$.trim, control$.return_full_fits, pb) + estims <- cf_sdr(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, + control$.learners_outcome_folds, control$.return_full_fits, pb) + + theta_dr( + list( + estimator = "SDR", + m = list(natural = estims$natural, shifted = estims$shifted), + r = ratios$ratios, + tau = Task$tau, + folds = Task$folds, + id = Task$id, + outcome_type = Task$outcome_type, + bounds = Task$bounds, + weights = Task$weights, + shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, + fits_m = estims$fits, + fits_r = ratios$fits, + outcome_type = Task$outcome_type + ), + TRUE + ) +} + +#' LMTP Substitution Estimator +#' +#' G-computation estimator for the effects of traditional causal effects and +#' modified treatment policies for both point treatment and longitudinal data with binary, +#' continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +#' +#' @param data \[\code{data.frame}\]\cr +#' A \code{data.frame} in wide format containing all necessary variables +#' for the estimation problem. Must not be a \code{data.table}. +#' @param trt \[\code{character}\] or \[\code{list}\]\cr +#' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param outcome \[\code{character}\]\cr +#' The column name of the outcome variable. In the case of time-to-event +#' analysis, a vector containing the columns names of intermediate outcome variables and the final +#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type +#' is binary, data should be coded as 0 and 1. +#' @param baseline \[\code{character}\]\cr +#' An optional vector containing the column names of baseline covariates to be +#' included for adjustment at every time point. +#' @param time_vary \[\code{list}\]\cr +#' A list the same length as the number of time points of observation with +#' the column names for new time-varying covariates introduced at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param cens \[\code{character}\]\cr +#' An optional vector of column names of censoring indicators the same +#' length as the number of time points of observation. If missingness in the outcome is +#' present or if time-to-event outcome, must be provided. +#' @param shift \[\code{closure}\]\cr +#' A two argument function that specifies how treatment variables should be shifted. +#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. +#' @param shifted \[\code{data.frame}\]\cr +#' An optional data frame, the same as in \code{data}, but modified according +#' to the treatment policy of interest. If specified, \code{shift} is ignored. +#' @param k \[\code{integer(1)}\]\cr +#' An integer specifying how previous time points should be +#' used for estimation at the given time point. Default is \code{Inf}, +#' all time points. +#' @param outcome_type \[\code{character(1)}\]\cr +#' Outcome variable type (i.e., continuous, binomial, survival). +#' @param id \[\code{character(1)}\]\cr +#' An optional column name containing cluster level identifiers. +#' @param bounds \[\code{numeric(2)}\]\cr +#' An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +#' the bounds will be taken as the minimum and maximum of the observed data. +#' Should be left as \code{NULL} if the outcome type is binary. +#' @param learners \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM. +#' @param folds \[\code{integer(1)}\]\cr +#' The number of folds to be used for cross-fitting. +#' @param weights \[\code{numeric(nrow(data))}\]\cr +#' An optional vector containing sampling weights. +#' @param control \[\code{list()}\]\cr +#' Output of \code{lmtp_control()}. +#' +#' @return A list of class \code{lmtp} containing the following components: +#' +#' \item{estimator}{The estimator used, in this case "substitution".} +#' \item{theta}{The estimated population LMTP effect.} +#' \item{standard_error}{NA} +#' \item{low}{NA} +#' \item{high}{NA} +#' \item{shift}{The shift function specifying the treatment policy of interest.} +#' \item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +#' The mean of the first column is used for calculating theta.} +#' \item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold for the outcome regression.} +#' \item{outcome_type}{The outcome variable type.} +#' @export +#' +#' @example inst/examples/sub-ex.R +lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, + shift = NULL, shifted = NULL, k = Inf, + outcome_type = c("binomial", "continuous", "survival"), + id = NULL, bounds = NULL, learners = "SL.glm", + folds = 10, weights = NULL, + control = lmtp_control()) { + + assertNotDataTable(data) + checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, + min.len = if (match.arg(outcome_type) == "survival") 2) + checkmate::assertCharacter(baseline, null.ok = TRUE) + + tau <- determine_tau(outcome, trt) + + assert_trt(trt, tau) + checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) + checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) + checkmate::assertCharacter(id, len = 1, null.ok = TRUE) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) + assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) + assertOutcomeTypes(data, outcome, match.arg(outcome_type)) + assertReservedNames(data) + checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) + assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) + checkmate::assertNumeric(bounds, len = 2, finite = TRUE, any.missing = FALSE, sorted = TRUE, null.ok = TRUE) + checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) + checkmate::assertNumber(k, lower = 0, upper = Inf) + checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) + checkmate::assertNumber(control$.learners_outcome_folds, null.ok = TRUE) + checkmate::assertNumber(control$.bound) + checkmate::assertLogical(control$.return_full_fits, len = 1) + + Task <- lmtp_Task$new( + data = data, + trt = trt, + outcome = outcome, + time_vary = time_vary, + baseline = baseline, + cens = cens, + k = k, + shift = shift, + shifted = shifted, + id = id, + outcome_type = match.arg(outcome_type), + V = folds, + weights = weights, + bounds = bounds, + bound = control$.bound + ) + + pb <- progressr::progressor(Task$tau*folds) + + estims <- cf_sub(Task, "tmp_lmtp_scaled_outcome", learners, + control$.learners_outcome_folds, control$.return_full_fits, pb) + + theta_sub( + eta = list( + m = estims$m, + outcome_type = Task$outcome_type, + bounds = Task$bounds, + folds = Task$folds, + weights = Task$weights, + shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, + fits_m = estims$fits, + outcome_type = Task$outcome_type + ) + ) +} + +#' LMTP IPW Estimator +#' +#' Inverse probability of treatment weighting estimator for the effects of traditional causal +#' effects and modified treatment policies for both point treatment and longitudinal data +#' with binary, continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +#' +#' @param data \[\code{data.frame}\]\cr +#' A \code{data.frame} in wide format containing all necessary variables +#' for the estimation problem. Must not be a \code{data.table}. +#' @param trt \[\code{character}\] or \[\code{list}\]\cr +#' A vector containing the column names of treatment variables ordered by time. +#' Or, a list of vectors, the same length as the number of time points of observation. +#' Vectors should contain column names for the treatment variables at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param outcome \[\code{character}\]\cr +#' The column name of the outcome variable. In the case of time-to-event +#' analysis, a vector containing the columns names of intermediate outcome variables and the final +#' outcome variable ordered by time. Only numeric values are allowed. If the outcome type +#' is binary, data should be coded as 0 and 1. +#' @param baseline \[\code{character}\]\cr +#' An optional vector containing the column names of baseline covariates to be +#' included for adjustment at every time point. +#' @param time_vary \[\code{list}\]\cr +#' A list the same length as the number of time points of observation with +#' the column names for new time-varying covariates introduced at each time point. The list +#' should be ordered following the time ordering of the model. +#' @param cens \[\code{character}\]\cr +#' An optional vector of column names of censoring indicators the same +#' length as the number of time points of observation. If missingness in the outcome is +#' present or if time-to-event outcome, must be provided. +#' @param shift \[\code{closure}\]\cr +#' A two argument function that specifies how treatment variables should be shifted. +#' See examples for how to specify shift functions for continuous, binary, and categorical exposures. +#' @param shifted \[\code{data.frame}\]\cr +#' An optional data frame, the same as in \code{data}, but modified according +#' to the treatment policy of interest. If specified, \code{shift} is ignored. +#' @param k \[\code{integer(1)}\]\cr +#' An integer specifying how previous time points should be +#' used for estimation at the given time point. Default is \code{Inf}, +#' all time points. +#' @param mtp \[\code{logical(1)}\]\cr +#' Is the intervention of interest a modified treatment policy? +#' Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}. +#' @param outcome_type \[\code{character(1)}\]\cr +#' Outcome variable type (i.e., continuous, binomial, survival). +#' @param id \[\code{character(1)}\]\cr +#' An optional column name containing cluster level identifiers. +#' @param learners \[\code{character}\]\cr A vector of \code{SuperLearner} algorithms for estimation +#' of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +#' \bold{Only include candidate learners capable of binary classification}. +#' @param folds \[\code{integer(1)}\]\cr +#' The number of folds to be used for cross-fitting. +#' @param weights \[\code{numeric(nrow(data))}\]\cr +#' An optional vector containing sampling weights. +#' @param control \[\code{list()}\]\cr +#' Output of \code{lmtp_control()}. +#' +#' @details +#' ## Should \code{mtp = TRUE}? +#' A modified treatment policy (MTP) is an intervention that depends +#' on the natural value of the exposure (the value that the treatment would have taken under no intervention). +#' This differs from other causal effects, +#' such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +#' \bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +#' by some amount, use \code{mtp = TRUE}}. +#' +#' @return A list of class \code{lmtp} containing the following components: +#' +#' \item{estimator}{The estimator used, in this case "IPW".} +#' \item{theta}{The estimated population LMTP effect.} +#' \item{standard_error}{NA} +#' \item{low}{NA} +#' \item{high}{NA} +#' \item{shift}{The shift function specifying the treatment policy of interest.} +#' \item{density_ratios}{An n x Tau matrix of the estimated density ratios.} +#' \item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +#' for each fold of density ratio estimation.} +#' @export +#' +#' @example inst/examples/ipw-ex.R +lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, + shift = NULL, shifted = NULL, mtp = FALSE, + # intervention_type = c("static", "dynamic", "mtp"), + k = Inf, id = NULL, + outcome_type = c("binomial", "continuous", "survival"), + learners = "SL.glm", + folds = 10, weights = NULL, + control = lmtp_control()) { + + assertNotDataTable(data) + checkmate::assertCharacter(outcome, len = if (match.arg(outcome_type) != "survival") 1, + min.len = if (match.arg(outcome_type) == "survival") 2) + checkmate::assertCharacter(baseline, null.ok = TRUE) + + tau <- determine_tau(outcome, trt) + + assert_trt(trt, tau) + checkmate::assertCharacter(cens, len = tau, null.ok = !checkmate::anyMissing(data[, outcome, drop = FALSE])) + checkmate::assertList(time_vary, types = c("NULL", "character"), len = tau, null.ok = TRUE) + checkmate::assertCharacter(id, len = 1, null.ok = TRUE) + checkmate::assertSubset(c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id), names(data)) + assertLmtpData(data, trt, outcome, baseline, time_vary, cens, id) + assertOutcomeTypes(data, outcome, match.arg(outcome_type)) + assertReservedNames(data) + checkmate::assertFunction(shift, nargs = 2, null.ok = TRUE) + assertShiftedData(shifted, data, c(outcome, baseline, unlist(time_vary), id), cens) + checkmate::assertNumeric(weights, len = nrow(data), finite = TRUE, any.missing = FALSE, null.ok = TRUE) + checkmate::assertNumber(k, lower = 0, upper = Inf) + checkmate::assertNumber(folds, lower = 1, upper = nrow(data) - 1) + checkmate::assertNumber(control$.learners_trt_folds, null.ok = TRUE) + checkmate::assertNumber(control$.bound) + checkmate::assertNumber(control$.trim, upper = 1) + checkmate::assertLogical(control$.return_full_fits, len = 1) + + Task <- lmtp_Task$new( + data = data, + trt = trt, + outcome = outcome, + time_vary = time_vary, + baseline = baseline, + cens = cens, + k = k, + shift = shift, + shifted = shifted, + id = id, + outcome_type = match.arg(outcome_type), + V = folds, + weights = weights, + bounds = NULL, + bound = control$.bound + ) + + pb <- progressr::progressor(Task$tau*folds) + + ratios <- cf_r(Task, learners, mtp, control$.learners_trt_folds, + control$.trim, control$.return_full_fits, pb) + + theta_ipw( + eta = list( + r = matrix( + t(apply(ratios$ratios, 1, cumprod)), + nrow = nrow(ratios$ratios), + ncol = ncol(ratios$ratios) + ), + y = if (Task$survival) { + convert_to_surv(data[[final_outcome(outcome)]]) + } else { + data[[final_outcome(outcome)]] + }, + folds = Task$folds, + weights = Task$weights, + tau = Task$tau, + shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, + fits_r = ratios$fits + ) + ) +} diff --git a/R/gcomp.R b/R/gcomp.R new file mode 100644 index 00000000..bb074458 --- /dev/null +++ b/R/gcomp.R @@ -0,0 +1,85 @@ +cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { + out <- vector("list", length = length(Task$folds)) + for (fold in seq_along(Task$folds)) { + out[[fold]] <- future::future({ + estimate_sub( + get_folded_data(Task$natural, Task$folds, fold), + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, + Task$node_list$outcome, Task$cens, + Task$risk, Task$tau, Task$outcome_type, + learners, lrnr_folds, pb, full_fits + ) + }, + seed = TRUE) + } + + out <- future::value(out) + + list( + m = recombine_outcome(out, "m", Task$folds), + fits = lapply(out, function(x) x[["fits"]]) + ) +} + +estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, + tau, outcome_type, learners, lrnr_folds, pb, full_fits) { + + m <- matrix(nrow = nrow(natural$valid), ncol = tau) + fits <- vector("list", length = tau) + + for (t in tau:1) { + i <- censored(natural$train, cens, t)$i + jt <- censored(natural$train, cens, t)$j + jv <- censored(natural$valid, cens, t)$j + rt <- at_risk(natural$train, risk, t) + rv <- at_risk(natural$valid, risk, t) + + pseudo <- paste0("tmp_lmtp_pseudo", t) + vars <- node_list[[t]] + + if (t != tau) { + outcome <- paste0("tmp_lmtp_pseudo", t + 1) + outcome_type <- "continuous" + } + + learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) + + fit <- run_ensemble( + natural$train[i & rt, ][[outcome]], + natural$train[i & rt, vars], + learners, + outcome_type, + id = natural$train[i & rt, ][["lmtp_id"]], + lrnr_folds + ) + + if (full_fits) { + fits[[t]] <- fit + } else { + fits[[t]] <- extract_sl_weights(fit) + } + + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + + under_shift_train <- natural$train[jt & rt, vars] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] + + under_shift_valid <- natural$valid[jv & rv, vars] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] + + natural$train[jt & rt, pseudo] <- bound(SL_predict(fit, under_shift_train), 1e-05) + m[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) + + natural$train[!rt, pseudo] <- 0 + m[!rv, t] <- 0 + + pb() + } + + list(m = m, fits = fits) +} diff --git a/R/lmtp-package.R b/R/lmtp-package.R new file mode 100644 index 00000000..cf0c16f4 --- /dev/null +++ b/R/lmtp-package.R @@ -0,0 +1,9 @@ +#' @importFrom stats runif as.formula coef glm plogis predict qlogis qnorm pnorm sd quantile var binomial gaussian na.omit weighted.mean +#' @keywords internal +"_PACKAGE" + +# The following block is used by usethis to automatically manage +# roxygen namespace tags. Modify with care! +## usethis namespace: start +## usethis namespace: end +NULL diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R new file mode 100644 index 00000000..79b4842c --- /dev/null +++ b/R/lmtp_Task.R @@ -0,0 +1,73 @@ +#' @importFrom R6 R6Class +lmtp_Task <- R6::R6Class( + "lmtp_Task", + public = list( + natural = NULL, + shifted = NULL, + trt = NULL, + cens = NULL, + risk = NULL, + node_list = NULL, + n = NULL, + tau = NULL, + id = NULL, + outcome_type = NULL, + survival = NULL, + bounds = NULL, + folds = NULL, + weights = NULL, + multivariate = NULL, + initialize = function(data, trt, outcome, time_vary, baseline, cens, k, + shift, shifted, id, outcome_type = NULL, V = 10, + weights = NULL, bounds = NULL, bound = NULL) { + self$tau <- determine_tau(outcome, trt) + self$n <- nrow(data) + self$trt <- trt + self$risk <- risk_indicators(outcome) + self$cens <- cens + self$node_list <- create_node_list(trt, self$tau, time_vary, baseline, k) + self$outcome_type <- ifelse(outcome_type %in% c("binomial", "survival"), "binomial", "continuous") + self$survival <- outcome_type == "survival" + self$bounds <- y_bounds(data[[final_outcome(outcome)]], self$outcome_type, bounds) + data$lmtp_id <- create_ids(data, id) + self$id <- data$lmtp_id + self$folds <- setup_cv(data, data$lmtp_id, V) + self$multivariate <- is.list(trt) + + shifted <- { + if (is.null(shifted) && !is.null(shift)) + shift_data(data, trt, cens, shift) + else if (is.null(shifted) && is.null(shift)) + shift_data(data, trt, cens, shift) + else { + tmp <- shifted + tmp$lmtp_id <- data$lmtp_id + tmp + } + } + + data <- data.table::copy(data) + shifted <- data.table::copy(shifted) + + data <- fix_censoring_ind(data, cens) + shifted <- fix_censoring_ind(shifted, cens) + + if (self$survival) { + for (outcomes in outcome) { + data.table::set(data, j = outcomes, value = convert_to_surv(data[[outcomes]])) + data.table::set(shifted, j = outcomes, value = convert_to_surv(shifted[[outcomes]])) + } + } + + data$tmp_lmtp_scaled_outcome <- scale_y(data[[final_outcome(outcome)]], self$bounds) + shifted$tmp_lmtp_scaled_outcome <- data$tmp_lmtp_scaled_outcome + + self$natural <- data + self$shifted <- shifted + + if (!is.null(weights)) { + self$weights <- weights + } + } + ) +) diff --git a/R/lmtp_control.R b/R/lmtp_control.R new file mode 100644 index 00000000..4c8ad6bb --- /dev/null +++ b/R/lmtp_control.R @@ -0,0 +1,32 @@ +#' Set LMTP Estimation Parameters +#' +#' @param .bound \[\code{numeric(1)}\]\cr +#' Determines that maximum and minimum values (scaled) predictions +#' will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999. +#' @param .trim \[\code{numeric(1)}\]\cr +#' Determines the amount the density ratios should be trimmed. +#' The default is 0.999, trimming the density ratios greater than the 0.999 percentile +#' to the 0.999 percentile. A value of 1 indicates no trimming. +#' @param .learners_outcome_folds \[\code{integer(1)}\]\cr +#' The number of cross-validation folds for \code{learners_outcome}. +#' @param .learners_trt_folds \[\code{integer(1)}\]\cr +#' The number of cross-validation folds for \code{learners_trt}. +#' @param .return_full_fits \[\code{logical(1)}\]\cr +#' Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights. +#' +#' @return A list of parameters controlling the estimation procedure. +#' @export +#' +#' @examples +#' lmtp_control(.trim = 0.975) +lmtp_control <- function(.bound = 1e5, + .trim = 0.999, + .learners_outcome_folds = 10, + .learners_trt_folds = 10, + .return_full_fits = FALSE) { + list(.bound = .bound, + .trim = .trim, + .learners_outcome_folds = .learners_outcome_folds, + .learners_trt_folds = .learners_trt_folds, + .return_full_fits = .return_full_fits) +} diff --git a/R/nodelist.R b/R/nodelist.R new file mode 100644 index 00000000..ec40d128 --- /dev/null +++ b/R/nodelist.R @@ -0,0 +1,143 @@ +#' Create a node list specification +#' +#' Creates a node list specification that is used by the provided estimators. +#' \code{create_node_list()} is not explicitly called by the analyst, rather +#' it is provided so the analyst can confirm how estimators will use variables +#' before actually performing the estimation procedure. +#' +#' @param trt A vector of column names of treatment variables. +#' @param tau The number of time points of observation, excluding the final outcome. +#' @param time_vary A list of length tau with the column names for new time_vary to +#' be introduced at each time point. The list should be ordered following +#' the time ordering of the model. +#' @param baseline An optional vector of columns names for baseline covariates to be +#' included for adjustment at every timepoint. +#' @param k An integer specifying how previous time points should be +#' used for estimation at the given time point. Default is \code{Inf}, +#' all time points. +#' +#' @return A list of lists. Each sub-list is the same length of the +#' \code{time_vary} parameter with the variables to be used for estimation at that given time point +#' for either the treatment mechanism or outcome regression. +#' @export +#' @examples +#' a <- c("A_1", "A_2", "A_3", "A_4") +#' bs <- c("W_1", "W_2") +#' time_vary <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) +#' +#' # assuming no Markov property +#' create_node_list(a, 4, time_vary, bs, k = Inf) +#' +#' # assuming a Markov property +#' create_node_list(a, 4, time_vary, bs, k = 0) +create_node_list <- function(trt, tau, time_vary = NULL, baseline = NULL, k = Inf) { + if (is.null(k)) { + k <- Inf + } + + list( + trt = trt_node_list(trt, time_vary, baseline, k, tau), + outcome = outcome_node_list(trt, time_vary, baseline, k, tau) + ) +} + +trt_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { + out <- list() + if (!is.null(baseline)) { + for (i in 1:tau) { + out[[i]] <- c(baseline) + } + } + + if (length(out) == 0) { + if (length(trt) == tau) { + for (i in 1:tau) { + if (i > 1) { + out[[i]] <- c(time_vary[[i]], trt[[i - 1]]) + } else { + out[[i]] <- c(time_vary[[i]]) + } + } + } + + if (length(trt) != tau) { + for (i in 1:tau) { + out[[i]] <- c(time_vary[[i]], unlist(trt)) + } + } + } else { + if (length(trt) == tau) { + for (i in 1:tau) { + if (i > 1) { + out[[i]] <- c(out[[i]], time_vary[[i]], trt[[i - 1]]) + } else { + out[[i]] <- c(out[[i]], time_vary[[i]]) + } + } + } + + if (length(trt) != tau) { + for (i in 1:tau) { + out[[i]] <- c(out[[i]], time_vary[[i]], unlist(trt)) + } + } + } + + out <- slide(out, k) + + if (length(trt) != tau) { + return(out) + } + + for (i in 1:tau) { + out[[i]] <- c(out[[i]], trt[[i]]) + } + + out +} + +outcome_node_list <- function(trt, time_vary, baseline = NULL, k, tau) { + out <- list() + + if (length(trt) == tau) { + for (i in 1:tau) { + out[[i]] <- c(time_vary[[i]], trt[[i]]) + } + } + + if (length(trt) != tau) { + for (i in 1:tau) { + out[[i]] <- c(time_vary[[i]], unlist(trt)) + } + } + + out <- slide(out, k) + if (is.null(baseline)) { + return(out) + } + + for (i in 1:tau) { + out[[i]] <- c(baseline, out[[i]]) + } + out +} + +slide <- function(x, k) { + if (k == 0) { + return(x) + } + + t <- length(x) + if (k == Inf) { + k <- t - 1 + } + lapply(1:t, Lag, x = x, k = k) +} + +Lag <- function(x, t, k) { + if (t == 1) { + return(x[[1]]) + } + tk <- max(1, t - k) + unique(do.call(c, x[tk:t])) +} diff --git a/R/print.R b/R/print.R new file mode 100644 index 00000000..0fac95f4 --- /dev/null +++ b/R/print.R @@ -0,0 +1,23 @@ +#' @export +print.lmtp <- function(x, ...) { + cat("\n") + cli::cli_text("{.strong LMTP Estimator}: {x$estimator}") + cli::cli_text(cat(" "), "{.strong Trt. Policy}: ", cli::col_blue(cli::style_italic("{x$shift}"))) + cat("\n") + cli::cli_text("{.strong Population intervention estimate}") + cli::cli_text(cat(" "), "{.strong Estimate}: {round(x$theta, 4)}") + cli::cli_text(cat(" "), "{.strong Std. error}: {round(x$standard_error, 4)}") + cli::cli_text(cat(" "), "{.strong 95% CI}: ({round(x$low, 4)}, {round(x$high, 4)})") + if (x$estimator %in% c("substitution", "IPW")) no_stderr_warning(x$estimator) + cat("\n") +} + +#' @export +print.lmtp_contrast <- function(x, ...) { + cat("\n") + cli::cli_text(cat(" "), "{.strong LMTP Contrast}: {x$type}") + cli::cli_text("{.strong Null hypothesis}: theta == {x$null}") + cat("\n") + x$vals$p.value <- format.pval(x$vals$p.value, digits = 3, eps = 0.001) + print(format(x$vals, digits = 3)) +} diff --git a/R/sdr.R b/R/sdr.R new file mode 100644 index 00000000..099a1428 --- /dev/null +++ b/R/sdr.R @@ -0,0 +1,113 @@ +cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { + out <- vector("list", length = length(Task$folds)) + for (fold in seq_along(Task$folds)) { + out[[fold]] <- future::future({ + estimate_sdr( + get_folded_data(Task$natural, Task$folds, fold), + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, Task$node_list$outcome, + Task$cens, Task$risk, Task$tau, Task$outcome_type, + get_folded_data(ratios, Task$folds, fold)$train, + learners, lrnr_folds, pb, full_fits + ) + }, + seed = TRUE) + } + + out <- future::value(out) + + list(natural = recombine_outcome(out, "natural", Task$folds), + shifted = recombine_outcome(out, "shifted", Task$folds), + fits = lapply(out, function(x) x[["fits"]])) +} + +estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, + outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { + + m_natural_train <- m_shifted_train <- + cbind(matrix(nrow = nrow(natural$train), ncol = tau), natural$train[[outcome]]) + m_natural_valid <- m_shifted_valid <- + cbind(matrix(nrow = nrow(natural$valid), ncol = tau), natural$valid[[outcome]]) + + fits <- vector("list", length = tau) + + for (t in tau:1) { + i <- censored(natural$train, cens, t)$i + jt <- censored(natural$train, cens, t)$j + jv <- censored(natural$valid, cens, t)$j + rt <- at_risk(natural$train, risk, t) + rv <- at_risk(natural$valid, risk, t) + + pseudo <- paste0("tmp_lmtp_pseudo", t) + vars <- node_list[[t]] + + if (t == tau) { + learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) + + fit <- run_ensemble(natural$train[i & rt, ][[outcome]], + natural$train[i & rt, vars], + learners, + outcome_type, + id = natural$train[i & rt, ][["lmtp_id"]], + lrnr_folds) + + if (full_fits) { + fits[[t]] <- fit + } else { + fits[[t]] <- extract_sl_weights(fit) + } + } + + if (t < tau) { + tmp <- transform_sdr(compute_weights(ratios, t + 1, tau), + t, tau, + m_shifted_train, + m_natural_train) + + natural$train[, pseudo] <- shifted$train[, pseudo] <- tmp + + learners <- check_variation(natural$train[i & rt, ][[pseudo]], learners) + + fit <- run_ensemble(natural$train[i & rt, ][[pseudo]], + natural$train[i & rt, vars], + learners, + "continuous", + id = natural$train[i & rt, ][["lmtp_id"]], + lrnr_folds) + + if (full_fits) { + fits[[t]] <- fit + } else { + fits[[t]] <- extract_sl_weights(fit) + } + } + + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + + under_shift_train <- natural$train[jt & rt, vars] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] + + under_shift_valid <- natural$valid[jv & rv, vars] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] + + m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) + m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) + m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) + m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) + + m_natural_train[!rt, t] <- 0 + m_shifted_train[!rt, t] <- 0 + m_natural_valid[!rv, t] <- 0 + m_shifted_valid[!rv, t] <- 0 + + pb() + } + + list(natural = m_natural_valid, + shifted = m_shifted_valid, + fits = fits) +} diff --git a/R/shift.R b/R/shift.R new file mode 100644 index 00000000..115f77a7 --- /dev/null +++ b/R/shift.R @@ -0,0 +1,129 @@ +shift_data <- function(data, trt, cens, shift) { + if (is.null(shift)) { + return(shift_cens(data, cens)) + } + + is_multivariate <- is.list(trt) + if (isTRUE(is_multivariate)) { + return(shift_trt_list(shift_cens(data, cens), trt, shift)) + } + + shift_trt_character(shift_cens(data, cens), trt, shift) +} + +shift_cens <- function(data, cens) { + out <- as.list(data) + for (ce in cens) { + out[[ce]] <- 1 + } + as.data.frame(out, check.names = FALSE) +} + +shift_trt_character <- function(data, trt, .f) { + for (a in trt) { + data[[a]] <- .f(data, a) + } + data +} + +shift_trt_list <- function(data, trt, .f) { + for (a in trt) { + new <- .f(data, a) + for (col in a) { + data[[col]] <- new[[col]] + } + } + data +} + +#' Turn All Treatment Nodes On +#' +#' A pre-packaged shift function for use with provided estimators when the exposure is binary. +#' Used to estimate the population intervention effect when all treatment variables are set to 1. +#' +#' @param data A dataframe containing the treatment variables. +#' @param trt The name of the current treatment variable. +#' +#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] +#' @return A dataframe with all treatment nodes set to 1. +#' @export +#' +#' @examples +#' \donttest{ +#' data("iptwExWide", package = "twang") +#' a <- paste0("tx", 1:3) +#' baseline <- c("gender", "age") +#' tv <- list(c("use0"), c("use1"), c("use2")) +#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, +#' shift = static_binary_on, outcome_type = "continuous", folds = 2) +#' } +static_binary_on <- function(data, trt) { + rep(1, length(data[[trt]])) +} + +#' Turn All Treatment Nodes Off +#' +#' A pre-packaged shift function for use with provided estimators when the exposure is binary. +#' Used to estimate the population intervention effect when all treatment variables are set to 0. +#' +#' @param data A dataframe containing the treatment variables. +#' @param trt The name of the current treatment variable. + +#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] +#' @return A dataframe with all treatment nodes set to 0. +#' @export +#' +#' @examples +#' \donttest{ +#' data("iptwExWide", package = "twang") +#' a <- paste0("tx", 1:3) +#' baseline <- c("gender", "age") +#' tv <- list(c("use0"), c("use1"), c("use2")) +#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, +#' shift = static_binary_off, outcome_type = "continuous", folds = 2) +#' } +static_binary_off <- function(data, trt) { + rep(0, length(data[[trt]])) +} + +#' IPSI Function Factory +#' +#' A function factory that returns a shift function for increasing or decreasing +#' the probability of exposure when exposure is binary. +#' +#' @param delta \[\code{numeric(1)}\]\cr +#' A risk ratio between 0 and Inf. +#' +#' @seealso [lmtp_tmle()], [lmtp_sdr()], [lmtp_sub()], [lmtp_ipw()] +#' @return A shift function. +#' @export +#' +#' @examples +#' \donttest{ +#' data("iptwExWide", package = "twang") +#' a <- paste0("tx", 1:3) +#' baseline <- c("gender", "age") +#' tv <- list(c("use0"), c("use1"), c("use2")) +#' lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, +#' shift = ipsi(0.5), outcome_type = "continuous", folds = 2) +#' } +ipsi <- function(delta) { + if (delta > 1) { + return(ipsi_up(1 / delta)) + } + ipsi_down(delta) +} + +ipsi_up <- function(delta) { + function(data, trt) { + eps <- runif(nrow(data), 0, 1) + ifelse(eps < delta, data[[trt]], 1) + } +} + +ipsi_down <- function(delta) { + function(data, trt) { + eps <- runif(nrow(data), 0, 1) + ifelse(eps < delta, data[[trt]], 0) + } +} diff --git a/R/sl.R b/R/sl.R new file mode 100644 index 00000000..d2974797 --- /dev/null +++ b/R/sl.R @@ -0,0 +1,31 @@ +check_variation <- function(outcome, learners) { + if (sd(outcome) < .Machine$double.eps) { + return("SL.mean") + } + learners +} + +#' @importFrom nnls nnls +run_ensemble <- function(Y, X, learners, outcome_type, id, folds) { + family <- ifelse(outcome_type == "binomial", binomial(), gaussian()) + cv_control <- SuperLearner::SuperLearner.CV.control(V = folds) + fit <- SuperLearner::SuperLearner( + Y, X, family = family[[1]], SL.library = learners, + id = id, method = "method.NNLS", + env = environment(SuperLearner::SuperLearner), + cvControl = cv_control + ) + + if (!sum(fit$coef != 0)) { + warning("SuperLearner fit failed. Trying main-effects GLM.", call. = FALSE) + fit <- glm(lmtp_tmp_outcome_vector ~ ., data = cbind(lmtp_tmp_outcome_vector = Y, X), family = family[[1]]) + } + fit +} + +SL_predict <- function(fit, newdata) { + if (inherits(fit, "glm")) { + return(as.vector(predict(fit, newdata, type = "response"))) + } + predict(fit, newdata)$pred[, 1] +} diff --git a/R/theta.R b/R/theta.R new file mode 100644 index 00000000..09bdcfd3 --- /dev/null +++ b/R/theta.R @@ -0,0 +1,119 @@ +theta_sub <- function(eta) { + if (is.null(eta$weights)) { + theta <- mean(eta$m[, 1]) + } + + if (!is.null(eta$weights)) { + theta <- weighted.mean(eta$m[, 1], eta$weights) + } + + if (eta$outcome_type == "continuous") { + theta <- rescale_y_continuous(theta, eta$bounds) + } + + out <- list( + estimator = "substitution", + theta = theta, + standard_error = NA_real_, + low = NA_real_, + high = NA_real_, + shift = eta$shift, + outcome_reg = switch( + eta$outcome_type, + continuous = rescale_y_continuous(eta$m, eta$bounds), + binomial = eta$m + ), + fits_m = eta$fits_m, + outcome_type = eta$outcome_type + ) + + class(out) <- "lmtp" + out +} + +theta_ipw <- function(eta) { + if (is.null(eta$weights)) { + theta <- mean(eta$r[, eta$tau]*missing_outcome(eta$y)) + } + + if (!is.null(eta$weights)) { + theta <- weighted.mean( + eta$r[, eta$tau]*missing_outcome(eta$y), + eta$weights + ) + } + + out <- list( + estimator = "IPW", + theta = theta, + standard_error = NA_real_, + low = NA_real_, + high = NA_real_, + shift = eta$shift, + density_ratios = eta$r, + fits_r = eta$fits_r + ) + + class(out) <- "lmtp" + out +} + +eif <- function(r, tau, shifted, natural) { + natural[is.na(natural)] <- -999 + shifted[is.na(shifted)] <- -999 + m <- shifted[, 2:(tau + 1), drop = FALSE] - natural[, 1:tau, drop = FALSE] + rowSums(compute_weights(r, 1, tau) * m, na.rm = TRUE) + shifted[, 1] +} + +theta_dr <- function(eta, augmented = FALSE) { + inflnce <- eif(r = eta$r, + tau = eta$tau, + shifted = eta$m$shifted, + natural = eta$m$natural) + theta <- { + if (augmented) + if (is.null(eta$weights)) + mean(inflnce) + else + weighted.mean(inflnce, eta$weights) + else + if (is.null(eta$weights)) + mean(eta$m$shifted[, 1]) + else + weighted.mean(eta$m$shifted[, 1], eta$weights) + } + + if (eta$outcome_type == "continuous") { + inflnce <- rescale_y_continuous(inflnce, eta$bounds) + theta <- rescale_y_continuous(theta, eta$bounds) + } + + clusters <- split(inflnce, eta$id) + j <- length(clusters) + se <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) + ci_low <- theta - (qnorm(0.975) * se) + ci_high <- theta + (qnorm(0.975) * se) + + out <- list( + estimator = eta$estimator, + theta = theta, + standard_error = se, + low = ci_low, + high = ci_high, + eif = inflnce, + id = eta$id, + shift = eta$shift, + outcome_reg = switch( + eta$outcome_type, + continuous = rescale_y_continuous(eta$m$shifted, eta$bounds), + binomial = eta$m$shifted + ), + density_ratios = eta$r, + fits_m = eta$fits_m, + fits_r = eta$fits_r, + outcome_type = eta$outcome_type + ) + + class(out) <- "lmtp" + out +} diff --git a/R/tidy.R b/R/tidy.R new file mode 100644 index 00000000..8ff520bf --- /dev/null +++ b/R/tidy.R @@ -0,0 +1,30 @@ +#' @importFrom generics tidy +#' @export +generics::tidy + +#' Tidy a(n) lmtp object +#' +#' @param x A `lmtp` object produced by a call to [lmtp::lmtp_tmle()], [lmtp::lmtp_sdr()], +#' [lmtp::lmtp_sub()], or [lmtp::lmtp_ipw()]. +#' @param ... Unused, included for generic consistency only. +#' +#' @examples +#' \donttest{ +#' a <- c("A1", "A2") +#' nodes <- list(c("L1"), c("L2")) +#' cens <- c("C1", "C2") +#' y <- "Y" +#' fit <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 2) +#' tidy(fit) +#' } +#' +#' @export +tidy.lmtp <- function(x, ...) { + out <- data.frame(estimator = x$estimator, + estimate = x$theta, + std.error = x$standard_error, + conf.low = x$low, + conf.high = x$high) + class(out) <- c("tbl_df", "tbl", "data.frame") + out +} diff --git a/R/tmle.R b/R/tmle.R new file mode 100644 index 00000000..7cd9b783 --- /dev/null +++ b/R/tmle.R @@ -0,0 +1,109 @@ +cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { + out <- vector("list", length = length(Task$folds)) + ratios <- matrix(t(apply(ratios, 1, cumprod)), + nrow = nrow(ratios), + ncol = ncol(ratios)) + + for (fold in seq_along(Task$folds)) { + out[[fold]] <- future::future({ + estimate_tmle( + get_folded_data(Task$natural, Task$folds, fold), + get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), + Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, + Task$tau, Task$outcome_type, + get_folded_data(ratios, Task$folds, fold)$train, + learners, lrnr_folds, pb, full_fits + ) + }, + seed = TRUE) + } + + out <- future::value(out) + + list( + natural = recombine_outcome(out, "natural", Task$folds), + shifted = cbind(recombine_outcome(out, "shifted", Task$folds), Task$natural[["tmp_lmtp_scaled_outcome"]]), + fits = lapply(out, function(x) x[["fits"]]) + ) +} + +estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, + risk, tau, outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { + m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) + m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) + + fits <- vector("list", length = tau) + for (t in tau:1) { + i <- censored(natural$train, cens, t)$i + jt <- censored(natural$train, cens, t)$j + jv <- censored(natural$valid, cens, t)$j + rt <- at_risk(natural$train, risk, t) + rv <- at_risk(natural$valid, risk, t) + + pseudo <- paste0("tmp_lmtp_pseudo", t) + vars <- node_list[[t]] + + if (t != tau) { + outcome <- paste0("tmp_lmtp_pseudo", t + 1) + outcome_type <- "continuous" + } + + learners <- check_variation(natural$train[i & rt, ][[outcome]], learners) + + fit <- run_ensemble( + natural$train[i & rt, ][[outcome]], + natural$train[i & rt, vars], + learners, + outcome_type, + id = natural$train[i & rt,][["lmtp_id"]], + lrnr_folds + ) + + if (full_fits) { + fits[[t]] <- fit + } else { + fits[[t]] <- extract_sl_weights(fit) + } + + if (length(trt) > 1) { + trt_t <- trt[[t]] + } else { + trt_t <- trt[[1]] + } + + under_shift_train <- natural$train[jt & rt, vars] + under_shift_train[, trt_t] <- shifted$train[jt & rt, trt_t] + + under_shift_valid <- natural$valid[jv & rv, vars] + under_shift_valid[, trt_t] <- shifted$valid[jv & rv, trt_t] + + m_natural_train[jt & rt, t] <- bound(SL_predict(fit, natural$train[jt & rt, vars]), 1e-05) + m_shifted_train[jt & rt, t] <- bound(SL_predict(fit, under_shift_train), 1e-05) + m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) + m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) + + fit <- sw( + glm( + natural$train[i & rt, ][[outcome]] ~ offset(qlogis(m_natural_train[i & rt, t])), + weights = ratios[i & rt, t], + family = "binomial" + ) + ) + + natural$train[jt & rt, pseudo] <- bound(plogis(qlogis(m_shifted_train[jt & rt, t]) + coef(fit))) + m_natural_valid[jv & rv, t] <- bound(plogis(qlogis(m_natural_valid[jv & rv, t]) + coef(fit))) + m_shifted_valid[jv & rv, t] <- bound(plogis(qlogis(m_shifted_valid[jv & rv, t]) + coef(fit))) + + natural$train[!rt, pseudo] <- 0 + m_natural_valid[!rv, t] <- 0 + m_shifted_valid[!rv, t] <- 0 + + pb() + } + + list( + natural = m_natural_valid, + shifted = m_shifted_valid, + fits = fits + ) +} diff --git a/R/utils.R b/R/utils.R new file mode 100644 index 00000000..14dca938 --- /dev/null +++ b/R/utils.R @@ -0,0 +1,217 @@ +determine_tau <- function(outcome, trt) { + surv <- length(outcome) > 1 + if (!surv) { + return(length(trt)) + } + length(outcome) +} + +setup_cv <- function(data, id, V = 10) { + out <- origami::make_folds(data, cluster_ids = id, V = V) + if (V > 1) { + return(out) + } + out[[1]]$training_set <- out[[1]]$validation_set + out +} + +get_folded_data <- function(data, folds, index) { + out <- list() + out[["train"]] <- data[folds[[index]]$training_set, , drop = FALSE] + out[["valid"]] <- data[folds[[index]]$validation_set, , drop = FALSE] + out +} + +fix_censoring_ind <- function(data, cens) { + if (is.null(cens)) { + return(data) + } + + data <- data.table::copy(data) + for (cen in cens) { + data.table::set(data, j = cen, value = ifelse(is.na(data[[cen]]), 0, data[[cen]])) + } + data +} + +bound <- function(x, p = 1e-05) { + pmax(pmin(x, 1 - p), p) +} + +scale_y <- function(y, bounds) { + if (is.null(bounds)) { + return(y) + } + (y - bounds[1]) / (bounds[2] - bounds[1]) +} + +y_bounds <- function(y, outcome_type, bounds = NULL) { + if (outcome_type == "binomial" || is.null(outcome_type)) { + return(NULL) + } + if (is.null(bounds)) { + return(c(min(y, na.rm = T), max(y, na.rm = T))) + } + c(bounds[1], bounds[2]) +} + +rescale_y_continuous <- function(scaled, bounds) { + (scaled*(bounds[2] - bounds[1])) + bounds[1] +} + +censored <- function(data, cens, tau) { + # when no censoring return TRUE for all obs + if (is.null(cens)) { + return(list(i = rep(TRUE, nrow(data)), j = rep(TRUE, nrow(data)))) + } + + # other wise find censored observations + i <- data[[cens[tau]]] == 1 + + if (tau > 1) { + return(list(i = i, j = data[[cens[tau - 1]]] == 1)) + } + + list(i = i, j = rep(TRUE, nrow(data))) +} + +at_risk <- function(data, risk, tau, check = FALSE) { + if (is.null(risk)) { + return(rep(TRUE, nrow(data))) + } + + if (tau == 1) { + return(rep(TRUE, nrow(data))) + } + + if (check) { + return(data[[risk[tau - 1]]] == 0 & !is.na(data[[risk[tau - 1]]])) + } + + data[[risk[tau - 1]]] == 1 & !is.na(data[[risk[tau - 1]]]) +} + +followed_rule <- function(obs_trt, shifted_trt, mtp) { + if (mtp) { + if (inherits(obs_trt, "data.frame")) { + return(rep(TRUE, nrow(obs_trt))) + } + return(rep(TRUE, length(obs_trt))) + } + + mapply(function(x, y) isTRUE(all.equal(x, y)), as.list(obs_trt), as.list(shifted_trt)) +} + +transform_sdr <- function(r, tau, max, shifted, natural) { + natural[is.na(natural)] <- -999 + shifted[is.na(shifted)] <- -999 + m <- shifted[, (tau + 2):(max + 1), drop = FALSE] - natural[, (tau + 1):max, drop = FALSE] + rowSums(r * m, na.rm = TRUE) + shifted[, tau + 1] +} + +recombine_ratios <- function(x, folds) { + ind <- Reduce(c, lapply(folds, function(x) x[["validation_set"]])) + + returns <- list() + + returns$ratios <- Reduce( + rbind, + lapply(x, function(x) x[["ratios"]]) + )[order(ind), ] + + if (is.null(dim(returns[["ratios"]]))) { + returns[["ratios"]] <- as.matrix( + returns[["ratios"]], + nrow = length(returns[["ratios"]]), + ncol = 1 + ) + } + + returns$fits <- lapply(x, function(x) x[["fits"]]) + returns +} + +trim_ratios <- function(x, trim) { + x[["ratios"]] <- pmin(x[["ratios"]], quantile(x[["ratios"]], trim)) + x +} + +recombine_outcome <- function(x, part, folds) { + ind <- Reduce(c, lapply(folds, function(x) x[["validation_set"]])) + Reduce(rbind, lapply(x, function(x) x[[part]]))[order(ind), , drop = FALSE] +} + +is.lmtp <- function(x) { + class(x) == "lmtp" +} + +sw <- function(x) { + suppressWarnings(x) +} + +final_outcome <- function(outcomes) { + outcomes[length(outcomes)] +} + +extract_sl_weights <- function(fit) { + fit$coef +} + +#' Time To Event Last Outcome Carried Forward +#' +#' A helper function to prepare survival data for use with LMTP estimators +#' by imputing outcome nodes using last outcome carried forward when an observation +#' experiences the event before the end-of-follow-up. +#' +#' @param data The dataset to modify. +#' @param outcomes A vector of outcome nodes ordered by time. +#' +#' @return A modified dataset with future outcome nodes set to 1 if an observation +#' experienced an event at any previous time point. +#' +#' @importFrom data.table as.data.table `:=` .SD +#' @export +#' @examples +#' event_locf(sim_point_surv, paste0("Y.", 1:6)) +event_locf <- function(data, outcomes) { + DT <- as.data.table(data) + tau <- length(outcomes) + for (j in outcomes[1:(tau - 1)]) { + modify <- setdiff(outcomes[match(j, outcomes):tau], j) + DT[get(j) == 1 & !is.na(get(j)), (modify) := lapply(.SD, function(x) 1), .SDcols = modify] + } + DT[] + DT +} + +create_ids <- function(data, id) { + if (is.null(id)) { + return(1:nrow(data)) + } + data[[id]] +} + +convert_to_surv <- function(x) { + data.table::fcase( + x == 0, 1, + x == 1, 0 + ) +} + +missing_outcome <- function(x) { + ifelse(is.na(x), 0, x) +} + +risk_indicators <- function(x) { + if (length(x) == 1) { + return(NULL) + } + + x[1:(length(x) - 1)] +} + +compute_weights <- function(r, t, tau) { + out <- t(apply(r[, t:tau, drop = FALSE], 1, cumprod)) + if (ncol(out) > ncol(r)) return(t(out)) + out +} diff --git a/README.Rmd b/README.Rmd new file mode 100644 index 00000000..2ce2e861 --- /dev/null +++ b/README.Rmd @@ -0,0 +1,183 @@ +--- +output: github_document +--- + + + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + fig.path = "man/figures/README-", + out.width = "100%" +) +``` + +# lmtp + + + +[![CRAN status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) ![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) [![R build status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) [![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) + + + +> Non-parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies + +Nick Williams and Ivan Diaz + +------------------------------------------------------------------------ + +**lmtp** is an R package that provides an estimation framework for the casual effects of feasible interventions based on point-treatment and longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck (2020). Two primary estimators are supported, a targeted maximum likelihood (TML) estimator and a sequentially doubly robust (SDR) estimator (a G-computation and an inverse probability of treatment weighting estimator are provided for the sake of being thorough but their use is recommended against in favor of the TML and SDR estimators). Both binary and continuous outcomes (both with censoring) are allowed. **lmtp** is built atop the [`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) package to utilize ensemble machine learning for estimation. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type providing decreased computation time when treatment is continuous. Dynamic treatment regimes are also supported. + +A list of papers using **lmtp** is [here](https://gist.github.com/nt-williams/15068f5849a67ff4d2cb7f2dcf97b3de). + +For an in-depth look at the package's functionality, please consult the accompanying technical paper in [Observational Studies](https://muse.jhu.edu/article/883479). + +## Installation + +**lmtp** can be installed from CRAN with: + +``` r +install.packages("lmtp") +``` + +The stable, development version can be installed from GitHub with: + +``` r +devtools::install_github("nt-williams/lmtp@devel") +``` + +A version allowing for different covariates sets for the treatment, censoring, and outcome regressions: + +``` r +devtools::install_github("nt-williams/lmtp@separate-variable-sets") +``` + +## What even is a modified treatment policy? + +Modified treatment policies (MTP) are interventions that can depend on the *natural* value of the treatment (the treatment value in the absence of intervention). A key assumption for causal inference is the *positivity assumption* which states that all observations have a non-zero probability of experiencing a treatment value. **When working with continuous or multivalued treatments, violations of the positivity assumption are likely to occur. MTPs offer a solution to this problem.** + +## Can lmtp estimate other effects? + +Yes! **lmtp** can estimate the effects of deterministic, static treatment effects (such as the ATE) and deterministic, dynamic treatment regimes for binary, continuous, and survival outcomes. + +### Features + +| Feature | Status | +|---------------------------------------------------------|:-------------:| +| Point treatment | ✓ | +| Longitudinal treatment | ✓ | +| Modified treatment intervention | ✓ | +| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | +| Static intervention | ✓ | +| Dynamic intervention | ✓ | +| Continuous treatment | ✓ | +| Binary treatment | ✓ | +| Categorical treatment | ✓ | +| Multivariate treatment | ✓ | +| Missingness in treatment | | +| Continuous outcome | ✓ | +| Binary outcome | ✓ | +| Censored outcome | ✓ | +| Mediation | | +| Survey weights | ✓ | +| Super learner | ✓ | +| Clustered data | ✓ | +| Parallel processing | ✓ | +| Progress bars | ✓ | + +## Example + +```{r} +library(lmtp) + +# the data: 4 treatment nodes with time varying covariates and a binary outcome +head(sim_t4) +``` + +We're interested in a treatment policy, `d`, where exposure is decreased by 1 only among subjects whose exposure won't go below 1 if intervened upon. The true population outcome under this policy is about 0.305. + +```{r} +# a treatment policy function to be applied at all time points +policy <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) +} +``` + +In addition to specifying a treatment policy, we need to specify our treatment variables and time-varying covariates. + +```{r} +# treatment nodes, a character vector of length 4 +A <- c("A_1", "A_2", "A_3", "A_4") +# time varying nodes, a list of length 4 +L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) +``` + +We can now estimate the effect of our treatment policy, `d`. In this example, we'll use the cross-validated TML estimator with 10 folds. + +```{r, eval = FALSE} +lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mtp", folds = 10) +#> LMTP Estimator: TMLE +#> Trt. Policy: (policy) +#> +#> Population intervention estimate +#> Estimate: 0.2526 +#> Std. error: 0.0223 +#> 95% CI: (0.2089, 0.2962) +``` + +## Data structure + +#### Single time point + + + +#### Time-varying exposure and confounders, not survival outcome + + + +#### Single exposure, survival outcome + + + +#### Time-varying exposure and confounders, survival outcome + + + +## Similar Implementations + +A variety of other R packages perform similar tasks as **lmtp**. However, **lmtp** is the only R package currently capable of estimating causal effects for binary, categorical, and continuous exposures in both the point treatment and longitudinal setting using traditional causal effects or modified treatment policies. + +- [`txshift`](https://github.com/nhejazi/txshift)\ +- [`tmle3`](https://github.com/tlverse/tmle3)\ +- [`tmle3shift`](https://github.com/tlverse/tmle3shift) +- [`ltmle`](https://CRAN.R-project.org/package=ltmle)\ +- [`tmle`](https://CRAN.R-project.org/package=tmle) + +## Citation + +Please cite the following when using **lmtp** in publications. Citation should include both the R package article and the paper establishing the statistical methodology. + +``` +@article{, + title = {lmtp: An R package for estimating the causal effects of modified treatment policies}, + author = {Nicholas T Williams and Iván Díaz}, + journal = {Observational Studies}, + year = {2023}, + url = {https://muse.jhu.edu/article/883479} +} + +@article{ + doi:10.1080/01621459.2021.1955691, + author = {Iván Díaz and Nicholas Williams and Katherine L. Hoffman and Edward J. Schenck}, + title = {Non-parametric causal effects based on longitudinal modified treatment policies}, + journal = {Journal of the American Statistical Association}, + year = {2021}, + doi = {10.1080/01621459.2021.1955691}, + URL = {https://doi.org/10.1080/01621459.2021.1955691}, +} +``` + +## References + +Iván Díaz, Nicholas Williams, Katherine L. Hoffman & Edward J. Schenck (2021) Non-parametric causal effects based on longitudinal modified treatment policies, Journal of the American Statistical Association, DOI: 10.1080/01621459.2021.1955691 diff --git a/README.md b/README.md new file mode 100644 index 00000000..8374a0f3 --- /dev/null +++ b/README.md @@ -0,0 +1,231 @@ + + + +# lmtp + + + +[![CRAN +status](https://www.r-pkg.org/badges/version/lmtp)](https://CRAN.R-project.org/package=lmtp) +![](http://cranlogs.r-pkg.org/badges/grand-total/lmtp) [![R build +status](https://github.com/nt-williams/lmtp/workflows/R-CMD-check/badge.svg)](https://github.com/nt-williams/lmtp/actions) +[![codecov](https://codecov.io/gh/nt-williams/lmtp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/nt-williams/lmtp) +[![License: GPL +v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) +[![Project Status: Active – The project has reached a stable, usable +state and is being actively +developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) + + + +> Non-parametric Causal Effects of Feasible Interventions Based on +> Modified Treatment Policies + +Nick Williams and Ivan Diaz + +------------------------------------------------------------------------ + +**lmtp** is an R package that provides an estimation framework for the +casual effects of feasible interventions based on point-treatment and +longitudinal modified treatment policies as described in Diaz, Williams, +Hoffman, and Schenck (2020). Two primary estimators are supported, a +targeted maximum likelihood (TML) estimator and a sequentially doubly +robust (SDR) estimator (a G-computation and an inverse probability of +treatment weighting estimator are provided for the sake of being +thorough but their use is recommended against in favor of the TML and +SDR estimators). Both binary and continuous outcomes (both with +censoring) are allowed. **lmtp** is built atop the +[`SuperLearner`](https://CRAN.R-project.org/package=SuperLearner) +package to utilize ensemble machine learning for estimation. The +treatment mechanism is estimated via a density ratio classification +procedure irrespective of treatment variable type providing decreased +computation time when treatment is continuous. Dynamic treatment regimes +are also supported. + +A list of papers using **lmtp** is +[here](https://gist.github.com/nt-williams/15068f5849a67ff4d2cb7f2dcf97b3de). + +For an in-depth look at the package’s functionality, please consult the +accompanying technical paper in [Observational +Studies](https://muse.jhu.edu/article/883479). + +## Installation + +**lmtp** can be installed from CRAN with: + +``` r +install.packages("lmtp") +``` + +The stable, development version can be installed from GitHub with: + +``` r +devtools::install_github("nt-williams/lmtp@devel") +``` + +A version allowing for different covariates sets for the treatment, +censoring, and outcome regressions: + +``` r +devtools::install_github("nt-williams/lmtp@separate-variable-sets") +``` + +## What even is a modified treatment policy? + +Modified treatment policies (MTP) are interventions that can depend on +the *natural* value of the treatment (the treatment value in the absence +of intervention). A key assumption for causal inference is the +*positivity assumption* which states that all observations have a +non-zero probability of experiencing a treatment value. **When working +with continuous or multivalued treatments, violations of the positivity +assumption are likely to occur. MTPs offer a solution to this problem.** + +## Can lmtp estimate other effects? + +Yes! **lmtp** can estimate the effects of deterministic, static +treatment effects (such as the ATE) and deterministic, dynamic treatment +regimes for binary, continuous, and survival outcomes. + +### Features + +| Feature | Status | +|------------------------------------------------------------------|:------:| +| Point treatment | ✓ | +| Longitudinal treatment | ✓ | +| Modified treatment intervention | ✓ | +| Incremental Propensity Score Intervention (Using the risk ratio) | ✓ | +| Static intervention | ✓ | +| Dynamic intervention | ✓ | +| Continuous treatment | ✓ | +| Binary treatment | ✓ | +| Categorical treatment | ✓ | +| Multivariate treatment | ✓ | +| Missingness in treatment | | +| Continuous outcome | ✓ | +| Binary outcome | ✓ | +| Censored outcome | ✓ | +| Mediation | | +| Survey weights | ✓ | +| Super learner | ✓ | +| Clustered data | ✓ | +| Parallel processing | ✓ | +| Progress bars | ✓ | + +## Example + +``` r +library(lmtp) +#> Loading required package: mlr3superlearner +#> Loading required package: mlr3learners +#> Warning: package 'mlr3learners' was built under R version 4.2.3 +#> Loading required package: mlr3 +#> Warning: package 'mlr3' was built under R version 4.2.3 + +# the data: 4 treatment nodes with time varying covariates and a binary outcome +head(sim_t4) +#> ID L_1 A_1 L_2 A_2 L_3 A_3 L_4 A_4 Y +#> 1 1 2 3 0 1 1 1 1 3 0 +#> 2 2 2 1 1 4 0 3 1 2 0 +#> 3 3 1 0 1 3 1 2 1 1 1 +#> 4 4 1 0 0 3 1 3 1 2 0 +#> 5 5 3 3 1 1 0 1 1 2 0 +#> 6 6 1 0 0 2 0 3 1 4 0 +``` + +We’re interested in a treatment policy, `d`, where exposure is decreased +by 1 only among subjects whose exposure won’t go below 1 if intervened +upon. The true population outcome under this policy is about 0.305. + +``` r +# a treatment policy function to be applied at all time points +policy <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) +} +``` + +In addition to specifying a treatment policy, we need to specify our +treatment variables and time-varying covariates. + +``` r +# treatment nodes, a character vector of length 4 +A <- c("A_1", "A_2", "A_3", "A_4") +# time varying nodes, a list of length 4 +L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) +``` + +We can now estimate the effect of our treatment policy, `d`. In this +example, we’ll use the cross-validated TML estimator with 10 folds. + +``` r +lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, intervention_type = "mtp", folds = 10) +#> LMTP Estimator: TMLE +#> Trt. Policy: (policy) +#> +#> Population intervention estimate +#> Estimate: 0.2526 +#> Std. error: 0.0223 +#> 95% CI: (0.2089, 0.2962) +``` + +## Data structure + +#### Single time point + + + +#### Time-varying exposure and confounders, not survival outcome + + + +#### Single exposure, survival outcome + + + +#### Time-varying exposure and confounders, survival outcome + + + +## Similar Implementations + +A variety of other R packages perform similar tasks as **lmtp**. +However, **lmtp** is the only R package currently capable of estimating +causal effects for binary, categorical, and continuous exposures in both +the point treatment and longitudinal setting using traditional causal +effects or modified treatment policies. + +- [`txshift`](https://github.com/nhejazi/txshift) +- [`tmle3`](https://github.com/tlverse/tmle3) +- [`tmle3shift`](https://github.com/tlverse/tmle3shift) +- [`ltmle`](https://CRAN.R-project.org/package=ltmle) +- [`tmle`](https://CRAN.R-project.org/package=tmle) + +## Citation + +Please cite the following when using **lmtp** in publications. Citation +should include both the R package article and the paper establishing the +statistical methodology. + + @article{, + title = {lmtp: An R package for estimating the causal effects of modified treatment policies}, + author = {Nicholas T Williams and Iván Díaz}, + journal = {Observational Studies}, + year = {2023}, + url = {https://muse.jhu.edu/article/883479} + } + + @article{ + doi:10.1080/01621459.2021.1955691, + author = {Iván Díaz and Nicholas Williams and Katherine L. Hoffman and Edward J. Schenck}, + title = {Non-parametric causal effects based on longitudinal modified treatment policies}, + journal = {Journal of the American Statistical Association}, + year = {2021}, + doi = {10.1080/01621459.2021.1955691}, + URL = {https://doi.org/10.1080/01621459.2021.1955691}, + } + +## References + +Iván Díaz, Nicholas Williams, Katherine L. Hoffman & Edward J. Schenck +(2021) Non-parametric causal effects based on longitudinal modified +treatment policies, Journal of the American Statistical Association, +DOI: 10.1080/01621459.2021.1955691 diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..e5a1ab93 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +comment: false + +coverage: + status: + project: + default: + target: auto + threshold: 1% + informational: true + patch: + default: + target: auto + threshold: 1% + informational: true diff --git a/cran-comments.md b/cran-comments.md new file mode 100644 index 00000000..49645184 --- /dev/null +++ b/cran-comments.md @@ -0,0 +1,13 @@ +## Version 1.3.3 submission + +## Test environments + +- local R installation (Mac OS), R release +- local R installation (Mac OS), R old release +- Windows-latest (on GitHub actions), R release +- Windows (Win-builder), R devel +- Windows (Win-builder), R old release + +## R CMD check results + +0 errors \| 0 warnings \| 0 notes diff --git a/data/multivariate_data.rda b/data/multivariate_data.rda new file mode 100644 index 0000000000000000000000000000000000000000..7bd9a9115a5d9b1f748e59b8f0356bb65cc13f90 GIT binary patch literal 94038 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�d=%W83=ZdGzZYm7U#} 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 DexZe; literal 0 HcmV?d00001 diff --git a/data/sim_cens.rda b/data/sim_cens.rda new file mode 100644 index 0000000000000000000000000000000000000000..200a4fbceddf15b84a29c6dffcdf21036d88009b GIT binary patch literal 16749 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�W)mtAhyB{TYalY>|nq4GE3z_m47R-R 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

q(zZ!A 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 UnnBJquV46G$rRy2LatKlAc3BMEC2ui literal 0 HcmV?d00001 diff --git a/data/sim_point_surv.rda b/data/sim_point_surv.rda new file mode 100644 index 0000000000000000000000000000000000000000..529d66b90c5bddddebe95d8c24b5a01c1fc34cf6 GIT binary patch literal 6805 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 R$Qew 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 WHSZ%Q7yp0s&SN>3kl6Ke*BAgQ@jcrB literal 0 HcmV?d00001 diff --git a/data/sim_timevary_surv.rda b/data/sim_timevary_surv.rda new file mode 100644 index 0000000000000000000000000000000000000000..54c831f9d9d2cc77712942ebb41af9402079b963 GIT binary patch literal 15488 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
%5B&`&^fLx!KVfjsF}pOhF>lKgFu*1jig=UIg;u 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 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_ipw(ex1_dat, "A", "Y", "W", mtp = TRUE, shift = policy, + outcome_type = "continuous", folds = 2) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_ipw(sim_t4, A, "Y", time_vary = L, + shift = policy, folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_ipw(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + shift = policy, k = 0, folds = 2) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_ipw(sim_t4, A, "Y", time_vary = L, + k = 0, mtp = TRUE, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) %in% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_ipw(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_ipw(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_ipw(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_ipw(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} diff --git a/inst/examples/sdr-ex.R b/inst/examples/sdr-ex.R new file mode 100644 index 00000000..e1a4ec1a --- /dev/null +++ b/inst/examples/sdr-ex.R @@ -0,0 +1,165 @@ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_sdr(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2, mtp = TRUE) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, + folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_sdr(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) %in% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_sdr(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_sdr( + iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2 + ) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_sdr(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sdr(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} diff --git a/inst/examples/sub-ex.R b/inst/examples/sub-ex.R new file mode 100644 index 00000000..0ae063fc --- /dev/null +++ b/inst/examples/sub-ex.R @@ -0,0 +1,159 @@ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_sub(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, folds = 2) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_sub(sim_t4, A, "Y", time_vary = L, k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) %in% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_sub(tmp, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_sub(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous") + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_sub(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sub(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1) +} diff --git a/inst/examples/tmle-ex.R b/inst/examples/tmle-ex.R new file mode 100644 index 00000000..a6631c97 --- /dev/null +++ b/inst/examples/tmle-ex.R @@ -0,0 +1,162 @@ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_tmle(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2, mtp = TRUE) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, + folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_tmle(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) %in% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_tmle(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_tmle(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_tmle(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_tmle(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} diff --git a/lmtp.Rproj b/lmtp.Rproj new file mode 100755 index 00000000..cba1b6b7 --- /dev/null +++ b/lmtp.Rproj @@ -0,0 +1,21 @@ +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +StripTrailingWhitespace: Yes + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageRoxygenize: rd,collate,namespace diff --git a/man/create_node_list.Rd b/man/create_node_list.Rd new file mode 100644 index 00000000..30b50371 --- /dev/null +++ b/man/create_node_list.Rd @@ -0,0 +1,46 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/nodelist.R +\name{create_node_list} +\alias{create_node_list} +\title{Create a node list specification} +\usage{ +create_node_list(trt, tau, time_vary = NULL, baseline = NULL, k = Inf) +} +\arguments{ +\item{trt}{A vector of column names of treatment variables.} + +\item{tau}{The number of time points of observation, excluding the final outcome.} + +\item{time_vary}{A list of length tau with the column names for new time_vary to +be introduced at each time point. The list should be ordered following +the time ordering of the model.} + +\item{baseline}{An optional vector of columns names for baseline covariates to be +included for adjustment at every timepoint.} + +\item{k}{An integer specifying how previous time points should be +used for estimation at the given time point. Default is \code{Inf}, +all time points.} +} +\value{ +A list of lists. Each sub-list is the same length of the +\code{time_vary} parameter with the variables to be used for estimation at that given time point +for either the treatment mechanism or outcome regression. +} +\description{ +Creates a node list specification that is used by the provided estimators. +\code{create_node_list()} is not explicitly called by the analyst, rather +it is provided so the analyst can confirm how estimators will use variables +before actually performing the estimation procedure. +} +\examples{ +a <- c("A_1", "A_2", "A_3", "A_4") +bs <- c("W_1", "W_2") +time_vary <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + +# assuming no Markov property +create_node_list(a, 4, time_vary, bs, k = Inf) + +# assuming a Markov property +create_node_list(a, 4, time_vary, bs, k = 0) +} diff --git a/man/event_locf.Rd b/man/event_locf.Rd new file mode 100644 index 00000000..4ad375df --- /dev/null +++ b/man/event_locf.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{event_locf} +\alias{event_locf} +\title{Time To Event Last Outcome Carried Forward} +\usage{ +event_locf(data, outcomes) +} +\arguments{ +\item{data}{The dataset to modify.} + +\item{outcomes}{A vector of outcome nodes ordered by time.} +} +\value{ +A modified dataset with future outcome nodes set to 1 if an observation +experienced an event at any previous time point. +} +\description{ +A helper function to prepare survival data for use with LMTP estimators +by imputing outcome nodes using last outcome carried forward when an observation +experiences the event before the end-of-follow-up. +} +\examples{ +event_locf(sim_point_surv, paste0("Y.", 1:6)) +} diff --git a/man/figures/lmtp.png b/man/figures/lmtp.png new file mode 100644 index 0000000000000000000000000000000000000000..db95f12600c34ed7837741991e52f72a194a20fa GIT binary patch literal 295373 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�gd>jv3#2?6(}sCeam4qip&gx&7g%`>IW%aB5Mt>2IsL39`UF^xiB^YEpeastch9;j&SzpAHX?h;(U^@v)A`AQ43nK-LSkzN}M zHs{TZ7|Zs64E@T%ueN-n?`fF>-ps>gns<4Cc#BsZG2WPxzGs$}5ND3xXZ`eMv!I9# zxc}VsU*cY)yZ)Mn00em2gfj`FXl zi-v#nO8R)-%_V}WB?FV?`FFC&t0nuwwr3E-AIF3i;;}wk9huh^@t;u0F7w{!Yp2#U z$2XX)AcP+;RG*#1ZD*@>j^k?k0_`xtfz8^$_Si5w2y% zLcYpfTkBu=!_;Ia&A2|OowdYk^EZmF~^LF1#;XHrj z;__IpUF+pX#ZnVnmeU&BD0UNHXhDcAj+ScQ3gm_J72Syd7ogxqt2yM=@7NXI;19H` zAqI00{XMQm9(2syXKgDl=0Dg)-Ra&(^k16T$kF$RGn^seI={qKEV!>{*@Ns8E%1Ot zH+&}+rksrux;cR|HLAAt^RV?C*p7hPJkq-Q>%ajqmkvtwduG3x+c$3-|JQ_d@R!Q6 zX_DqM3oEG=Hpy2&+~isQ6dKP;D#vl83%j^j^QdO{6M1Hi(^l`nV&xFpZPZ#^j&_IB zR|n#(@J^?5*@YWBh;^-dN^0zl`i05()e2tHzZCRhWJJMfkm} z)MGU!CYsgkqQRoOLa`)X6tX*mKE5;j4YiwdJL-R|ty5q7$k+@A#R^_v7gAiJ-ka2P{(mKL*2>=RYrn zfk~Cf`d0Hg6;tEeRL}z+H`hVAX`~L%(ZL8>CP%T8?TaTo@Ir^LP)sY_WZ{uu{vWaMu*cGrBj}O#wy1^_?=vrs=K!=$FcHQ7ssRD2$>!??*bL8V=HP-VMD|2eg2hwi zn;V8Ismdg)rlO>B)|F))&ke|b%Fcgz*sB+yt)U0+)Ee|1neHI;Y$NkZ$$Gm1KcSoa zKsnUGW8EzUaIe2_1l(JdiHwg?x4^nzclw(ZF7=SGZ!kp^aLELUy~dXD1KeFg#ht}L z6s;i+uWbo}#Wn*@&ycKC@J?b+rP|)ib)=c`1B|rDC8X2>viou3akEpJNU#T?gS!wg zwJB8L$^;hml=ZeVv7@1LOK-o2y`q777E@p@eti9DMvEKOO|Z}e;dNT&OFjFe%?NDF zh{oNOEGR}<|A*fKw(GbcPG@NN+2!!?dp~`AQ|T$X>%?>@xqDMd$lHh4_(A}d`27Eg z6zoYa{Ih@a|Ba4voku!A&Xu?aI8X@a5zwHwl*RJ5+9s-O3*%(}tL(ac2(BV2t|BY8hE1rX^VNsR|X+O8&8h| zU3fAPEQR0rZI;aNU%!ka-_3f7rSUb9)@SDJ%qNGe)#ez?@Xh@2c){bh78hmaR3O<9 z_#9+8sLM-IZ zx$pr_u_-YFeQ;bO>yEDVx*f=jC#?<|o}E9ExL3~9`Ul!A%vP7%SvJB+a|Q`l&PI%| z2|QV-0S-ewv~flxdxvkeSutS;^M~nEWJT_mA8)X-AD|@|YBgZ3in7eX$S_(Ye@dJ3jEXRhKWi@d_MawGVA#mf-w-o)&5LD zlP4pyvy!vG59^RkBISV6rTQB|LeCMW;K`n6S?CzK6BbA6EAED@en9DHjk`|ecfNu+ z;AUfNCk8o3G9!}7J_opx%N>nwh8_U)3lTW;GYHfO)Zck4z`dMr3S+#?FS_4IRe#-o>qWie3>WgdVm}1kqBq$kkTC9?9=+`IQ z*P@>*)|}Zip)|`3$+92h%wC+2!0O@O-ma={^NA?tE}fs-6aWuZ=88&fOdhP#QOtSX z9p_6m1|-*i&8QL#E#88tWG)Yc3WQQV=FLe7@&ESXNoLOy-bmnm`#j>}`5trjtn!Vk z=ZU#t-RoD{)W5dvT$YR!=?xCNeJ6-yD2JVbny0km0rv~FbSW|e#31f5uVo3$aR$TDSyw-}{JjP*+d+k#`s733W*2k5kQ z>N8G762fw3#Z$xyDje{D{mh8-@z)REQs?e;=ll_o&+6{i`T2`&pdvBcqb$EQD|I?nKlWCa?xC^ocO&ftIoRc;4Z;YZ`6^ocJ-x8v`;A< z;n^p0M6*VKFAubp0k(L+ke3Z|pnfpy`dOPk^H}WP4ncv3GkSn?2hHszilgPuZnT`| zLH|#GU<=S67;^?V-htHSc*o|m)`sGBu%W_+0norRJ2xu%ehwa5S5MNparEu^BhTKG zN1o>1w8#1*N?RJOn`wT7OUPCqwlYL4`*>|@4QuK3*kKXEesP@_L+psq%QzrxnYxH! zJSN&R@NCA>o9;vfA7~HG@;PgD7!DpCz2btr+9FK7{G)wZ4(TuWCfXS9bN_?nrAIpK zWWzwXpetl*lSPr43uEQ2?rzrjC4V1<{1|KGuX6|dvy4Au@1w?Re~PF9-eyHAaUK%6 zKLAhvym=ck%eil>9${#xs>kgCrrZCaAOl@A%*KzjQN{uR@_zQMl5M}`;}c`*`G!=} zVKf*=8I=5tBTw}`2X59u#XRtOk-*)uRr{(cr&Kq<&3~o3xy)m{Z#IY(sp0)5Q$Dm00s{1@0k zFJx{1tg$}wp4+vD@UJ{LznNd8mz*48@E6=AV@+!$w$dJWNnlmcR}EXb9-XFf#00ou z+E|4@tI3;V=b+=UzMG146`m0mTi=ozSYi78yYEwV;X4;8T;A6@r{%22ACjKu!*&OE z(fQ5Qd?%JfH60Di@jd$IDL3AStL^P8NNFQh+7EtB*Yw`bxAp&cdf712Zp*Oh;wWd4 zL@G+~@p|-E@L3rHWa7VqkN1bAO0yx9e12Zp!g@5ZJ3#^c_GYJ0VU?g{m4v^I`b0#| zj`mplK_KW%x0ocB#8Zs><2=xrNEcscdr0N&b?TDzL-S>8*Et%ag<#32-%C-RgaMA) zGQMgUE7ap;5uTRd_p{TgYT$+jw)|S~d4L*gM4H+WRVX@5cOH^YmgZ>7UbiJItz_Ki zo`<1p`C2W5S@P(fSnw0G8*dBQ3*O8NmP-lH`$*tHh6pZHi8VkJIslk0fUZ*+z-s}R z$Qu48W5^wpF?-`DP$OX_&#|H#6aU|i##xDtA`$gF`AE?QO6yJ`q19zFTWOFUSrB)} zLwB*qdR|{d)sv?qCzjefu$CX1J`+)SbfjlpcXvs`V5tUffwAWyL%A7Q7!@znTN_<< z^yDq(!$Uu%iF^2g20O`d>kL|qK(<%DC@GW zY>~5#Bh)9GVbNFfqH2Pn^Up{k`YWK3Bs|pb=Icb3<2?3v$rW@OTgHMEwQ1& zQFj!_qp5~SdN@^~5i-FbbWM+)`)ML8I^NM)uxcWDoQa-QUUoLpuDs(jP7nx^T=;57 zzw^y1b%HmbYt~|#Dr~Vbn5#9PDB7`@Zc&;{&=p2Utw{bB+gmH$H{J8v7Qs9_$@%RP z_m#IvvmN$Ue5yx&c`x+9J&3q&EazEPpXz#98})HuSAsc|dt6APkq>DT1gZ@L=@rkV ztA&RTcFKc+CWHxkG9FpEFRWPL4&nR#LiWbaP(f4kg^?BNA#|EwpigWmNt*|e+}6v# zNd=6Ogc`ke*n~TUG#xzZE*Tu2Ga&`egq?V~k;}UxM`9tb70$NaY7Wj-%=1I)YX%sQ z-!?)&iGe*d%p9C3hn()9Y4-eE14gxTX5F?@e|wDTkx0J}bUM~$1I%#jwutjrpE~y) z0StBz@;hA`gT@hdiL#*C>Om9AxZ&;Dko>DLBb;E64chDtPdhb}*vx}PqtVYZr~Nid zvYAk&uE%Xc*?n7Tz){UyNUS1BN+)*cRf+mlrBG8QwHsoWh0Sc!IzmN%3 zxOpF{n(G1Xtr?cI?@D>4F+|I&x!Z)u9IB5)FfI{{v--XhF`H+v$;LJ19DI$ZC8*7y z5P}bT@IzPKvGY|@x@<-Em*A)lia#Hux?kC7FNe(3itfm!tre6!UH@fewKfrS;FQ?e z7&{?VrCKOyfdlr+ug}!XuMLj(+~=&hh}y)hwF0~qBgSbze1bbVx%!?1O&>S3sEHd2 ziGTn-+Jw1lck@@65;HgN+5;fv8`sROf}^d+(QH zXHoWqMX=24k(IR;V-Z|Vx?Hpzs2r707Ol{I( z+w}UlBuc{jtL8H_l`4;+)ocJBja(1m_ZtS4mKS9Hwh#;pdewFC+i@;LSJ4@Rw4rlw z1dOS=LwDt3Tj@I!O~MwLw3*s;&FGcNfI-HzDbQsF<5~v%ArBOb3>t%xnRES07kQxh z-VtNS1~(r%jTsH?(>r@NNA%s^vEcoq`SY<2(iHCY1^==87PmNopxc75xvPfx13 zzJ0V2cC0A8F= zeb15gMww*!oX;G}*`okwX4BjDRVZdC!lvWJ;-ZMPTfwk{lVbL}= zK>KoRAQln=!en^xg0cPivmiIPyq&Jlh3OV!p9}4_SUW!KWAy1>-yX|RoRi~=p962$ zB+HLHT;+G*J#P+iT`<8s<80~N{ifMV%pKAh@;^*#yK~$X8t?b(_FC~q-W?Zt7Uv;p z+{xYh4~g}epWV(cd>|H|6TIJUmT$T$3#sst@*oC zv4)Ftc~mD+NYsmCpp)qD4J4yKuRT#F2iAYe+xlIHgJW|_fVd$6)GBgsu@Kz^P>^ZZ zo8orlwZSXzT7`6u@u(`rLV7>a+l_CV2oG9K4*8ADR!&Uy>L#y8I%b*Yp?hTHX~R23 z{NEA1UDA`?g1d_}{20lmulm(7SSzDp=1i}~_?rd$*KlSdOC-Rt4@Wd4FKb>=T0W2k zv0f9U7He${(vK2<4H}V_4PUVBtWw|Hp?qHg&ZavSAisAuR@u#+ z6qWAk^Z)32>!>IjcWYP?L_kGakZzD}kO4tD9lEF3$`g;F3U1&GaCmR<)K)wZ4c4XgTL`Q@T z5ivMV38t&*$z?|jHq4&<4oQb^g+NwMB({qt45lQn7bt$CxvO1}3i2V=EXIlZ9-XHRyYE#7=- z+aQlOwmao~lo91*mou7S{1J4?`E_%1=%u1FVv2uSYUicZMqc9tLx)t7k%(n-V477~ zv33iDBzG`b;Go=+eK;s;Wl5CocvZQp1Kjt%CTr}=r5$}s0{c@9?%Q(B;fLnjw!i#} z!-H=&aGkN^g^-8GCJLVrfZ|WUJMMcEFu1wxSnMxa-%ifX-e(2&lBxFqdN=%TFq-<7 zx}6*}4HNl^a~3d~oF%b}n3b9j)-7@YuFX6&{{nls#%E0m66}ETUH=!7$)bvm~0&5Uu51&&wh+d(}Q=~*dQ;=glj-J~y0 zTF{D&FZ<&uabdGABa`354Ty=Q8)0qabmK1>v@uE8W<6 zQU8{{FHBIRLS&*xBo-WCH%rDdE?=nE4$LV7dZ&zNObd@#!!EZi2>{aKMSChPv|G zrMqBCCi#91mSdxTESvV*0!{Yk_ipZNjPkpjhE(SQ??-y*^LU@5><|vikoQJKIH#W} z3Diw*hS8$Cuw?h~ejAex23@U}PKUB-?qby2MlcuFWp>-x>V!_Z?C(kndF-n&9wvi4 zm_i3sS&Glrnd7O^yIG5-RZuD7Zd(>{y-hd1`Zl>U)$4oJ!K7Kt z>u_>GWocM)LGa{?ZG^W%sq|c66V>@e2WS^6bxMBg$26s$G)m+sg^lpWX!KHguJa9?E1;>ieV^^gFZzPq zvkH%T@x69&JqfbvuGjIvd=uN8?F&w{WhW6b3C*fA?|O!trcr@)3!Ix#`gz18RN9LgqdH=krj+ z)7qTc4L%#4AXhygZh`-kSs<|r-}nv(;w<;~iH-)guYVQUZt_SXMu+_zARKkboC9uh zk4>DHbzWv!-d}gk84|@i#;8U>0;f*bI#wjU0fd`buQ=eEcBfkl;VjZ=j9>3P)px^# zs!^=ap1F@G?ovUgh)K!F+K)Y^)c;IBD>-CH~T?+F3G3eMTOHOfV;|fXtMs4 z_@3aDm9z3^&VG`DF!cvEzk|m@@(uzP(t*p_&=5UvZe6&2x8L0F6)>66-?EXektTZ*zdjQKI;es4i%VAhoDF= zEa$BM%~<${DvjR_tghNjXDn@rSujB6_18A)Un8t%?EoCKl>>mtfJ9)aWfUu*!ASjs zeLQ_kB&0{SQ9XaOm4H?25AbnbuQhv~oTMvHnZVxRFB_Em2ruD!kc2UxOPt8zdd1tm zplGwA5a>gF4C;xPk_>vjC{@+YR69td7;Wh4gWt%9e!(msOjq{xdQGqPrr@F`I@d~G~}zfI^)UZALrQh)}`7#YJm^E8gMVd@BS~E6Azyk zxqR&Zke|PQ`ggPXuc`-#&y#0y`y~FOKCfv4UK?u!fJ{80qe!!nxNHLs@h_KA-3qag z<9BPe5~!&$04)yq{;k^c+j$(tUbm40dUnSAlFG@95MfgwowmnbX(Xw9=;x~z@nSW! zX{|EFOh}K^(W>Od^|}G&{E$~0Z?S7Fw*Qb6CVEMUl=MDc0Exx18(`>4m?*pK zdqlJQ9H5G^q!7x2bGl_DUuKOAr{DRRgaz+rfE+;YcELkFqo90vtKzD5XP6)PiYG-7 z=-UU{o{U_vGJyB)p4hn0XQ2*sQ(Ddj1g$qfrUm3iGFE678~_VqDj)5H~vKx7WNFR zhQJGEAVRHWfQ%eIgpkrm`7~BVFH_1W`gV8HR8Gw#9$Cn7 z-Y-9aOjHFyK^v$UnFBkZ+j#W#d}jR)(sxuDVx?p`=R0L%AN%;@{mZ~vGCNRJLi#PD&-OEl z+l@FY4Ft6zcu^@p1e$3wVzIQegL$$~q*S_ih8Nl8q6DiqJRoUEX3H!ek^j0!{qbJ7{_XNnXjVKo`kVSr-qTZucp9Q~p z!=@gQ9;G)Rlr z*VXi$pJxhgk#AMh^P~&x@bfy&=D%p@0Fo7ky3UfIrwA zy6KlNITv2tY0e1JjPxjLaaiOB;mdj^_R&=X%S%tr03NZ<5udR<%MT)rv83;!z6rlO zJc_}`e{UBayGgUakMX-J$`n=bwG3Ic_qEV*;!1NIFgHba{{LWFjKJj|h|<)*m=>EG zlI`%1Jy}>Ud@f*%-RD?d26XoA@;u%GP&V_p9tj35! zT;npQQfcKC0$9`UyZD_X-hNc5%WQ+ecs{-WF|XzG1p&C_KtKYzi;na5(VQ<8$p;ki z;hMT0qj?&ecbbZvkzv6&=#g=Zq+e%p=>rziPcAo!g+P#RQrM|g+stSTA^7rnpxX0U zl1Vx~jigA_R9qW85z`~3pi1{Bt_;M7iC&AtW5c$iV^1lCh}|2GHgPtESM z=coCPdqg$jVV_jXmYOvn1N>FATq~Jy6mgg>oKPWS%r_##*0p{i9T~xQQ}PG>r*%04qt`Uhpp}0sODhRkc6(+{-(z z<(91xmKC!7$*pZ!vLqrOgrgyCg8(@~jmbk_eyhE5ZM=o8v~*fc=CITz7{@E#MaE7= zthRG1jEO~RzjPh5mf@^$t~AD>*3Dpliq5y0QQI<>{(KYMZSo}y*Cy0InGP#4K}}z7 z`)KTdItE37OxfUu{?hQd++h&Bbefc!m>nf^^E50 z<@&bk5a8;?0C*HF0F^XxC=$ug0h(SwD|4W(=kwq#iR@kPE8w*D7Rh749SQ;Vn6k_l z|KTy*{FRIH2qX7JBw>q9jb<_0?xG|*CKh6HtHN@&X<7wPeBnSa6Q8}#wfC_#E@h}9 zCNHT^;EjF-G+K~JuSFj_$AT_*b?+#&Qk!J&xcAwD$hsAD<{gwO+ojSnO}?++ zRmc`f2mk5ApgQ(~EDEH&0U4BY$6#wYEJREhjB0g&xIusZ^c7Xj*X zses;uKdU)r0TTkXFDO2hbze(1)zN_^8&fT4s=DIOgb(6(!(pUKsdPid!h&M|$@-$k zqX(auDcj&4hWAKgCnL|1ZjpbDowiVb-IL2lqhf7vVcI7H5MgR&P@D|liyIU;`)p_ZX8mj+H@F!wzfrmo?!kqU znyxRzHGQQZg4)1>ajC}XpnH$Qb}6z3pOa?nOgKb0Q4(a&F4@vuMn`4$=CkunD~YqN zCzDEb7sr&JAG|?R9W^m4 z0korhz?;`^7T{=pmjlFHaY6q$S0kO>xD!x(Er0~v0u1}swW$GnE!MUy1*EUrFzC%V zSQje)S9_C<#sEvniMziju>w39{#WSO=O$H@6;&JsNwl(xO^L(&CS5kZiXUp**_Wwm zo4_o|{*X@KLTB+RIv6E)WsAeg0*TGr_m(#{ekU7+)jI77g^>$Lb)Lfr8BX!#{gn%n zm*gV6w&^dloaJ!$btd8m$om>n6e$t-OvV6NnxNbbN5B?+4mV@a?q8Sj_ zY;*uM%mUCuw7eX!Q401xaQ>$f+4sNf0MxubY~o|c zFyc~asmmbA1#pD(>a}*0TmpfFHP#p?J$*OcSqXnndYqS^(*zb7)+b0(5@Z4s4<7teCH$yymLHDVoTOat!^|*Z^V0}2cQ(DERYnaeo>}t zgD0)iH?7PTu51Q?)3IsDRyUGEUyj(A6416vKIh6pnShSbZ_Rr&ih8f&dtdD+TOSXb ztz0}-jhCsUP1Sh<40hlM<4D`rtQQKFwVm<;zFnY^ID%%xn^B$u!Dxt=XUYkR@;)L| zF3eo=G{XBd5ae@OuNMqrPKnD20_DSSp{t)PP$?D!_E{o=dr#79^Q)Mhu{p(ILf=Yc z_Y%2}S)c+_fj`&U zcsXG9De(mKihL`3inaWodQ|iu%xQ=OBZs5a*V`4DJS_t}c>y8At^I>7LqBlA5WTE& zfYjvHT=|X9$Fz}e4N$L<7CmeuZ{ksk-RZ@r!@c2N4 ztu?YzzNo7#e10W)oL9Z5I<^T)o;7Xcyq=D6$1v2AukEb+rjXj=37oFs5)A2Rjb*Q(4Q^ffUk-#e9JGyM1aK~r<5TuTppaN8_WJf(u1{C5vVzCZ~rw> z(7OBIHhC70k<0uD{J*svV+u$u2T}^E@}F8n_MhIbN3(=)aZwV^hT|XKuPFoSex_&J zUCox(@$!eg&+9qF9yIrz{Gi)Nmti|=s&*=`vwgysw_p?HCKreNzRwBi9~%WdMyQR} zmq@tjPpm|tI{M?2q=Xy990yTXn+KA9fPv%1Xkv(yipG#y?xvObQw=$y9f(kF-lAy` zGaEC0V@{7Vw&3^_b1A09_gPbdPb${;eDeAuy#oAf{X4mAm=c)rTWPoj0E@sKe#yNXcf^x`}@8Ex5Ha=NJud9; z<#Pn@njL^S|1AF34#Qadm$CgnY#OqWv*{)5J{ajij5R4kD@S=V(czp$ZlV`L%zh?7 zQX@gyR9WA_%&PLDPEzW?+Hjuy^+xPaA@FvBTI(d*(|EUHH9cATLP%vuehW7$m)Vz% zwLzLd!(7S_@+jMlugSFNE_NqUhb^1Qi>EIn!M|k$l=5jW)d0;P1j5$TK{tO`)Efmg zS)uc=oET>-#d=MLphYZ+R_g)Oh03+qYrgk8--;QR#zYgErm zY1sL@M41dWg(yzW=?yW?ZN2El%z|hLu!&A8W!|>~BK+*o67Ti2?cAdKh`_sN z;d9doUWcmu!(@m#y%3}Wft_f0Q^R|TW;F01ek6W>*L}A@U2aaJ9EPhD&Y7S6BnlX& zsmW$LVEj%36jT~>I5K~|bC8DZy-n!B`Ya3E547UsZ;ME zP8G1X`;3iOnE72*#XM+!2b5SqQ_qt<+Y;v81`;27MYB&VX4gKP@No5g{rXnf!X*zu z{dzKo6!;ZJCwVF_V^&5@#hXZZFw|8OM|z19>lb+eFU5xX9y|J4W1=wllx%D@&kt0T z%Mgrjh6ZBxs;)U_RL@CpjD2flMr3c?l$3vkSnzzbH|61E!2>MqcJz*LgY3@c+o!iH zBMcn-Z=%YjW=|~NcvC)jFcWavTmwu!_(zq4!lxyHo3NnGx%jvgX}8&Nee78!C}MAF z>mBe%W@6<=RVBBz4eCD0Ci6v_ytou4x(R|!^5;rDwX}H{aYQ)d zbScVbznUM|Iwz)yZgThQ%(dJ1B#m-7=95jCJPS2jOQrpx#f{yZl<979~5x7oPB_ngDKJ3SaLtn>$=|NM-Rx!Fmfj<(< zsbYU|rof4j_DnvosN2h{+^s$Yf>L6Qe-=u!8I-;;seDquvDKQ|7*_0gzzeou8~FS) zN0j~cRMXY005+dUo4_fXW44)KU4SN{OWY`Z-Zv=uoh1l5DVZF{;EcuZ5M3jU^(-~I zCLoLZkxc2eOKSS>rrzmVZj+>RmPen%2+nu89((M@oQIE;dD1vN7c_>so8!+r>7Hxv zg?IrTT=9ta@6|A%(Ret5pT83jYKy^MFGR2Tc~#?ahp@7Zx~m3gffi^g$d&`Ez|q6vuS_ct1+05ECU>9q}58(H+Cr6leJv*W2LzUGM%i6#I8rVu@I`j2_T~-sRr%lgQvWwuylL+| zfdW$%j!YI`d5QaMA)E&zKTiZc975_&?y$#~ktQEANphnnVdxYcEK09sOT%tbgP4q! z<<>c#rIV+{7ZIGD1{c%h$h1&e3<8eGGj+#vhrf5W!UyLqo@QV{Gq-|_MKm7#c{izA z*RL`ostPAKo)p$$0a#=F8-1wk+6fpjWMn+#ZpTiOSD`9YHR;h-`xKc=j+)ZrMi+ z%cY*WLtzB1lMPCwX2lytKcxdY4VezqH?y1G-k9!;C1RfRn!cbwUngr^nyBDE< zUQ_yBYqUnk80Jf>8N(yWxH%4;m;dVdniohBj<5z#NP^D=k!S&I3*}8@IXz_XK4=U5 zfdXEwZ!fTHDz4e4dTypBFoF&`x(@5@p|fQHS1_jZ(fjTVjL*q2(a z1s|6WTrU9)d*&X0zNy|a6-86@PFWfQq>yKgZoP zPhV*M;@h?7Ay?tsR3u~i-R!`>Xc`e-RDH^K6oa^Ld>jhQrIq8C(+oQL+8H@E;6Xu+ z0iIH(ME|zQo^e!AGQY|qUQQ9>V=<6al225k4i#Yh^3!%s$`*Zo>79fKT7SSPK>@Ev zj_)Op9)z?17Lm$(f@-X6XsoP0aYoTl7ml<PS*f9Ea|kr~^$Lue(J@ z-}~#oRd_^ff8iAPwULWyOY$ph0e4%=GLMCJH$V6*2T1`N09+*?zZ)1iEpikNzD(AL zM0t5BitXW-D~;Rx@ocp$n^X#KMM3HhUQXES&7<0z{N63RW`tAX!dxKKE|dI?uzTx* zeMJ)4)Z!DC333gux7uWBS=#J=JLA&Q)G68XRf>0`GALg}7)#Lj-bc)_jIW!Q6g&Z` zXTq6H2HnkDU7rSFd@n*#r9Djewh1b;gd}U1`8xi@CbizJ@qg8cgRmMjHCcvB2$nvQ zw|xBG1rZ=S=k+y-#(W=Z&5yf(a>_CT?_7WihSU9W;oOR~zfIuCNykM=cooYzQEIf) z+?pMR+57YE5p*>!uNmU;g-o*q2VHV#4s(orWo?^(r!6@0F<^Y^Dl%RH9Tc8(AADFy z1GIT5HE9=hX;*b=x6fpP_F9M_Frv%O|8S}1UQ7h zo*wn1Q)G9N3;HpoAfu@5#95ci(60~-!3~O}ls;F;kum3}-{m?k)n&?edgB4utK1si z1&SQi7u879auVLYI374+{!Ifp^YhV`Ai)Md-*R_TiSvH+jg9+bB){zU+F&er>FYOZ$$L%gC z`Mko@E+`G@RCI-fj=AU-{M2`9s_E`&+wQ^NS+iELtJ@>AP2zVb>~HIp)p#1{-jCOK zo$}l9(}%vq%5*hb<;Ey}MX zYjlWzb8kXl3E9%n$C?c(1U{01?)EIV4)IEi#@)$Nr?-Hdjekyw6ng&LA{F=unsZv{ zukctPe<}h1vM*ko*|B#JoUL*u&0&-(%8dffdXgZOsi$zR{2vTTNq}Y9$G(9SyLQmm zOTQWhO(S%>kOo$M^7qn&g|&D z1N7^>uc*gL9a7!}bTR1qVAK7fMHO+DtMEL)@N#yOYaz8z-dKz+=BoN!6JRbI2+j9e zKA~8KvzmUKQOrc_(yJ$ys#x4=nieD_ymmWLbi7~kw3^@Oqs4A?0X)ugRVO_QQqSz8 z$?RJf<8wuOB>IjvrgZF1f3!SPimI*{axavu^y#@{<{W!E>+vm&%1o{-M?8@)F27s* zJ@h`O$*|%QrL0NX*Auq|sPdB*YQFK1iAU9AzPVQy)v0+vr2_)X7lo1mbO@vJn)P2X zt_u`C4R|vhtzWQ8Cf#p~ zl%_pCJowV_BIMYt#re`h&C2M!>vI-&>wv@oJZCAup;(f2I+!hmQDMx*ycuR! zm)%8}Gv(^Rnu&mfMdf(MeChYS++kLDm1f|gvwFFvE>!)qVk8c@8`{aA?==_R0SkE3 z4bF7^fr$b&aGO?qg!6X*7Z@|-nf1J9b?ZW|vgPO!pqU3%+C8E{TR~o4tre-c($p~l zbb(6Nnf;bbzAW3_=JJA}^j%xVd!+zGlly~PaZ@w71Q#KEw?{FQg78gV-!0Wk@T&D> zAR?kE%$ve@*cqcQ{Gzm8>aLs9U#OK>S!!DZRBbgA_{QCOx5j8W!D$|UT6km`y-2%}1SUdKSciPx~agFe3S>ow2zOyFg#CY@JDK z83sm%Bx{+Nxh*Jr{bv@WTS4`^x(2ci^b^3L*gT6Hb{G`OPHDQiD(WPxG z%gLVx z8126CdANqWdEg~lsamq|n`Lqa^vqm&8r;~Zok1n>gLz5E`6H3Ua%M7h9%;QP(`@G7 zVK|7}M@^?u>njhp7B#r0C6$TG+Q1Kd~q(DXeDl&R+%jmg9G5V0@CZ zkp!JjN|_(4E(^ZBb21p6_c%HT(wfXqA5;ffDzOf|!UDK0F@XR;_h2Swd!gR38DSv= zOmPt8^tZ%d@LLafnkPB_DTP#OzLoDKw|+$>w#PE zJPw4YxNpDAag}SWRo&R!YQ7e{y>j$6qfVN2SkOFL7RtB_#A2#))5F@-!g;~&qv*OS zJ!p>&Rwf$$;2P+CrBu)3mr>1*pMA=#I^J@sNGSPQzx~SEI~{@Qen4GBw#3Bb1XH6> z?Uj*L1tREHq&nNW-4&D;7>A6S@zKPB^lK=avrBPr8DW>!QvVMTi~L%56n;^&Fr3lv z#M%g1UWAhvJ~Q@$ohA#c7Nv$)W0D`4+BjsFC|igUztG6 z;sstHgBs5`CfFMDBL`Cwz(l` zLXnc=tjB;7msXMmMCRPRBM7%`9D)w7ov6gWWhA=IDXHni{~5CkS5T$epF-&gaUXg` zarYqRY)Vz}wvI8BGKVbhAukS8j;OX%pq{2Ck>JhYc$~Ae6>)7i+t-C>rB)r7PIirQ zd5a>46J|GI+VMfEQZhO5rsOUki&1E+!R$t`hqu!Oi> z>I9mq^wyE1=+~86ARG$#Pms@^f*s` zl34JqoZ{(lT9oUnbRaK&DL5@Iy1BL%X(CrF6=~!rW6|?bkfxL>@i%iuzHv#oycHfJq`tD=q zuH7^2rd#D*!!3f4%Y)Pz9Pj=}oGY_P33}?|gde{cB4~p(>w=&1-M#^ythG~I#Gwuy zPI$a;a2v>}-Mbx>mkWwwz<+YK-5Uz<`-mDL8%3_&KO%ag{e#q0$1NR)em#{2W7xR5 zY^ulb<)+A&M~8mz#DutV`?}DV!N^S49&3WFkF_EOeuYdI8E!Ch*altZ{=PRpc`UQ2KweVLk<%wLdxKwS?TwQ!J=bG@^ll<-L#Z z#aSOpnVf041PFIVe>B7I{K@?6aD?a!q0<*#eB6;C6Ps>P9HQh0ZUW+uyC%k zfDxb&iT6yVOT$N0-hF7nR;EW&ZYxD}2s?Ha<9^9|=3g#=-?0A_Fmz}yA3R@zZwy`v zG;(fA+^daFo+7mWojUA}r+*t3w1bRR1de;7Ug`s71bn_f^A6#4Nppsye|>%sD*6q` zl%JfGf8AyyrhvhsZs+rijWO_{KTV;h!|fl>JRnOsrMEH|jiO0lpxee-OsY;u%nF;v z2!RNYY0yooH0=mOUi0&9MSD@pbGfmwvyE`ypKZ9#h~7Tw<(5~AfaC{)>|S1U6^5L} zPPnNJeZ%7y#p!35=xOo^#gIDerVSdh240$5A9BaJJfz2D$mFWPEZX~qE&{qtQ%frq zHp_iUQ`_R~j!9Hp6K!xg8DLe!xEUr!_BG%<-b&zWIx#lhuYku{+39w0BNsrqS8g$W z4Zm6}o-WWWv$4v-lwprg0&Kc=du@$;KGu5b!6#6d}l)PK6>J1g$Mf#SHYDs8_P(7 zKON+s$FNW3_RZDC-DcGO$Ksf^?z>VTszCgZgYARHy!7K)XGECWOEB=iH;)1#Rm4n3 zPiL%Qh0e!andxVtblb9PPTJgIv2FaSY}*OZKLWT+X>{xHv?Jf&?XWjVb^3Tl&tKl{ zsMHEM4F#!LtR&Mh#umQGw~*vOxA(*7A@DuVny^~B)SQ}zOF7%m;tnZ`XGIa_cTMr@ zEk?;G&`n*l&>b#~|0!nh;n9>*h{7wfi>wJ4qS}uLUVu2keucjFHmJL%srY6EN@^*2 zo{|ppTK-1%M-^yGQ-87E&tE6Tmf>=%Kt+CViuTXP${l#r1Yk7FU4SNGQVi(gjl`Ox zc#fYs*D@u9OhX`Ay){m60A#bFk8P5VS`KEn7xfZBbKtcZFgQGOZYT?7n`<4GqNy_+*>Q1e>fYHxLwrZB|$kn{RI7q zWPD)p5y=O`w{mh8{S~&AuT?ak-ovq;^^ptybhVhg6F$*RO>R_D6db%=u1pa@ z&dV8-^^VwchyaQbLnvZNKnnPvo-dF><4-bY6nGx99xh}g06z6=U?mA#M1frx`jop_ z-{@7!jVjSAR>0|D3P&$UsHHHH*VUbZfogk+f=+pAxKwP{aW~`=&Cr5qI`!m0&P+Dw zST)((ElnhHXBr{dOhvHpvHCY*ruibux)q)i4cIVT4K866$*0dm^gCPVO95n0Vi^i) zO}|=|ph@sNy>%8bejJrSBd4Tk!pua}7@+$Onwn7ykz9}s4L<2#o6GM4Il;rbK)L`l zCuFW6aA$jv6@^}0GO?PtHDUv-9=W%jtGwKgA8~7Bja&TSeO4gDlV}weW@LJ-$AQPs zGvvAMrY*gkcTA{*Mq^9!kRXf5At!%AVwy?8EY%{c0^zRz&ALDzDmhhQWJI|CgZW*a zP&$kYOCqTu3uG}^)VZ#DqOXr})KXh*J{sY>%iS^m?e5@-x+Ja*CR^^UgUjt$FyVqu zM#eqxrYw)vHSWeHAkcnlzFOB%-y7?zDUZ|~%O+nxjabWT7%)CQ2u1%pAfV*u3Rlm1 zn|jZ)Qv;~kuYpY5GvV_ts=hnEEO~0`APv5+Rr3HyxYhM4kdRMxG)mz`B(Ax98+`Eo zP#e+-El#VQ>v!zd2>oLknUVQ+l_mlYi;mmPs7*p0H9d~O33Y<@pptbI*Dm;v^q&2*@sr zLo;IiYGIY){=D4vB1n_t8u%&7-)&_P0Hd#j|IJiXpeF`0lDr5@KWuBBJ*26D z1Vd<5s0qOm+%)Or-BJmq-;3sg#8lGlf}$6vH9>T=tKCuJ3M@JdwCMr%C6 z^OZ7pUu&FJ_!vRZSJCGGSye>Oa)hPC7T=9pGI4jJajUla4BJmDq##>pBuB? z<`&hF!xOanq4t4-Fk4{_>w5QqMzxUupQ&65GfE@ZJ%Pv~I#%=BX@Ox%8lw4rZw5*Q zRK=Ge+t~I8kj1JiY)2sS+^)-qD31YK!neT135dVd!d>qsP&D&eeUQszEzn|~;qZY} zWm@p=of9QMrA%~YI45?wxdFOY8!^C;Z#d3Y0oq7aif{PQxe>!)nCaoO2$_bCnX}lN zDewe{DA)i*2d4xB->WP)tdD%+_alZCEi9(^!xZ=0KdGowWftEhIGDK#kS={JHkr z@M+mGm?=-g>6~=4_ZR5F%ZctVh;QJ-3=0`u@kTJ&@=IGY9aAGd4n_bjf_&7Rd+b6U zc-wC!)}=cl=4bNkXwZ+kKzGy=V%i#^L?y}^O#}}U_^!Q!Ck)KrcwO+!eP~^CJ!%h3 z2LuXlfK7Yn;JOtCY}nz$Q45~%dErLCN+5J^NRj)I5xVLv+FQC!!4HQ*EI{j?TtbFW z7Q?En{?e0Af0TwJGFKYSF^O#(+=7O{+*=`Uj3GgvN>nymmzcuUhx=Tez;3?y+;WsjC{Ea!m`~n@dHu%!S82hK}^&-#utFZ9QrF#bMW+6LQqmvXzFTHH$)q2=oypGJ)1x}ksT)J@tW1ZZGVi^39RGNVQM8zm9rL@!QVAX* z*&x<_hTSL?(Hg^*PUyJxQh0Yc+UBB9RQBv$EA&RUHC8n!?q=n;*Fr`o(bj4nUETH` zkz^xY{Jzaie z=1bxeP@P@+DNhSrD%bQrbhCl!Lma`zdzwD5B+ZljcF=U;i8%3){8vy@uMg~bJ`WLb z7tyvAGp6|&U&my$%1eLn7WL_*wygw6z41|2p9>TIquNfueyLL<-qc^bNvq430y5DP zT3}dQj3&n{u-r?r*69mL_Sq>vn9D8z+WD`{ygSf6a9z(x+HVLaN7m7+F_)L7f2VSQ zRQTYHU*k1fvG0YU%iFsUYh)h7{_CLH=g1%VC4N)`WT^&*op?~k{-Ig}kaKGjQclX1 z89wc@o~BE`BMHzB!Ku~&ss4{BcKDBid6#GMNm7K*$+EIk&ndd_Qnr7$`8ko%RuGcc zemm?-5rSi2debu>6Te%GlEWg?{j6NoC-E7B8?S10dN%~RZ7Vj~vfYCTu5lX%`ai3% zGPaX)FitzDkMkXujk3D}o*hlr;EG`lY{0N0slW6%yiLa?0ul;4VpXGA&s*rVFpyIp zP9CqY@QS5zQnE&6iFuKOJM%R3MXu1d5IKUrHJwv3A;w^xQEm=uYV+ykCVur93CrVc zI^`FcyE-cUHsEYBkw;0I{(~sGHDOnHup}74&P6)e+5&ohk;fuI<;6Jj?Q*T^sV&9F zH%Z*cc*SimAVd+;shO?Hq(x{V0!YoK`{Tdq8mj8QU4cA`J$OJE2(ftPc_KnsBBPL$ z%OEd48YTH&t5A0|12t*2x;-5ZxN}~pfuYRC%9Ts<;L~*Ll}XWtKT~I+R&x5Oa61j zCVe*=e!)b}n>0~571Fe}P2^H_&@Akg=-@T6=GxsZAVmgr?k?b&9(q=7pg4H9DB~@G zd|TDjW8}UVZ_Lc84Ah&yrSa2R9z`=M7`Ta|fwXptq!+9lzD=( z0D&tE*|`)oVzlgj z+UEd`9yfZQ^Gv3?)0VhMF)yi116`4d=vmSZ@0ipL)vL=+JX0peeY+(2*UyiKqqjo1 zaG)B!$kuiBCh$rdKaDYOTSc31!n{JuZbpvAstEQZWBo}fz0h}}wa&s7Emt#|i^8Jk zTSKX&8H4j@#r9?SK!(}Tk2PN}_#E`RE-s$Aox**+u24Gwz{(;T1rJEca%qC_6U5yG zIl!IJMXr($UVJ!RLj%&%ufa}2DVYEB3YQAXr!eYbCEUu3XE7?O+L?Z24BL4vYGVrc}g`|gOl zEmV6Ci+A4KrpU|0Ll>@nJRqW$4I5;LUM=Sp`ieL@$#iCez|??}g5=*pQg}E+HJhVP za&ZUm6g=V`@2+WnM!+f%elLQ5N$B zTsHNood!v@ry2a#mi$fu%K^2u=QFFvHB~Af_q^Yzmkc*{`Xt1u4ZbW{VTjv|SqZW0 zLq3wd^WM-+IJ>XkK5|N$_a-t0*oj7u#gH~?@l^Q~dmi)mVs%U7wj4#kZ@-Mm-59)I zEwS?4LXm$o^T0_{k%zwUnYScpZ@siJoX-I7ZiW0eoxR<4xLE!ihmu(YZl3UiurUf4Y`Ryif9r^=pwxNPaS zwpR{L#^uklx`ZxH{a`G`%wcEivz&uGOPFn^im8r$&}*NFO=GIWBx$reoNBpd_uunJKwCOx z?8{edGhRL0s|-3kX-!T3v2fcjZ#5x&rvy}iw~6c6KB9Z!8#>wsidV>S-e9pAISf3` zO+QwXc2F0cra~qxrPI|aHPG!7o`XZ<`Q+e!2Ni)36!)@R>23^W_*aR9lr?$lAffAJ z$3gPjsSt-p21U)ALC!aw>_BXkn`X88 z!&>I)V{;E;UHa{aW7i-ED#Tt1D@a9T-2I^3!Z#)L+>I}dW;Rm!i6kCIPP8u@>&E0G z*-uV4wHc@TU-?J&d$V8j-1IDSv6AZ=okuL`&+G9qkpwpPef$->SZt(0_}j1EeS)Ix z*UQ(a@89Q4@(rq&1t?|vab_TXN@p{bD4&ws&J=cm{ts7g85CEyv<>GD#2|(y1PcuA z76>vB+(QO;8{9R(V1ZzRyE6oLcTa#IgF6fs+}-`# zUZ&ZyjC~K8cy9Se;e+|mn$^cuXFq+AY86{3k!@OkO1!b;7(?QJasmq#npB3&q()vg zWUpDwrL*i1jGNj!8obw

8=Eb>1_$ly6DO6;M)qpQS`hCNZ_nt8Amr31*BADaKi4 zl;yS1l681buUy5+YeZGT8jT9ob4{(+dEr}Dcbj;?;UaZq0TE$Nc8;>*yQONnLN!@j z18d}4yjjbi|6egp?oW%$y@MpUxFZJ)#8RcG_o0B@9!M@Z@6iGeD1c4~fWraWWm0wD zOvQ0A1H^_p>G}4P#MQtCD=3IFHYoqSkruLfOe9 zG(E}B&x}oUzYfslSTeSpUu!wGlazule#wQ6AkExZfEnWl;YNGS;1m8u?A_=lpVwdD}QCMjR|-r6>J5AC_jHDfeDg!%IeWGlnF4l(aLWz&@R3>x5Bds=uG5yWQ>PBBKPd&G~ z0}te1^cuZ`5;ej&FsrbYk&Lv^Fj$c)bml34RPbCBJUL2AVvJC{RMOy;1t&~yoO$y| zOl;TIC`HYmVW2~7w>u&b1x*@2MN%>dn_U^%AOE>pU;mY48tUiRhnnSGmJMffe@Sf- z;}G7N-sHsFKlX9_Lp%*H70rvjfh5mBlIRnnk{F(VX7%xKGqCWTKfA{m%@2^G_1o*wn60uj#=Y+z>o+yF^ItMh#}B5lhfgsCe${J zUcpK@-qDz(+tKQ7dc#=fx-x19xOp(9&U)CrT5mo}m6ZopW2m8Xb(0gQ%%{j5H%i2< zRAj3K*Ug7E=30b4WKVcPwKrHTTm>#IQo6-bi2-=E-$r~scIRe^(u`3eb;N7Bf-ar; z_X3>y4Y5iNxZ1l-UpPJ4=jhBDe1;o)Gk|m0*nePf=gAz^GN6YChciInazfI!H181$ z_#w`53|(Fd<2zHIv|k!a?=jkQY`Hy_?&Z7;mx3wjrE# zSaUpHc0%L;ux*w&z(20w#=i&7F>L@<)XRH^pMJkmZ=3-ja#iUQ3n-5dtG;?ip7iL_ zX&RehX*rN$gCdZTcqbH(cnGA~2A&7P6gybIv)vJrp-o!|9Q0&VR+o=kSizXL%q^kN zwN83DeU}Bzo5TG6V}{es{s>VzF_>(nZh|&qsvS#%rvDjpvRXXZK$rQ4;vi20ro77W zyd8^S6^Yj}-D^)>J7B4<;DU1ZKH!9wPD^2+4gA!KS$69tyZn6jie||Ab~bJky@bLH z#*Znyk1s>mE!T3arao6Q!K+&6Zi|(i+8;5l^`^L8s&u8P%dMDv^Ld{u!9~n!m65ja zUXusj&RY3IP<-m?e8_fpl~)y5Drmkbjy|ZV#uiq2ar4`l>cnj8Vook}#8-*d57_b# z2E)u>YO3uC%$)q(0pNST-+lmer~fww$PSlc)e-$$Vw1VARzx^2)IpE$(aJyiUYF5` z`&cS-c4^o>)2V48u*@{dpM9$7xXZkZ6GMT+M%d2{D3b~f6In6=qDQ(4c44k9_#jAg zxHV#89ra4{P3B47uix}GSa_{tR$(p&VcbIo8P+~QW($K5<=go06}G_&Uk^Lv@H*Jr z5ez(%Y-Iu&Vh4ImO<^|j9q#RZu#@F{0Li|dDaM~D%~H1}sd7xxf?$NtfP5R^Q60fE zZ8PM;l)HH?1C6YtT-XDdVaxiay``*tN5AEUr_d%Id(Lt@q+UPeUzqo#8~Lfsj3*Wh zjBJb5U2_pfkKK;b?7+qWuQNym`+`?zJh;ptV{{cZff~PrMz3}ChFQ|W)XzZbv zK08@eVbsEo%%1aN%Ck(n$fkMc*!OdpamQAhvnzaJ{^MroO)>n=Tlq;tB&tv?b5k2~Jc~_-f?EcQ5*0=?DYX_zBBBCA0c}%Wz7;)BqfW;BQJEZQJSIM^N(@ z`0(JZZw52-ps?p9IC$zSb=4Wu`?~B5jJLmpsYWV^f5q6vVb}j%(_zeRNa;cmjp7vI z4hTB9SHMt?+mXf22XUNb|M6n+8P)cb1^&w>RLN5e^i%z1q8Ca+Z*dn~n}fG{PEO5kG>0Y~HS#jy1V_RV#XUS!fn0&x z#s9vTp$|GPE?~+&o41*ITnrp^4|u)I1Qt(St+Uadl;r$x9A*#jDx#n6BM=24ywmb$ zE^tr{@Z;cqAS}MQNWI2mWY+q*-uK$A!N1m*+BVfEm%7R{`N%idAB3{o*=G41lxqw^ z2ggPM4evMoj6$_Fp$D$}~kZ=!(YkfP|gL>9E z8z`b^u!*wB2C_dXPFrg}m&Ac&@6cbgS&6V+UkNqb;wygvRn0~nacr>$YvOo@wQDg3 zwFbB*evx)0j``L_XS`{`+cAOrK?QDF2@vFu3ndI=_{$8YNHr=(E2A51o}}+9{(jjv zrJ_`YHWKTF(J7d~r(B!av>`uqU32qd-aSpuklvB^HmzEs!Tjn*Sqch; zHJ>VDCvVu)wLqlI;(8Z(GqkQ-KjPy<$S9s>&kZD=yTl%0;nc<1#FRd>eBO%)mtgvN z=`>30`N|hVa5dE=HX!g_Twmgawj_t6ugSvxZn&m*(`F7DnmW#=?*Jih+Kj5KK3RG_!v`pVSfIo~&(FDd%2R$>W|B z9FmS-;1!@gs7ILbh*@-0Q^#J?-`Dno9Z8fd;e zn1uZe_-G$^-yfb^3xq%mTU>|Vmvv^>AplxGtPhdX4%K(V0mitV=Du<}0*dbFWS{f( zZbZNreAru9CldTKbcEB@tfFY37^KfjQ2CHINoqwWzR4F-TYYk2=k(OMzSqbdVZ1Wq zCJ9*ls5y2fGFBUBk4X4)bWxoTiL9PIAGgatN z;)(XZh`1sX9vAMKT(h+I& zT)5lO%`{zFN7aufS_^_lWn z1px{%_hJEUzWCF2JQ^0Ji(wp`oNR!r7dZWiNH90*c!!|K*g}lY+gzS-(Bf#kaZLm) zueAjq7H<8x7S6}1G#J%v@Um{V@pjR?@~d8q$;9gIh=~333A&1$E(blc?keu4F$5V? zY3GGT`B+Q$@R(%n$ON{rO__cIS>I%*J!M!Ca$3WmMBM&a4ry8E{$r9J%8T}K4;O<) zXx(DDY9B-=fsj3OsvcB_E@t;x0S@!Hjd9JJVb{TQa;VIY;r?SfhaprMaxE_!dJwjq zZ-J7S-+osmE+5nHe>NGg5-e0PO647#XT47E60GI2p*UczplF)B8boEuVu8$GQW#J3 z46H{(TY*PQ$)Xi?lT@0tXste$RYNP1neUoK%jZW0nbgp2ZPk_M8RsSn*RNWVZb#@= zKQG!+SwPAwMx)L-_DDMGe~h7T&9)b-5$g}eamdPsbJak zl`QpRjnKUNp=147s8i__kS_jJzV+W226+5tiChXJO1~fJ*hqSGzN?C)iJWfv{LE2) z2u3l_DBxWnJPN7+1Gtm7Yq(NO`daCTh_Km66r-whG+x4l4&MT~I7{PG{yb2>STPGu zkvOGxh2Q8vgrrd{j!1#Ywx671<*EG1F|F${VSvB@dK^Q-nkXHRXntL9_h70i}H8#2!IFi2RF_jaAO4v2@3mk^HMK&Fe-_|6QPn+;wa}MtI)JPtM zj_TiXV#qlMzhSOmEGTN>ePtb?qwH)E7o@Ea|3vT?Xfs;-oQvd<|J7r0^D%G4M`YOE zh}fX*=^s@FS55r7jEc=SRpKU7DzCe#1NCu3oi+H+%JjiU{udSROp`y#5y>SE?O6p7}Xzezr)K+I3-))qPqmFazy0RVwhWbPZ|+} zU*N8rdte2Dqc;+wI}!EaL8vG(AUe+2KUVP=!8uX&`dkq?k?vR|i<>Bf*P-HKTF;Hq zGl^VB1h()>;hf~`EAl2Lu5%e4XMK6=KiqLQ)col;#y7<;1Br~SBIOAgbyUdDLn2Li zC}YsFVpO){v=NTE|F}iHRVEvZ#RkhEF#ybI1;Hc8>8|P#nI|w~7gN$Mnsrm@%hSv^ z!sTR%;5z-~h!vQDX}|ZP7pxJa(i7>nJ@{g#;&;-MtcU-Mf9pDWf7xJ+Z!&TH&8q2k zm{sLI83aTZ_4t6!B@JHQIzCW5yhVtQ5m0#L5Xy!n6?ak{otH+p)eSO(vF7j>nrFU0kuptg|oS zB8myo5Ee_jWkfJ#jJS!8?rA7j6lUqI8{^7z+hvk6E0x#?Nap1qwG1O^CiwNNX~zEb z8v#fV>_O@E$$)mw#6XcQ-@o4#kM(~$vHd<`x+?LAi;ZK_MHzWPI7 zpjgHmjE$0Q{)qcGX2@1Z7)To4wi6-%pS5-WHVz!7)a!IkvnlP1^MtE=vrc(N2+ zE=d2n^3?ri-{^>{c`{>5j)#^u#X zAtw%4hE3{3;_OL{vwB)P`xm=a{%gsIGYJ8-3Bo#RaiS{!FoJ>PKoscGD3NX|GWd_% zdQj>QoG0^b+Yb~qRT($#VA~(b&;I>b7PP-;;QN#oSRA^=j3itQv`y>1M#9`&2M1c_1s91OZnH5m_i!6&sVZS+V#Im8o z2VkPjT}?rB8!P38ZJaPaCy=wOR+IF1OrB(}^K(w=31RmR%CWZy*3)GY(@~lW5#w7C zD85k_NPHiQ9Q}mBsc;>f=pG$u*!Y?)y+k)yHY#u?W6>o%eP0BBC5+kpy5m=V(DRtu z9Q-Yc^vAwxNx9&d7VN7T<@Y&`A!-BH&tAGOKphq{xayO~G+&{mC1(ra4QZkZSiHlu zCQx$v^S_ZjdZ4phF&PzOddaQq$5|G23onc`M#Qk`z*EFJEz7fQ=A4%ywB-!Jx?>_O zriUB{-jz&^=IKf}zBvpI;KxeS1-U%=p|Fu-(=a%`VFQ@PLSxz=&K66Dl*6Mmj&UH? zGiJIRVlBNn+0`=yUB{OdT&l!(@j6cV5>%8QOPO`Byd^H0ZPH52ps~DRvJ2~m{3e2# z%Z_l7@(SwIZ>2a~kXQhHhI=X1`rE;}f2{r|Ou#OH#C7>~wwaiuWs?Fqg@Y%B5wl{l6Zu1>~kplCXi+>;Q=Nux0pL;Y{|!2w9vT_8{;WMJ(gj zJhuFjmdIowkiDKC2jFk97vT;Jr}41J;kg^DKIS)P;($y>*{P1- z&?7gS3Nw~#O@tueqw(F@JEcleLdP7l?=9Nb9+!~TNr@@fQIVUn?^^MVOyrT(5I9HE zWyhn-OK9hYj@!0+y$Olu7SPQG1y6P{h1M(3WRMG zPgyz+@HX~iM3~c;YAHl{GJ;?;@dhGb_sdR(Kth06!>3U1Hd@&G1P*IOvh}U5RXV~rJV$UzOIcR2m zxxIYZGhPLRWqvNcPWdnEm&IQro9H5*Gt*mmM|WK5 zXY5t(-3C>CfQ<;A`Dk$jJ36F4#)!6zu;4fnwG_*?}#7k z4oPz`GBOO?81``)P0>a4i-m7u27Lt8!Lb~i)3J-#n%tGPao_PoR`_74p@Ivaj%m$F z47oNQW~NhWtiKnJmoyBO%@Es_oSLbU5?SbuK!SX`C6fS)pRx$^(5hII&TEb$B3K?3 zj-?~yMl`NU_Qy?KnI~bb_19hCoue_iGC7UA`u*!FW{bniy*a$0Pp%ImB|?6u3fN+{ zQ42XcaZPsd4U@?aPmW`!r9U0EL?^Z!pG#!Q9R+9*I0j{p3Be{FcfA|g*-B?;rKdq1 z0l|S(o1bIUJ4y3#*{K?%s|D(1+=W$2T$mj}>BF*_KlDX$iu$a)?YMI7C8JN+tkiFb^;n9Pa1`0l=BpC(Gy`lisf{y!@vpsK)`|(_yN2 z2%CPLqYLHsQVb~t&<7rg7k(FPaQ47aW2!HD4V`)ICvdlNk6u%@hol$IOliF&D}DL3 zoh02cN0JzhHWvUTnZ^Wu&s+ zcn+z&iOcl;Ks18KO+k5ah{)HlQzCHAc#Cx0@qiZvXW0Sc0%KZNQgQ^-FXh&rTyhNz0ipz}cyB>Yf?GEoA}Aauelo zqg;><%-rGu6kM3H>fRX$gJIaP^~oAyF;&3H$5%q2m=4`nCHC0QNZiv68L@**aahx7 zP#9VSiR;_aC9bk47ji^%JG8Bx&MizJ>AePboiRQ=L)ss#sESALYCipG>)F=OCLE(! zqTtY?Q!XzP%kiP{j)2>B;GR(wNChfkFCwB_a4$Q!!f1E9IpA>Dc9@p(kpuRorF-2+ z|2lSIo`V@Lr@^DUHZ6`qQLxrJ54jwzuY+x+clYXdv)zAWt-e`~3sxeesVK^YesJ!F zV!ZsL&jw=FF|~{P><6&pVyw!|HRWp})?KouVT;#H-eDo$!iJ#iypF=a@eD#N1*kbP zg`O}b*itsF2W4C}D(gc!#+gssg0+6mXwzCtSHgJ~1qWaNf#vY<%;>MfDQP%Q2-3oe z+GdVUnykl@SlXOs@i0pbj6 z_a%r-Pa&CAIlKca()m`oUB9I6RZmLbIOw9D0d5Bs{G8n@IY^0~Xb6$BvdSu#f0!(z z5M}r*t_~@pAIDyT$aZSJN28n^Qu0VW!!Sr0>0c zDBs_vyPz=<95Ww5S$R|ApPH|btKpKo%vl5(b?Mlz6Tad?bYw^|tY2VNL7WQT_oP}I zB5hjM0#_?iPO?LaYK>iFNA7OhpvM=}bDwK;YJkSyUm3yti?0WsWw3JOn1=7WBQo8= zQBiLsOb;KIOc6z~eGHR8l3iqr{5=6A0B0k=8^!M(^vuD6J@Uot!>7%F|JS655t0hI z8uBl~J=tfN5)nhL^bYyLi1CN2t4>S$Lf3wBxUKKt(VIDm+%PWxR*|cyr|OdskGFj7 zjjw-rb8KX-8S$#7t7`z9wjKNhr*itKV@4bhzTvbspRX%cx)4mgKcpq8MupX6 zyqrNv@s|)?TcP+J&jMNMcrXwd&hU|Ji*K`fdfU3CNvvzU2p#X?$KBy+t z?I6S9a(pZOE6pAP6SRhlFc1+(r2S|cUsp)1{viIvQ~(uRrr`w#E9ZZ)<@?c!Gp3rF z%|PE=SruDMyc$nC^7XC;Vu~^-+KC~So8D8N8R35*OX{FH|DL9dn}`0bR*`9cEW{5I zqFg9vIFWctBl?}LRW8rOQgyia@_FfMGfm&yzJx(;&b>zN=7Q28uU;?xHu;F{l(?&8eSHWroK_BVWoax9X!Sv(s|-;zm@eEbr@OtZV|Q?~jp4sbqX+Jb zy%!euzg;Kb>1XtQQHg-meGz^m{sRx^bVGPW(hE8=+n&%r*b?Kf`vjO>ZD07$zG4uu}Af%HxpS$b>Vb|;F-|JDnGsYhXO<_u74S!4IwoC@^38BaZBCt4=oq

~w0; z0*{G5eKDLlJB=QB{(E3)NASd`DV^jQmlYT|Eqnb5I^LY*E{i5YLg%D{C$mW##v&Lp z>3NPeH`FKDCHskc#J8tp$Ob+tSsFaR&D-;i)vsi05aE|m6Ks9#Q9rNGT84&$MM=JE zfXQa1HRKA5W)E2;S!HV-QW~M!?JiRjw}bDnQ=YG6BKhq1XC1b0c}*+_`1&@Cs-nd_ zSw|1am$W86Z>P%;?woziqosj{M#p7bD2lDbRi`px$ZknyXRH56mv2(ob#?9=t-(JL zbp=893Xh$Pu+*jxEM1Kcc_U;NE`{cfWL;4BhU3TT$DfFD(SomCdGR&;tL~00Hm6i}uj*X8Fh(&(n$qCS?3IuZ8MM`49Y3TQOxWHHaXe9&^8Vgk^S_agHoeD2>wwe&Yo^z>>z z_|q2er{=R)ztVkvhV@8t2p0M9y{WjsN)m`{Ga_(+I#}Ec%?1}D$DkVNriwt^bdRSF zY}Pq`q|+lwF9dPx~b#EZh6tP0AfMbBTaw2*K(;P^XujN zrWbaod_t>i1ZbkNGR*2w5_vGVYvNClTgT?JnLT8p@DDh~gy#2D%`$WXL zbLd+`nyMkL6p9=qKw%#H>P+v7s5?t_l%xmMEWN%S=kdLNuf=<{X`R~;Psum2i^)+j zIob|R>lXh-SSkje{T9K#&qg6t4997p4r z$0t~tM_Jhyf0*a=+ z*||BhgFAS(qQ1~XA}qutHEo2FVUISSV}C+HpNS!-JKl7wp&FWNm1Kh(?AQcN%9#@0 zHl3**^8RKITWs@1)59-GV5!=Wj z**x98{q`AmX65-_ zuX{md3oQUUp{sboOGX(O$9AA?q*6(ecfIUkqL0S8Kx)kp1pNl?GpQ6MZ(ywMFkOy>OxYv-hj-^a2elqxO~@`;&Da?Mn;<{-uY z-DxdDo*a7Z7R}dy9ivHgw6wnthSPkiW4jdFgXHCMl^4ls>MSEd8Fo=XN}ZK6O{&gw zll6t0mc7Tqz0E|VjxVNG9J@Drvl7c1Td9H0&lMnhIhz+Wel@2$y&8P>Wm@$^pDL#~ zW@0WUPrY0(d6liD1yr-CUaLd2&?9h<8ic5faLv5ivlAh%5TzfvG7_b4aj5RFjLs2? z@zPW<->Yz~NlirH7thO5{9wB*4hHR?SF(DdUdtVvStP8d((AamE98eZ0|k%duHjH$ zTIk&INb@V1c9LP)6OTy{W?>Y#AAn)-&Fl0gjaJ(stFV z-Js*S`I!Q2;>g&(z2G~|-eTiec7A^8VlT47CpzgPTFUghrtU80t+6h0jwK#*1I}Zr z&mxS9mR#DZYl;?G{|vh` zc26P_*f8w*G#HQbeE7s_6~=VlX_!7zLyqUjXq$6k4iy_4ipd=re_<%KJL9IkywmV;jK}=RY^gZG-i-|mHsX93ry)>S#JdG!pbl}sAKBjW-MA#wuh;T9~jJ& zX=rS)S1HoQMO-vCZ_ufxWoM%3^cNQqST^>9!ZSE$k~XFz7NaDBUvQJIU4nZ?-wcc_ zHq{I!In7%vW|$k*}v5 z!n9Y2Hix&&uZZ)T*2V{M#wW`iz$$&UFO>v2Og0&ge-OOEIn8k}CgEtB6~JFyH)J!fP#|~CD%kGi=LWhdht^;imS!GdWT95!V%$NQAujq4j!ut z1@2~1fAaNu*1cfMh3`HB*~*|^AK}vad`9%?_#Vq)%WmL=e6(tzZ0)5#Q=i}7<; z#&Uc(Lj&ixOB&?95tMq5H4f!0X7hAQW%A|a)@e9nGMsx1z{$Hq;Nhtk?VPlb_gwzA z+)|gL5nwGb&a|H7u1Lam68EBv)8uUTy%`lx{Jkef2&s|Pw@k`7K76ym?~fxo1olso zd5_7Si0VDT>%vuNufUb4=md!9xPxQ;_*_VY9=GnkK3{dz9=o}yg z%djBG!oqSnBp*3ny}c-5ZWJ77YL;oS-->bA$vUzq{P*N|5cMy=%Dw(0HqVRRAi#cP z^JETI`G!Qp8XC<%d@0Mo7w=`~*09YZL|A&cs5d1eUT;Vc`rJMl=b!dL073X_8#>MH zqoY-Rc(qeaMjM3aJC+Doa`rPD*~*ySzzbag!LXI>GIob7tkcm_S!edWtQxXB^%lC; zHh||Ts#-}O5mL-$FDw@sJZQ`=!heI#ul^YWDVgJ2|3EOljp?IaGPXih0~rtnsa-eC`z<4WEuL=?zPg8Nh2X|Bc>&S zMM=Ebmkx9g_7z--1;6fW)Wm<2iYu6$!s#6rWRNLko!%Cy)%4kCtU7~f-Vjp!9Yt3* z`rafdC2VZ?xZFZYi{6nK%UC!4!$`&Yx|9*SAj}WPWTMhWIh>Jdt%gKj%QO zlMn^ngD*^XWGQ)C}YrpT2X z!jhvIH3Wl|0vH968R}Snf?@Y=!vso*Tq{E+>mxab1bWHrz)9ibIV#!Lk?jZM4vh(N ziT%U^6<&ZV#KsI6e(Zwgc{7H@NU;^+r?vF+q1k_?$Yt4gc%;~cPhBgsBifprIhO2W zc#QQ_a0V2edb}pn7NLpPHeHfY<>^5k^QMnmaA0tB@ug4TVS6Xo)bKYSvIypCq0-2s z6{kegjzuq(-Wb5Gji~oLZHSF4+-aL|@qwD{InICI^uS|6$PwlFpZ$1>ER`p*&etFd zp@oS0hsHoI(40)-Ql~?6c9`!@7SKgdr+tKYS&d&sZj}1kCndPYA`J2wOl#;Q@Iq8g zOnkt*&P*8{#T*iS2O7$n8R{`1V7dZ}32&X2q3ywBrcE}wGF3(zpyuXE^u|Tpx=veV z!B?g!v&}^DS1yfcSmQMn_~z2((s-{Wncw+@e94;wV+Yn#7IDUaGkx`b$T;S z8-j^>THv1+xuBf>x<0XIc$V$s&0}|XvPIS@>bQ0xZO-QQ6$SzuSjZ~!RC9`P+C#OP zpZ?D*Yk!KXGEUH%%7RPc3tK=tfgt+-%SrT z#;x)zwv~qtDiocSYl9M3W&AN+-Be6NvFyo$5~m21o0LNW3id|^PokVrv*yi|wd0Q4=2nLulBa6E;9mF? z_~}6#o#_jP?h-D&SM0LNGa%d^-66O<#Ur+IMk}Ht_;UuW_mp!R^t;_dwCKn@=io2; zg_r2%5LYGy_2r%w*$q&P7I~T32T`}o#F?O=Z)9=VIZ#F+B{V^mI48KjFf68PjTXx% zPvj>Zv(*nI>Fdc#&@mRLGB1hN;1d~#sEnqzV)gk`k}6>%=~7gLsyfab?ZVp&L-Udr zM+eYs_T^qNzY0~{dAok**UGkoYL)7~ljMz6by$9+Q*taPwR2xm7x$Qn(jp=aYkJh) zf-0-jSU-V=&u~bjKksv0e%z1hGv#Sd!n9nLpgs)OnFy_VtW`yGs07upJmm~zNBynH zLd+(tajTW6M^x(IfIUuB(&7C0(dCi2+@SxNjy$HD&3_FT_0L}>Fu;_YK%f4I1AMXs zdTTUDzWue=nO~lca1Bb?t#K6$)yxbw(&> z=FF^1)@4P0pMN8jl+mF6kD@8b+tb+_zp@DL$?HT96>)RXf!5)xl+1K4hr+@bhuBM)N30vKb&Yvv zTw%VgfW&9bV{MG(vgOt3_^}k26dfPErGv+Df-KlpLOjq_Jm*gWVIuPHVq~PNoIg4H{ryvmjMfy+b*JrQathAp{ZZ|RrCP&eYZuN}9U46RP^JKIZNn)))KV;S= zm=JTbuZEIoy7pe#AH4W%m|O-kl0al zEIo+ZaG8`UvuAKQp{A41bmwqVea2L(SY|}*2&Dg~Dp-0i_-(tEDOYwiKdFYYqfJzZ zh(XvlI$2tKvp+F2@};WWbOBV$OS`(RNd?LrnK8xFdY(toLlWjH`GL1B7)HYFlw3e8 z(Hr0=?r%C`?K!ii>Ap&!6n~p{sabq^Tk7IRB`>E}yw-c=1{vMbRW)PQ4{hq^=o_;v zA4(E>tUQ?=C?-8BqiatT$8Bb=yG5@!cxq-8!%f#~Pyjkqjec{{lh`9cbi5kA-q50+ zDX#4i#D8|%vjN%zM(p+e`o0IBUj1d40$y~#s{(AU_dqMZH$G3V#D-%dX*_INU(iOx z{pzAv^ust|g*;`5Iphty?uVorp9%nprcQ#`N3`t10ujlKZ{w{AW z8Z7g=oqOAx9oTKG?mfT34{3EEzo9Gx;my$56*kW!C5}6d7O~&5DrF`d%`)x8ZFtXM z+YKRF^7V~8CeV{@dYKx1tS^K+ozV*+(hFm26I*ADPQ)(=DpFT$voii90b1UL(-|#h!p;z4Bj$Tk302A}%CoU7 z{g7_?<3~0^>S0{i2s zGwsJ-|7puW|JPU~Y_Dm)rMU;Q`8kbaeR$;t{jNby7Pb#0pM*ed8TobyCW1~~)@RTp(_&1`Voj-HEMV_hjt44rBRl)jypyB-xa%)2aMX~UIkfb0q(f&3Y%VfK3M z2e<2*9*oqiF{c$KDEvslPf+Z6!>Ad((F2)uTPbOdt0E(EH2KQh9yQdhc3f|nXsf4 zgI`9Qe(vqNU%s3|WU?N(q${FFWYj-PBOD*|5Ji0nFxWDO{xfB3hz1ZNPMWZ1VE}C3 zsPJ-#U#8&K#atGnfx+X^j!x6dK@9m#8i7-_bhm;0xzaMUC^n8K+;sLo5{_@UGfVsQ zWGLC#ztoFv#ObY>b&V???d0{cs%9|?(sF&Jx0iJQ(T_t6r$kn16>l1f14|Xw#YRU& zt|7-pmBmbl{UwF&kBw4H*<6xrmFHAbNb!HY-4KLa;Tu74(N@yW!t+{k$5-zL=B5QC zVT8us3D%AS4zE72CllEDk*|Hn&6ATlEoQWC*P1~#V7ac%Gwlvkc!Do?7d>=mRD5s= z-`F103N@T2Ru4ogmy4Lox<{~y3(FG)9*sTHZ2UwO{s22Se|Ixs!GS-}Na-KA2)Wmr zF*ClSPjuR{E1Cy;X~|0(XMESpcNd`ZGl8ZTo`;8Op!2uSAAkR)%kuU);m-i@e;yyV zvHmIIn)hnC-VI{}uAc0Js|agGSWmYx?hG=JJ`R0~#{N}c&f13CLdFA1^6!De5H_p$5|9tH}paA5$ewmQ4B+Res2=Y)llcIkS5Yd@WgfcQ!@oMdR^qHyp(h z_KSW8Zw~T3Bhs~gJ;F878!E)L%35a}K51Jv-V80T<-mby`;Oe51i=}gEN?^oUhOe0 zc;5W-hx}T@T>F#6{PtJp{pa3)s_G-q>Hof8qvHveb({IuM-$zjQm;y}6y?QgL`F?- za-#N5l5;Z=?u)1`97HXB}$d>Q22>Eom`7i)yNX%IgxTx4xzu$F72En z;p%zAGNR*7mk;a^z=l?19_9KjwbO%AMPs-KqQ>W=UX^328EUwekn?B8^X|puD-7_3 zG)w-T2<4jzh5}mJIp_Kg8oEVY`E5O&SJ>RFW^3)R=X149m;x8PELu0BH=iXTe$(%@ zW_=G}OsvOG5{PAPcw3s3uZvVmjw_k2v-XU!?iq zZq$$xo$;}Zk1OZnDIIodc>=g4)v&zYkYTh2o74Ay} zO#u!qoA1y_MdP2BE|x@tni0sM<*ny}DC1QR>$#(SfxGpZ{gx(o!rOBc!TAIi!uuxW z*?*VsV`0qy$C&1xr;leYjuBZWBI)3nd^pn=qKDP7$cy;=@rrob)R!n#^B-jwGJY;gI{S*pPvq@~&YKTE;`1zH0<|OLi?7~>W}I@dSmuj$ z_^6eMSLH{$#=mAEHS{=4nhvS+ixOE@d*aBS$nN&&uYm)glSp^yF)XIaH3Tv-tWIkv37|*0z35PZSz%y z+#f=fQ}4h5-hmSl^!W&c~mljL*f{bvh1q|N5E;Aex}uL+@}_(5mxJu=}C zi|BNVxe}QVpeh7Of>^~4L_#q#@FTklFF!gRS6gz`Dxsp?l~)AMDq}c|$CCGVeb}mH ziQ|g7?zmz|F#SxOJN5N;%B=M!hnw9NC((?+7c&xJ@&TG3o!?~Mw@tt7USkEFbF>qg zl#J1#stpZAH`=$sT$C zxtCGd7%4OIhQ{-4=@i;*hf+_0(?dAN4$~?9Ov`F0NLj18Q|D>-cT@iOd*iH!?D3#{ADpB>D;yT>7b}KjFB$@($xr+wC{624 z8~SgTuiw0!wY986Z$QEy)|#LBJ?^^b{~j+M%I8D&zjdi0#OV3(W9#$c4O0&7$0PE# z&#n__(R!*1z8KIY8a}UG<+4dcGHUNO$tfy2gCdC3d`}z!3^uw|MW(S_iU-#|w-8vfgh{tItQn zwpPnISN#8`u_9O0{A<B9;Tv>Yhv>T7Y%qGD2TBSC^+)`$)?Iram z?n?y;TprW;Bp+gFOQe{IaOex0W7qM_4q|lFmN^e|>p?C?W$6nVDhVp#s7j28|=iXx$d!a$i{BbH{7 zg=c6xpvo%tWG?zJgFT?A65VTQj5D95{ee~>9ElchAIfJDIDzS@-~LN7ihFPz%IBl% z7kn_Gk(_LiAvXiYoW=svz?S$`5OkLVpyj}CM z@FaEYy-C&r!hn*zWUKsQ)c1ANLAGYF#3Xv!?DU!-&F@jdjh)#cKg0;>V}5I$5xY8L ztN)zbAq0mbZ-}lIar3KOz1KX=0Z|LPAgkssx}hpI;bD~_W$j#1g?w)vdn|vq6~v*0 zM0wePaNUxh)FUe_2q=a1{23?fB^h_Gz4evu1p{jaV(aYJ<_YP1x$Iu+N(1?z7r8vrjh=ClmQpCE)$C3{kLj|F#oxldw&0TZrM?-4%DuL-zUJA5Q!@6CLOJG zD+8_A+6W7aMT&)}9BGe;aUR86b1ji1=aV;;_jQw9artsN+~Z-Iq@Mw3@`22lUg?0( zAq=|SR3=JC9pAo-81>fU5QW^j$$%dn97=*t2TJ!8y`(E`yJyU>Ba)$4~~=dsrP99PsdrO7hP(| zw|P*=Z_+l$K6RhJXG073uQC)9*64r9(t4KF$P`TrYpU40NEgoYq?t!abJ$9{;Fg0I zyk<&glNclR^i>E4l`BlOx} zUZiD?$j)1nIu#xDnDqBiH>US&*v+rKd@i5AUI0X)rBAGV*HulNJCq5&vs%L?n>KPG z$_N16VTEb$&s)I4UnNHxbVn`G&Lg4ZH|0Iq_Ko|ggTe%Ng*-O*nzGH@VO2LH_#Vf4 ztex8qZP-a(KfkB(kzE5)rad^wMJHjkKlFKve##cm6w*OB7bDa6V3)Y;bqmY{(N_rS z(z>+APY1G<*6`)Pz=$pMME3V_uG4KRtZ6lg$mndglHY(ww9e9jjQsu7)s&XGOey&G zmUfRTpaEts|4D&Sg>980m~9Uq610l9=o!*QcQ!EBJ5u{Teln8ra#IPHC!HQ|qA z3+>5n234gCPxR0b8l$pD-q#FFFo}`gSBbR{JgPIP_r1`x)w$bCU=MB_gKBQiXTMP-hByR_ zyTuBLLkwH~+uwJ|2#7K`{ZRG`4Q-%~aQXbE40Etg!L1%?{Id8Q26_H`Q#4h9w2_J% zZ51obnHZ+MD=bK&S{f2xbfvxn!1Cd^`ccBxR8-TUzOTocrDLRUm}A>PGg1a%r06Bp zs-MUfW~FP#xFAXfCm?N?u}^Qh=b~bJp)zca){+U=R}ak-Vc6d4@?}=BXM%g3>tbki zT~aLw{`je0W~#LsqWbcG%SmH=*sSN2Aw1vaSHl_=Xxf+ymTG>-%KLc$ zhTQKnp8wTx(J5&437h4Z_0J7(0hs~du95PeJKI0i^vA!dDdnFfa0g=J*ROl~xZRs* zS-92gW_rm+akqrJ=E&0!?-=YN0xd|R%@VnN)Gzu_sw=Mc#f$Q;7o-cCS&R^u>8LAq zvMamr@u^!&;=!j0J$(k{7a#~sZ0Vssr*x-l>&&Jfcp;OoPjKB`rU*;IR%MBLQ?B4?%k?dpJsrJZDb zsA21yx#v;2fbm)v3*I=q)RDLnJoXH%L|V2<`0*CyW9cUv4h|nGF{)gp{7-D5of`T$ zG)|8G(pw}-Kgdp!Lt}p960w)i6<>a#Qe|SluFq~DdQjc^jT|vnL(y>C>AZQa!`w@r z$nH!ewoK>3d%IZR6^Z_XoMm^^So6A*gI1Q%s9r`%U>mp0atT=s@j}lAq#XyCkBnf2~(;pO#*gznbEffKBvXH0M+DDBCD4 zmOstH9MOBMw4S7u=7T@1erGMGF81xE2f;;u4pMI3um2C@dtiR)A^BeejjLk(g|dj4 z^%-dbZTjB6p0XfEH+DxNpwwCILbz^hZda+qT6}*VwSVPDRUmc^vnqrD57RWgngp#x zihlpPg;`bU6&=}S$JijaKXrPO#*DlJ_}m25Z|=|8g_&ByXlNIS9El3#Kd?+d(WyXg z>5bl^dXv2$!O+G18GTvr0_k2;@nilS#wM>Vph~&E^UgxiyEN!NX$Qgs1W3(+ghg7j zFTY}FGxdoKUt%bI8uxAPebsAzY>*eD_*S{X_++4mklH$BzYt`GX*|s?&U*|U`&)rg|{;yx6ZI(25tzMpJ zEQd=fVSf{~7Wu(`_Am3m2Xly2iG`3w`kw^-7RN_)fFatDGpm;9HT?|tBYn1&d2c4a z8xo@nL5Q~Z1{C+LPTS&XR+9B`31x;#?W-*DIMn~l^;3>MAh_16*fsd}^k?<0&uJOj z`o;xrmnGnI^S$MXkk9FHsD1Z`d!h|vERUE#!}6fET=>0xK50N(A#+v{^PY*^zVK#Q zQ`GX5?f9*p=rR7=vZM=W5sL^c3j_Qj3UM$ zG7L%O%i%dhZnJmQz$Vta_xVJd^niuJb`C~0K$71+z44mlLBwu#Zbcm^-N)=DkI%V- zZfCBnf%`)tkrUe0#q0Pag{R|&-r7^WrV*E>U#aQr?8xo6pXoc4gFg4K`Aw>!|)|=l12{EdziSI4DzW9MF1? z;+szXl`~x5GuTc8g**Pp1l-a5^j#Y81_D|M7D1sRRXhKCzw){McV?k`94W2+lU*M; z;;H6#;fIgNW4_LrNNcLxkM5X0#4q&~dgjem8WT=XUU7kVn~$ws%CQ)^;O!L5x5Zis zxonr*ki8|nmb#*6OV20RJKdtxtlwMtrWbyKB1%Y zkg2&2xy@&JeAxcarwgCjisrr@tEim}I$5>Xb417IVVB?~cnf%B4hri|0d3IyfrCP< zkFQ6wxi)47jLaGHl3ttHQl#ZCU1b1tW> zuWJrH_<303l!=dmkchAPXOFC|SD}zZOZd-|z)G8hYRjYoMSZl8)PpXxlA5Z0bP)=y z62j3To&X;%Xt~$d`Rm^oN*OOX{{DA9?UHD)UxmR79KlhwJ zhV6jP0whg!E>MSV>uZE(jOo%%Q+fWD-qM^!C(=@k34x})YJ0f7XEC2hCJ+gmijrTK z{VUZ_GW0IHthC3+r9&pC*l)Fv{zSKSf2{mZkgGKje^Vn?IE&z=XA1Z!7wXL3=mLoM z6vM}IqqCku?Ui4FHz#fP8}2VZb!kU$e^V1Njd}ztxJsKak>I0%ttSj9+=b!J{^O5f zq(dAA_Y%2A{G0W8o$^*hdJvki-pul^XyEzMQBUv}026NfLxMK0KGMo9$%qZd?`9^% zlIvMf!GTckHRD865%NHZJa`x;s-pubv+WRmYu|5nb2b@b+Mi1NcN4TL zQmK0zY!rg~G8%b$8L32z83YEtl?NvvsM^$gG1qfQeDsZ=;tW*hMLee;7dUHcxCA*y zql;-KoO!mY)vqR?H5Zl{hPvGSFz-;%WB;5#49uRS8M;hps2EAp3>}332nhR_Aj35{ zi#&YxO;mM7W#7z9SLnP=>re{hGtqpQ$NTI|?8!dH16(eoHmz^|ybM>yqg{7K(ZNh? z#T}>xdXTh$KWmmP6+F905Q*e&2;v7OF|y9qTfLtqot!b=8{&HIbbdM|FsQM|ggY-G zHIu2Z*|Ij2Q7Bf{mD^W*WCtkMCP2XdoL$H3*=-{it)qbfIIDzzPb`-5UzpbJ`yEo{ z+#wQ6(7R~7Tw*@!em48?n4GN16ZD99*{XSI*aD*^!N>iQt0eOBu(yJwGjF+f_LuEZ zruF~OMdiMog{`PHoET~dZSz8&W4FmR|I}ajPQIhfjS$f0i#wLNV!IFUIO#SvvW2gI z8p6^Tw;QB%4c`R@0PmOU`rh&?HO zQ|Kb9J`qxVhlZB(8I%zWK%RS^K|by3@FE%0_hXom;>HyizbOytl4X(qa2oKqq2}j9 z5%bGz^o82_i_M^e1!)=$r@s_)0s~UKtxYdb-ZU(N#kf44Y&|TldkX}6b@}}eZSvOI zw^~+KwJI%Ht?E<-%p+6hR4&#nD@t-f5MNDmm3256?-kohGZHzksFnZWx~-?&tb2%^ zUs9qE`+{lhjBmJ^L-ROx#_D5o4yy?Rv@gfjj(|*4 z6I z?m3o|xmuII%#sktzX{YgYkp4(zb^KK#t}Y9sUA!mCN!z)B+Bq8 z>nJZV;>DY5#(O2v_zFp=#yTHr*3Hl{XR!$!P51IJc-hGa=Y0%qR*5Efy0_$APX-%} zmcDUi<1M>Gae_e|%cD9a`q-8l3WN5+U^WJI<}nokP+=(7ukEyGTRkzOPs|hZIc{Re zMpLohAShJkc&~YRBU!%)xEM^h_9&$Pk_TOH0t>&7tS#y;{yD$5^ok^6Fi2PVzjxft zynS40=|J|Lmp@MPH*EG;tUToS?=??Ib>1QGf2vNp$Ai>K7vY-c@T9p_cD(py(B^ej z8`&e>Rr(47p&I%vDVyzwnJz;idl@->o#+sc+IW+3JSp2H>x!7OiA1mFv!UyVL8sUC zY0eAQrw89Cs%aA^g?xMtusj@JvaP-55nq@vJ!gY?8pzkh#mtW`Ck_Kbe-+wFoLWEf zawVW@7T-kOj|gjMwW*H~%z#zhF$aY?fiL@F-Ohz)m=S_0YD zWB5*T10G2Ra==wDE|ocTMsd+b*OfXj$vgYkbEpqh&6kngav_ep;!jwJKRD^>?~USe z!zj12;d@35yfmfBdr3%>ZNvz@%(n^Jo9RkAJ=g{DHudkN4b5io+sWt*lCfKz^+<8N z={_5F#GLaw8PaQNqUsiA4sIVtYK`HPp$JRw(^dDP()acFnU=kG?&FUrP5kt2SAY)p8Q$a&Au_*c6A1*rchNH?uEIBTk#wyI)QZW% zu|rj@6XJ;pnlm#bmKHwAg*+)M)CN)NsdM|O^bFa^J6FcI#>ZP&B1L!_3O2xqeCV)fuPY)S4e=2THLLjV}D*>$f%g7QSotgi;XQZ;3 z#Qqnsc2>ddF#dX8uKXk5X{D%~t;HuHx~h`yT_9g8_^}>nXyjF^=uc1~DJ8&nSbP<= z;b2#N;iPaq;2}R*X`20!RHURRBbi%9xNV+?_R5vg+EHB$&HsMXo3u0NK~6h!k(~1f zn%|R(?JpUv{!d$;+S6poj@9J*XJ~_@Q6HoM%x^6fu1C^$3jFIEKQayoE2kIJg>fL& ze!eJ6CjPmsCa5enPqajFqt5qmi0`q71`2}sUttQp%*Z+J%jXx5toc?}^WdR`^kbd) zJ(4~8oMbIkH41hP<0^K}Rc5kt|K%gQ#RH!Dtp65<@_^T#p~vf>SE|USNiyB|7-6b% zu%{P&px!beQ{LBOg+R}2Qxj#eM0sV^u+scNMtG&&)y256>l68|s~BC>9Ql>iSM_GO zbunA&eZd(i@~fzFUW!Y)K6}L9-XblCS{=7{mv^(?q zwF(KbHasSWba?Uhvd-b{$SEJ3*MtvL{Mo2(KFLk0Y?dR>(cUCgS4bV}lq}X#XZqRT z8a}6Jy$gp1g8}a?K`UraHTQ~0W0ur7v&*T$A{Jd}j0=3Tj2K!j{JHO&O4NVq+|x(+ ze$u3k7p^H)nE1T=RHZ2w#odRl?k5e~?<9|XQErHtRV{#6wiag+tGwX^oU!_4uTPse zEX!fovr{~}%*%+uoXDZa8bE}*J#AY5aS0m#q79O9Q1kM#Ws7z!y$2;MqA?m8*KA)ksXqq$ z;i?>k&bafvg2Lk#XLpO4@>5x!hnbKjGEx^lZAPfP+BnT3ZExoLl525U!9(w79fV+# z)kfUPd{^LSTs!xY6)KbWd#pW*E}YEH9bJC8zo4ED>i)mGPl$fs_`8Taj^;AeDT%Wy6pZCclT%|8PruU9`quz<{{CwT> zXOeyoeQBYLT--*#q%u=eZqnqosa*0&yHBV1X*_=3C@G8UpV};^NyCT=%9^~)G8o4C zR^kVROEcj5ov7#bo``?l7sxqYmEo@Mr?7T%@{R?U-r11WN57`Ikn!#5n5go3n*Ywz z`8IO=pNo3NhtuUIHJ+9K_KXn9?ti%gkmhmpLss8<26jO_l5B)2Rpm={F6!!OI-{(J zpA01p1#E>z;Yr8w{)gl}E+M`p(;sykPwgZh z6ar~rLTHNnJ+yNnaYXM{Mjh>HBmdOy)Km>e0yHbF1b z41PTqLQvOYSg{u3F zikOmH{Z|F$_RpsGN_Szhf&l7)JbicsX?yJ~%J$oQS4?bow);;6zoaz1MUP|j69VN_ zq2W&QBtc?|>QXYoYAia;Kl*+Pkafb-!;n8@it(cvi$2v7pq9P$RNayR3I8^UFx6IG zdLME3eW{RLbbz1n!`staOTBbRQfIk3)tofmTSa3F+K9JP-`cS}#}Ircy)r#e*l_k` zk@p?w1u=z9AKWN@^Cx(5vnyR;DIb*a(Paq`fGLB4{6mrjV!Z&|-Li(eiJc;EOeDDi z)%ZM*RIc5gh|aDC!9$pI%KR%>LptWOc3h(r3ecH?&(|#FW6^xg{3zHdijlo7(~%qZ z4Ylz0OYZo0N+Hgj}80C!zWiNjk2SE-# z#xEwCpq0^|`E9%Sd$u~opkDx^03!WrwNR7uvslvApqKMbgIoXAXS(7WpY=(SR@XhQ zR#zuT7~pUCh38Sqe&CNbNbOJ9wYa?w z-jW@6XUid3_uY6TdU-k7f8JN2ba2#82D%{%W1h6RU{(6>U7TjfR#+w>f1nK*s6`5; zzAsle_e6jp9W6gw7+1%Rt8F;?1zzrEPxKZj9u&5%U--W4ay$vpr^SS9+d}`G&$xtp zyz5OC-9}G+^F1)G+Xp^&=9?KtgpwA#u}-D{-Qq_uK!uAfE*z$*sH&nPc1T}-XbdLZBR*Ay>rv z)tc6i3t%lsDzpcy3o;pAXMJ9uq&m*u4NO;X&I zn~T{Bq027Y`%T#coE>AOLY&o7xinAU)T%pi(os#h%x66h=t={z0|Fm2=vwvzeL#n7~PBMn|CdnK!?E`->w!5o?fq zj5ET_pJz7w}4`IyrFCDM+Dj=Jg8{RP{dANNJ|Mz_XiOw|};kU5D-wXX~_nX3At z!nBwpHZ|Hq7~E|lU>Q-frC`jQ7kW4jX4$NQ;ES9U=P`OQ)v<&uh0GfUOW;f`ACGYc z5QBa5&DB(9PCPODHtc$kpxo`LR!30B)65CxM5qkl^W|R}?D9(o_5U6FKW>9dq;5nB z@9&d8FAumky8B*rSZGGq%}QzT2lj&AFt)_8$Ob3a6wRXE@;c&P?L{|~bRpNn5c|dE zv3@@zDYC0S3_)-)zo5Wn~jZtfLI4#%rIeFx3wgq_YLI)^%$?OI8&N@04R1f zsQaYvYuFJO!^sNB`bXbsIKYcg71^-U{%#I@<}Ax6A&|I z;=%wvO{n}CY>6PEL6oLxahS4oGY$0iXSq16Q?b}h97 ziT(A4m^sScUt27Pni^)59Vz<}!51c`*%wDa%Q5I&?yg#5>ywyryYj%C(Dl$4646QZ@& zjEG60HeZVi5H>A(! zShp=kewgPj#{TixzJ{%JXiA`JN}|8w!vBd$a5xS=(1+7&w6&R16eR&&R7ui^058Wm zdi;1!q?XkMHE}Z4NBS+y(ekPC_XV1JMaRk_+EWwL+_1i`4?634f}~j{c-yL@p}NJ* zTJ+p#ubaQF+iTEp^k^;zs$XVao}LQ*^4d`&nK3=QfN-&`F)H$ua6^SF(v1rC_QUYM z-w)#uWhCHE86VN@VmMUsZ)irTx*aRk>fcae5ZC1 zm2u}*K5o0U7EIlXIVc3^iSfz8z_KkaxeomTxeF=(+H=%uHT)wnUp^^xbh!kEMlydX zGnKD*3x@?acHkY~n!e_kLz}_C8dIw-ZjTD5t@(ER0x{3nBOXc{QI^`q6i%qW9oo%Yriw&BK;o+#`9r#B?@PRRvI zywFmW;<4xr<$;g;@IL-)dYGM>$sQ&5Nhe2p2r0%FZA;f+0wcl(>By|}1ELx6m>{0K zdj`SJKu%HD4C=5wF{J0fWTPXv0Mbx}@E{6DDLJg!59yXsCO*}b|Mdcx1aUWv zwxeyzd5`6C_Ga{z&!ZnC_%ukK%4kTn0?Tr9qXaFaR=+WOQ&D)x4+ukq{Xc$feMD)! zJ?9J#b=x(hYJ|j6 zrOVDu(1QV6NpU)IQ}<_zI0#IB{-4dr)*ah=ssg%uU9X%t^*HZ1pDOS*6tU9dyEi;(hRcur0rL^Usp1MuO z4H}~{RxB(GhAymlZ`JmQGNcj(Nk2<5QX|Vy(Ft0^m8+Mh4fm?1%W0P7R2cy7P1k`Z z<^6w|r%Z%-2j9QUlX&pl^W}$Eimk11+40@@Io%@GchPG1!@yDqd&GO-Sf@Q!jJpTe zQHG1Nt;&9>LM>{N+*+!l=+IE`b~659x?)khN3plr%6WdQY&AzU%*MK?+<-6deT$)d z*?ED^4HGG@n38QRbvgU*iYqsi-QL2lBT3vjQ-Y-|k$Jl@+rL%RxJ{-9+=)4v znnl~xdc!Ri4&Hx}+X9w0I44#$HX`#HHY2>o49QoYbk@*D~{N9@4t zE*mE9332Z%wjw_LNLT^-sPH#BPw+?uBs4c87Q+!jDg_bJ>Yj#JgMrh2t*lTum`>WJ z^@i~2M0}3$9}-~sLPw43%v1J&_L$+aUobg?mI=dRF|O$U;UV=Lo)Zgt#)Ge+9*3=3IdNRm9cQ+|%yXvH2?j5hk|$zEpP2Pkre^I; zmOfri99ag(vUujNZ;p#9_Ul`h@=pNv?LQf@Dzqr#RB~7`x3rb_BQr#YD1;<$o>lId z2&2Hwg754^38iX@?ZS8SNQoM?OE&V@$?HmiOiC+-;;o%K-}Ts4Gp&BM0lpA!0dvV3 zTOODBJ&v1P95<06zoS!FI;WIQ5D62$$n32r+F1nkKnAqFkiT+$BuY)+3YxOm47iiS z-h@kUs_Lahl4X;ti}|>P0i&$UE+AZYJn(_oRD+_!uIVI*Z^_-Gda$G}fv&#T+|K5W zh;lms3{lwL!x@R6*a9EizYVo#L7(L?qvZ1A@j3&Kx6=^cv@&t9TWOw%ehQUbB2KTR z{$N5sAnbF6i{(l(?m-eaf(}{u8i73NGh+Hpnn5HLjOpUz`>}qtAX56M09U2prlxEn>pTv#%s& zS+uKkvQ>}i!4^R#<_*Lg>|W0 z7f9hwo~`!1Uu34K+iUr3sH}>4!c9Z|i)nABf$D7Om;C1_YBjfw|UaOYc z+BcV2OeGamZ_hOJt1kJv`VVfsM*Py6e#E*@n3o`g!b*f z2pX8@$5(mRHB;THXw54J30yZd?Nuk<*+AW9loFK}k5xxeAkTW(Y;}O0$EDf(O}t&j z&a3YLOQY{B*_}9OM<1Lu1((Is#*%d0AhzGB0Y`iQ+%C)q=G;{|3(az;gZsX)J*6KR zk3XRccMarBDf@n19{v<7eU4vm82P7GafSc}1eC#tW{bO@BMb`je%1d$$Z8n)`uV{K z$qH_3%hG0_Fjw|Ti6&AXw4@`Bye~K2h!kM5gQ+bH*LE$_Ur)}YAWi@F>hm?K=ysRW zF!GJTFN=)ZI=#9b%Bgqh;-7qgxTi^fR~?r`LG;~zKRlla*+Qr^{iV1x;&i&#p;n+j z9hCuo%4rVYp({JyDsqwaQ#lKsHpKk0_*~Z(`Yk}?PI3YXO9Ac&Jl>^#-=EO3FTPs< zm8*GDhv!zL!zR)S2OGVPBS0c|Q`J)8YIuaNJhAaohef=*iu$y}R=pMuIdbnv%06#e z58umiQx69v-5dtvU4Ef!eWpu+aBnBM#WryH*Nt$$gdoj@Bi2by+5F~~e7-r;&gZRe zEh8?&`7zRCfa57z$Fsq$D8+s2;|M?>@J*ojeq{fDqymKGUn(DZ`_p}fgR(F6AVX;AZuYlRoyF7j z0uye>arNj_Zbo@!5}q3Y7&<($E77|Fk?GKl686&2V<_aLJDCys=ROjbG9EhA)CVd` z{NhPQOjh8Ujs>-8AZAn;Uw0pu3-I|R#F!y17V!tIdI;?%9-DSw9D4ViFpUj!_@l;` z7#wvP+?s06Dd``iu{zW+x23>oBOl=}&3#*emnd)rWK`4{<<0NK*atM6m>#h=&4V#x zd+`NT8RHm(HDY^!5w4^7Uh?pdF0hQ=MEUs6lE>#B@zc)571{K}>QBx@G=Tgl8xvE?SQn)*Gpgs=qZG2*3poQ(FG$ymcaC0W{JXlm4x(AI#$w$`U`EcmsL zZ{GIHUxcKxT*@Y)jU{UnlXcNc;~e?b9)AW(?MkGz5=G1%C;8!?YuHvOWu^bnZlo|7 z`h!&IrBuOOt?kqblxqXEGUl9?yuc-TTf&wSd0Psi*b)T^;0nJt<2!*J*w+Q@!;X3n zjXiGe+6Y1BoK?Ve@FZ+Gw00i>L_SPCx#EilRSX~}n?a|Z=dP3D{NrvB!7-I*(Wc@7UU)P~Gw|{nyKD`?AIc7yl=1`ddwKl@OfQWrVk&TIJ6$7<# zDc%s~MCLlzK|g}P7?ZW=tDFR{X+y1hhbq`)-~^r)7jYivo3_h=ucU;R8wVH)URJT` z$uM@ibqBRo{6d{YWH;quU`y2mTdqaLZL`QN;05&N&wX^H<5OQj_6R4I_q)ULnSTsK zdVP?uD<4E2XYOCA+JHkB;m5;n>;C~SA@_f2IB(v7pVACE-Et?K8Sb^M%Tji9MMK8r z>$?;-%8mp=hYh@OkOIW5<7SYn*sT$m7x@JHnjj4dn~k1%d2)2teEjnVURL0ylfF`U zN8WZtCbZ<~3w+AUI_gmOtF&OApCo7bgF$vva^vJOfHut|H&zYPg3>d7lQ|T5l8;T$ z^X*#4r~BSpmraVpqZ1zYx0Tk**dFDmU&?qEALrU9XOw|At-Di+8zHpRVKpzRdOZ)4 zdm|4VoVomrmsLA(F9GM@b(xH#nvnND{M>Twi~xvncbj@1z0xr96+YzP%&vTcjSSl= zSz)}PnH~me=?GpYSS3;BP#o7{P=5KkbHon&t#hx-7}P^aVd8`%n(|&-`5jTTVDSS2 zH9qM%e{i*O*y(SreLCwyohK?0aTP6V3QtNU#b3X%v)CUY=QtBP^cBJCMw z$_PfAx<;Klw&*Qtat~n}{@u==Y?QJr?kPB`*RL*hRJRe?*VcS9_CkodX1*Uc7}@Ax*D_tf3fT(pY05x$+VGN42`E zPL9F4&tFXqu zB=|V8_Vq%;fS2XCyWVo+${+;-Y8d%1*C}N7e~8pE*9kiHaC&dMCb(zKx1cP|XF%7m zEqXlPZ7Et|IW6_XnoutQj>=)if2B9FTImX#HSDLV_v2gz3>dHN4WN07nF8ziK)=y9 zgy=n7nOqbQ20Mn|c?mwKuaNVkNWYQ4vxt6nUU0HqEgH5-YOmOttRj#CqCs)4--1x2 zq~#yzB9oqTpcyI#GZ_empA6QD7NT#-j?|@QzBUsm}pqqAidAgu3K&`MDdN}m8b9rD(pGkpOWPTftVj5 z-^=(qsS3!1Lp0~;wR)G6;uXzgNO{R!HT&008LHq5HdDg&xMy$HA0$b3C z9v^wXtwTGS-k)yr6{an_+$~%G0$}+97ec36gwxaix>wn%I{tb}@D!Nl?+X1fLE)!&FFP%M}$gAq^#^hXQa}8!QB}+M>!;&hWX_eJ;z{_v*QD zY`SxA5wu)pwt#8BII%q1Z_jHTj}~G1{Ex$IVB6v}t+6sE3$b0Y zunltEL*e7me?ETEh&jeZ|0qDUp2%9Sk?`x){*Z10kxx>1rE)&dx*rz5g!c_!$M~rp zlHn*SyA$F#tD@jNh$}rIOCsm+)o@lPpxvEUcVtg?%Eipia4>f|ch1^;i|ONgn9qt^ zob)@^nSe=j!YhhJqBkDfNu7e0|LH>FflqoFtQAncj-QG2V5&Z2q4vmyl#kU0=?o4O z@c9hAzrngMc%6q-$L@+lJ5HQ&^-xts)xki@6~Lew&1_Z8WSv8eZP7e`3(~Okkdk2# zOm0@v-O&dBbnd@!CZ1afewoQYhTATk_-1}2S-b648F0}#T3FX_?7=$crg^$fyIN#; zfk$^ND~ZUchpjHpZMdy7WG1hDnXUM(9^Zs2(eA z$#Qu?gS<~`^=|%vU-mXn?}qNw9G}wKq_3Om(4dfcm8Ab4ecdWwIu!mlA;@I-P|Is~ z{sA$I6QiEU`vhlm)p(e}h_bkpS2td@5R;oru;O)XS$>|3WJS?+cHaso$saa#q$4)@ zYdy;XLYsa+VpS!u0&jyN(Luad`l{yr5x%QJ3(gb!Ucq~!^X7_*3wzY{Q$Bi;tXk9k zUsD&~M`{pfxA(Y&GMF)aNJ6|~KOcKupD(;BQHh>AWeo&*{rJR_R$`Lno%@b_?B@F> zqvU}ch%?46Sf8v5X1oQGEV__G>6WUZnd02@ir*|UM(1Z?orn^RTtIygl>GKltFP8# z5(hcu<3!JcOYE^Yudon!lSrkWEHTx`az46{U7*wd4nOd3_4sH;7y?dtyS=3Gq&WB^ z42^6+e7fVJKp`Vz`2!NETW%YN79+HcV9GeV0*rYjt}UYM2D5krBAe%S)4fbbW7mS+ zD_MrQ%(O!GCjK(gQ>F~8~Fr9QSR;_pNHe7EUcl9x8`V%pw(FiE1%?@z!25}er@|EFQUvV`ORnhB)E zba>e{@OTJ4S==IIu!3h27zzq&FnHZ)cp$fVspUJ<88KV2Latcw**9uHK)9vwtHk*D z*pD1xI~94YxWr$jY74KnYVn_N#1CH|ZSXZ&)45$Y@wPu#tG1zKXu=sxDfT)FDGa{J zyPE9O92Bw@Sh7gT_@dFV|FLTCNtdyzBtl92REIO9&{w6g$qPcW1=LA~Ca18%O9Ioz zYo8A4z2G0-W1W=wN)UD^Nr7nDx6MY9fSd7#$JeYi`C{P&7*g8KIkCF9eN=B!?`?K2toTc*a z%g*G){Uv)s3tlR@C$iTz8+_aKt|*uJ29%^IZ5}$KOm!vZ_w(sc8L@x6gcZA#O~~*0 z*-*8AIRCVh3guo1D=7#z#FX?m9-4<~B1&)2wCf{)PsMheDq{nU%74Ui=CMFS;lL01bt#aucfX8=QgMF> za_A~EaEit_OI)pz)5~hSNSPde>&k5PmN~7f<#{Ws3cwPT~TT-l{;TV0Tp;-SxM_V)iJS~mW~KsWxV?INT{Uc~2GSiCjm5bcO_NW=uoKjC4SS2YMfLJ{udhabD>x|iVeJm6dTU5V1+=hRIoF)LAxz#hpyG0S86`6Qm4p- z?`L6tkd){yKHu(~k9$sZ3Hbtca;Rw}oqk$P`>}TrV{>|gq=6iabhIWmWX`7Tz8<M=^VT6A7Ca6E*VhjL4by+wt_giggzPN zX#$HWuymUx*_4WiasGCZ1g3%U2$2ZNKP$>b%@XSS|@Z3%Sokp=e(PsGcZev_tU#X140M$#a?cYQy|>b^P0 zVkt^Cwr`4G>%Ghd1}`R@Jq{LE%|XV09Oa|TiJyRS(4a(Vie}wop!n6yN|~w#bA1S z{-o)5uD+?Wxn@Q`j{D|nW^;Slpb@4;?wp_aKM9oWY-+P=jPYIXn(#)8oi{nPDG}~D zeF+l^A-^Hv`6X4iS9Zmf^}OxOS$#9jsL8)~hF06`!sZ2mAxSf^umY-S^JFE59EC5o zJabpLq)PGuZBfw86aqjHcK)b#9umh{@VDb8l|VusSmA~O(h7g~as z6}qZ4#;p~kDlrL9o}I&bSTIUcu#7H5R^^_30l!y^ar-w*gESRye7d zzo_ZKY?OoeYSW`=IJ5a@LpO#%C6cYV@)l?d!u5TMl56IP@bJc~Py1#1%wyX(8-gdg zfwkyrh8uX2hWFC7A_^V@az6n3QAcdDjoqRCozEu0&4tp|A;-0KVV{>JlX&*BDH z4jmcl(v?IM%`b=znZlG`hiUVSXLFSw4?mJBt7#5{J4HMK*NEB&;}|i@ybV>C^Jb9@ z;0>veH8ic@IMf(@{&VtaEtk_X**%>lx<(F*cE{`uG5v-ljS8q+RJ{qVxg4#jhKuGY z)--qIIc@*ZT9)3IE|~ui4-H*R{m`v&aWid`}|6GIqqh!c%6%)O} zTvU+hG^9GHm%{QrpYodd1atJtvNeC5WS2jOZtKHueJB9y_tyTQc0B>aL>644rPVuu3v=d@y}-{a2rfMVH7#(nU*4Ind4zj*gom* z5(Y-?+pCX@tli~C4}zIO7lijR@>B=sV-1Iz72BM72`UWL6zYyI`0tDDw--Pxul4&x2{qYi`T5#@s)X@(pO>ilktqtgZt=Hn`N0+TQ;$Sbw^->)3P&_h zH)R}b+g1gg$+0CO7!qEUN5Za<1zM&0)E%(cCyD@L!ItUC1Oymio(~Lh%WwuYwVWoc z%YK@U(DAwuttnaZUdY~)zT0W|K>2Z0?BeYiBI$tbgECmUcXq{zULMzcGrJ-acSulj z`pJ>hGcjDdmMqUH@fPqZEi5cayV0g^D8ry`H_Wl8)xoJL`!Z0Pl4wREex>1Ewf@>u zGqer2e9QHOi_$Nx|H$;6E)Gn*{)rAAl>Zecc8C39^>;^mJo_Qsh{8j^LxNA=d(kON zCK6A^brvJZyW=SwuM2AqL%sM4F)Ew^v)ct9_KWrEH|mt&y(c`Eukjd1t&bVmt_ACs z_f@a(|N4~EZJG4VwhSMmZ!FREgbf)a+uhj17T{M=f&~O-#v3M_S$~Ooou6enu6FDR zk0R@4^?Q5@5ohq+88{D>?5T(qJ6~#%K1R*JWEzVcn7W1dX>=efzyeh>RQYtxPKVY) zTWClkH!|t%{5ID}P0wunhj=`D5;A0OPx4F+DtuSpIYH`vRC-ZxKbizV1%woC2cdno zJs{P(73@PDhqIRhrQ<)33As+g$JTHpiHqc2keFxP5cFu3jU2>fVaV{1Gcn?OuArT}2u_P7St-H%XFtu}ivo(q25uV;xYd*gNQcj&nq+mup+2w822hMQ;n7 z+3|&|%FF$)RRb>~>$({Qems)5trWmY+R)q)b2bRpF*S;=slw^m1yq+ z%bPRN%Ea1O+FW{PV2F;5_K=)+IbngSNX!Q`I}=t8N3@hL2P?LRudGzI-s5F#bl!q^ z!)R~xv#Fx*HnmuDzOf2_dEMc>8ENqA@Ame!o|pfvv+>G!JTx57`w)kBa$SvnY&csX zE600$=227;(yv=7)lhJR+dw+ZbK?}Ju{@PRA2 zB1||<#<=&@t<9|E_;*NG8hCN@q->^=2{FDWQRf8rj`!yw3xVK<8TnNj$2a{sD{qBe zPB*P!UF8rzAuQj~tVO$pFEy0K7Y|%C7ta=68^(LPZbpmsuO-!zdY3h-37Oq0PUZZ$ z<$jAP$dHD`{fY@YL_{x_$y)N=FUs^Yxn|{>(*9*9Mu`s_3UZYgLC5Dz48%BRt+krJ zXe+(X*S??>cDqQSk}cJRd_bGj59#g*^iq6iLtKGeI-LKc@o)4#6Y(Q{+%~BiEFsDQ?Ja^-SpKCLF!rz+b}9VwO_r@q*HPI%D`b}LGMNd`3Ir`R5m=MdIrE=Xh;3=mp+ zO+^6q5RzSgxj)PMG@2HTp;de{tj#LVBVpMroGM&VeBvXyqk2ne7_&{AD^DWzZehc= zMZbfWQ@FpOfw3lgSRp{GG(-Yy`s2b(8HG$WJ5aWFcvstFMYWlr9BEv|^Uf2eQJosgIAk&s@5s1qUzx@w&4r^v zZLrT-^|?@KX<|9Be4b5)rn5D%T-@(jAk8fOc<@W2mocp4 z+HHUh{I|1QMJ>5K#~T_t8&wjzMGQO@jcTi@iPAdAV~bd|dr?e%BWC(sTr_#Q62Lct zQXPfhoBY{$i5(vqhIB+kuNO?IoM2zG(IkFWoOmX2DmvHmwN4VPXOTH``SEe}Rql{? z;T!GNi7lbzn=gLh)O;(8_!z}SXd=Vj#1l-R+h2BVMnf+EIqy?U-|m0f6&0+wOu+q4 z9~}lcmYXFE2TgK@`jFgq@n zgnUK@1pnz76Z;=rLuqUa3VwDvyR|}=&Heq7zBWeVNofL6c;u@M*t2g4lH@4G;BHU? z{cxQsympWSRxIN16@WfW-&x~lW?r{45<)%E$|s+H`Ee4dxBBLo6om!;{>#Tc

}DScGWsK0|0V5b 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 L7;7i5u{-d8IoM$U literal 0 HcmV?d00001 diff --git a/man/figures/pointtrt.png b/man/figures/pointtrt.png new file mode 100644 index 0000000000000000000000000000000000000000..62b6dee73e4b3a2ee22367970f1dbde206748b05 GIT binary patch literal 34606 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 literal 0 HcmV?d00001 diff --git a/man/figures/survival.png b/man/figures/survival.png new file mode 100644 index 0000000000000000000000000000000000000000..7a2af400a67ae695bbc8a6e73aa6dd3c845be105 GIT binary patch literal 43332 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 literal 0 HcmV?d00001 diff --git a/man/figures/timevary.png b/man/figures/timevary.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a696579a436567ae4d85c6c24ecb5a5fb85600 GIT binary patch literal 65748 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≈cZxHUw-5)0W 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 literal 0 HcmV?d00001 diff --git a/man/figures/timevarysurvival.png b/man/figures/timevarysurvival.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c20be7b0510ff433397dcfd7c39873d2de25f6 GIT binary patch literal 72075 zcmdpehd2p5w9`E<{zOL*31S`r*UcJ6Al!a!q_2%`3)1-LQ$f}J9@01$KEU-hN$3?8|%xLSvlOOwMd{#&5s=T6Q?)&FZ zqS$0+5HlbzKM+n#)K*k&tgnwlFuoHTOXxk!B3%0DdY_W;0X7~#MWZgVA%n;;TKzLo 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 WCkdB%Eq(<2(b9n2F1=;*zknf literal 0 HcmV?d00001 diff --git a/man/ipsi.Rd b/man/ipsi.Rd new file mode 100644 index 00000000..9fcc91d2 --- /dev/null +++ b/man/ipsi.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shift.R +\name{ipsi} +\alias{ipsi} +\title{IPSI Function Factory} +\usage{ +ipsi(delta) +} +\arguments{ +\item{delta}{[\code{numeric(1)}]\cr +A risk ratio between 0 and Inf.} +} +\value{ +A shift function. +} +\description{ +A function factory that returns a shift function for increasing or decreasing +the probability of exposure when exposure is binary. +} +\examples{ +\donttest{ +data("iptwExWide", package = "twang") +a <- paste0("tx", 1:3) +baseline <- c("gender", "age") +tv <- list(c("use0"), c("use1"), c("use2")) +lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, + shift = ipsi(0.5), outcome_type = "continuous", folds = 2) +} +} +\seealso{ +\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} +} diff --git a/man/lmtp-package.Rd b/man/lmtp-package.Rd new file mode 100644 index 00000000..211ad080 --- /dev/null +++ b/man/lmtp-package.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/lmtp-package.R +\docType{package} +\name{lmtp-package} +\alias{lmtp} +\alias{lmtp-package} +\title{lmtp: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies} +\description{ +Non-parametric estimators for casual effects based on longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck \doi{10.1080/01621459.2021.1955691}, traditional point treatment, and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects can be calculated and relative risks and odds ratios may be calculated for binary outcomes. +} +\seealso{ +Useful links: +\itemize{ + \item \url{https://github.com/nt-williams/lmtp} + \item Report bugs at \url{https://github.com/nt-williams/lmtp/issues} +} + +} +\author{ +\strong{Maintainer}: Nicholas Williams \email{ntwilliams.personal@gmail.com} (\href{https://orcid.org/0000-0002-1378-4831}{ORCID}) [copyright holder] + +Authors: +\itemize{ + \item Iván Díaz \email{ild2005@med.cornell.edu} (\href{https://orcid.org/0000-0001-9056-2047}{ORCID}) [copyright holder] +} + +} +\keyword{internal} diff --git a/man/lmtp_contrast.Rd b/man/lmtp_contrast.Rd new file mode 100644 index 00000000..a1e4a9e0 --- /dev/null +++ b/man/lmtp_contrast.Rd @@ -0,0 +1,69 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/contrasts.R +\name{lmtp_contrast} +\alias{lmtp_contrast} +\title{Perform Contrasts of LMTP Fits} +\usage{ +lmtp_contrast(..., ref, type = c("additive", "rr", "or")) +} +\arguments{ +\item{...}{One or more objects of class lmtp.} + +\item{ref}{A reference value or another lmtp fit to compare all other fits against.} + +\item{type}{The contrasts of interest. Options are "additive" (the default), +"rr", and "or".} +} +\value{ +A list of class \code{lmtp_contrast} containing the following components: + +\item{type}{The type of contrast performed.} +\item{null}{The null hypothesis.} +\item{vals}{A dataframe containing the contrasts estimates, standard errors, and confidence intervals.} +\item{eifs}{Un-centered estimated influence functions for contrasts estimated.} +} +\description{ +Estimates contrasts of multiple LMTP fits compared to either a known reference value +or a reference LMTP fit. +} +\examples{ +\donttest{ + a <- c("A1", "A2") + nodes <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + y <- "Y" + + # mean population outcome + psi_null <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 1) + + # treatment rule, everyone is increased by 0.5 + d <- function(data, x) data[[x]] + 0.5 + psi_rule1 <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, + shift = d, folds = 1, mtp = TRUE) + + # treatment rule, everyone is decreased by 0.5 + d <- function(data, x) data[[x]] - 0.5 + psi_rule2 <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, + shift = d, folds = 1, mtp = TRUE) + + # Example 1.1 + # Additive effect of rule 1 compared to a known constant + lmtp_contrast(psi_rule1, ref = 0.9) + + # Example 1.2 + # Additive effect of rule 1 compared to the population mean outcome + lmtp_contrast(psi_rule1, ref = psi_null) + + # Example 1.3 + # Additive effects of rule 1 and 2 compared to the population mean outcome + lmtp_contrast(psi_rule1, psi_rule2, ref = psi_null) + + # Example 1.4 + # Relative risk of rule 1 compared to observed exposure + lmtp_contrast(psi_rule1, ref = psi_null, type = "rr") + + # Example 1.5 + # Odds of rule 1 compared to observed exposure + lmtp_contrast(psi_rule1, ref = psi_null, type = "or") +} +} diff --git a/man/lmtp_control.Rd b/man/lmtp_control.Rd new file mode 100644 index 00000000..2e1d10af --- /dev/null +++ b/man/lmtp_control.Rd @@ -0,0 +1,42 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/lmtp_control.R +\name{lmtp_control} +\alias{lmtp_control} +\title{Set LMTP Estimation Parameters} +\usage{ +lmtp_control( + .bound = 1e+05, + .trim = 0.999, + .learners_outcome_folds = 10, + .learners_trt_folds = 10, + .return_full_fits = FALSE +) +} +\arguments{ +\item{.bound}{[\code{numeric(1)}]\cr +Determines that maximum and minimum values (scaled) predictions +will be bounded by. The default is 1e-5, bounding predictions by 1e-5 and 0.9999.} + +\item{.trim}{[\code{numeric(1)}]\cr +Determines the amount the density ratios should be trimmed. +The default is 0.999, trimming the density ratios greater than the 0.999 percentile +to the 0.999 percentile. A value of 1 indicates no trimming.} + +\item{.learners_outcome_folds}{[\code{integer(1)}]\cr +The number of cross-validation folds for \code{learners_outcome}.} + +\item{.learners_trt_folds}{[\code{integer(1)}]\cr +The number of cross-validation folds for \code{learners_trt}.} + +\item{.return_full_fits}{[\code{logical(1)}]\cr +Return full SuperLearner fits? Default is \code{FALSE}, return only SuperLearner weights.} +} +\value{ +A list of parameters controlling the estimation procedure. +} +\description{ +Set LMTP Estimation Parameters +} +\examples{ +lmtp_control(.trim = 0.975) +} diff --git a/man/lmtp_ipw.Rd b/man/lmtp_ipw.Rd new file mode 100644 index 00000000..a63071d8 --- /dev/null +++ b/man/lmtp_ipw.Rd @@ -0,0 +1,286 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/estimators.R +\name{lmtp_ipw} +\alias{lmtp_ipw} +\title{LMTP IPW Estimator} +\usage{ +lmtp_ipw( + data, + trt, + outcome, + baseline = NULL, + time_vary = NULL, + cens = NULL, + shift = NULL, + shifted = NULL, + mtp = FALSE, + k = Inf, + id = NULL, + outcome_type = c("binomial", "continuous", "survival"), + learners = "SL.glm", + folds = 10, + weights = NULL, + control = lmtp_control() +) +} +\arguments{ +\item{data}{[\code{data.frame}]\cr +A \code{data.frame} in wide format containing all necessary variables +for the estimation problem. Must not be a \code{data.table}.} + +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} + +\item{outcome}{[\code{character}]\cr +The column name of the outcome variable. In the case of time-to-event +analysis, a vector containing the columns names of intermediate outcome variables and the final +outcome variable ordered by time. Only numeric values are allowed. If the outcome type +is binary, data should be coded as 0 and 1.} + +\item{baseline}{[\code{character}]\cr +An optional vector containing the column names of baseline covariates to be +included for adjustment at every time point.} + +\item{time_vary}{[\code{list}]\cr +A list the same length as the number of time points of observation with +the column names for new time-varying covariates introduced at each time point. The list +should be ordered following the time ordering of the model.} + +\item{cens}{[\code{character}]\cr +An optional vector of column names of censoring indicators the same +length as the number of time points of observation. If missingness in the outcome is +present or if time-to-event outcome, must be provided.} + +\item{shift}{[\code{closure}]\cr +A two argument function that specifies how treatment variables should be shifted. +See examples for how to specify shift functions for continuous, binary, and categorical exposures.} + +\item{shifted}{[\code{data.frame}]\cr +An optional data frame, the same as in \code{data}, but modified according +to the treatment policy of interest. If specified, \code{shift} is ignored.} + +\item{mtp}{[\code{logical(1)}]\cr +Is the intervention of interest a modified treatment policy? +Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} + +\item{k}{[\code{integer(1)}]\cr +An integer specifying how previous time points should be +used for estimation at the given time point. Default is \code{Inf}, +all time points.} + +\item{id}{[\code{character(1)}]\cr +An optional column name containing cluster level identifiers.} + +\item{outcome_type}{[\code{character(1)}]\cr +Outcome variable type (i.e., continuous, binomial, survival).} + +\item{learners}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +\bold{Only include candidate learners capable of binary classification}.} + +\item{folds}{[\code{integer(1)}]\cr +The number of folds to be used for cross-fitting.} + +\item{weights}{[\code{numeric(nrow(data))}]\cr +An optional vector containing sampling weights.} + +\item{control}{[\code{list()}]\cr +Output of \code{lmtp_control()}.} +} +\value{ +A list of class \code{lmtp} containing the following components: + +\item{estimator}{The estimator used, in this case "IPW".} +\item{theta}{The estimated population LMTP effect.} +\item{standard_error}{NA} +\item{low}{NA} +\item{high}{NA} +\item{shift}{The shift function specifying the treatment policy of interest.} +\item{density_ratios}{An n x Tau matrix of the estimated density ratios.} +\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold of density ratio estimation.} +} +\description{ +Inverse probability of treatment weighting estimator for the effects of traditional causal +effects and modified treatment policies for both point treatment and longitudinal data +with binary, continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +} +\details{ +\subsection{Should \code{mtp = TRUE}?}{ + +A modified treatment policy (MTP) is an intervention that depends +on the natural value of the exposure (the value that the treatment would have taken under no intervention). +This differs from other causal effects, +such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +by some amount, use \code{mtp = TRUE}}. +} +} +\examples{ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_ipw(ex1_dat, "A", "Y", "W", mtp = TRUE, shift = policy, + outcome_type = "continuous", folds = 2) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_ipw(sim_t4, A, "Y", time_vary = L, + shift = policy, folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_ipw(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + shift = policy, k = 0, folds = 2) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_ipw(sim_t4, A, "Y", time_vary = L, + k = 0, mtp = TRUE, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) \%in\% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_ipw(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_ipw(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_ipw(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_ipw(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_ipw(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} +} diff --git a/man/lmtp_sdr.Rd b/man/lmtp_sdr.Rd new file mode 100644 index 00000000..4108a841 --- /dev/null +++ b/man/lmtp_sdr.Rd @@ -0,0 +1,304 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/estimators.R +\name{lmtp_sdr} +\alias{lmtp_sdr} +\title{LMTP Sequential Doubly Robust Estimator} +\usage{ +lmtp_sdr( + data, + trt, + outcome, + baseline = NULL, + time_vary = NULL, + cens = NULL, + shift = NULL, + shifted = NULL, + k = Inf, + mtp = FALSE, + outcome_type = c("binomial", "continuous", "survival"), + id = NULL, + bounds = NULL, + learners_outcome = "SL.glm", + learners_trt = "SL.glm", + folds = 10, + weights = NULL, + control = lmtp_control() +) +} +\arguments{ +\item{data}{[\code{data.frame}]\cr +A \code{data.frame} in wide format containing all necessary variables +for the estimation problem. Must not be a \code{data.table}.} + +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} + +\item{outcome}{[\code{character}]\cr +The column name of the outcome variable. In the case of time-to-event +analysis, a vector containing the columns names of intermediate outcome variables and the final +outcome variable ordered by time. Only numeric values are allowed. If the outcome type +is binary, data should be coded as 0 and 1.} + +\item{baseline}{[\code{character}]\cr +An optional vector containing the column names of baseline covariates to be +included for adjustment at every time point.} + +\item{time_vary}{[\code{list}]\cr +A list the same length as the number of time points of observation with +the column names for new time-varying covariates introduced at each time point. The list +should be ordered following the time ordering of the model.} + +\item{cens}{[\code{character}]\cr +An optional vector of column names of censoring indicators the same +length as the number of time points of observation. If missingness in the outcome is +present or if time-to-event outcome, must be provided.} + +\item{shift}{[\code{closure}]\cr +A two argument function that specifies how treatment variables should be shifted. +See examples for how to specify shift functions for continuous, binary, and categorical exposures.} + +\item{shifted}{[\code{data.frame}]\cr +An optional data frame, the same as in \code{data}, but modified according +to the treatment policy of interest. If specified, \code{shift} is ignored.} + +\item{k}{[\code{integer(1)}]\cr +An integer specifying how previous time points should be +used for estimation at the given time point. Default is \code{Inf}, +all time points.} + +\item{mtp}{[\code{logical(1)}]\cr +Is the intervention of interest a modified treatment policy? +Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} + +\item{outcome_type}{[\code{character(1)}]\cr +Outcome variable type (i.e., continuous, binomial, survival).} + +\item{id}{[\code{character(1)}]\cr +An optional column name containing cluster level identifiers.} + +\item{bounds}{[\code{numeric(2)}]\cr +An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +the bounds will be taken as the minimum and maximum of the observed data. +Should be left as \code{NULL} if the outcome type is binary.} + +\item{learners_outcome}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} + +\item{learners_trt}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +\bold{Only include candidate learners capable of binary classification}.} + +\item{folds}{[\code{integer(1)}]\cr +The number of folds to be used for cross-fitting.} + +\item{weights}{[\code{numeric(nrow(data))}]\cr +An optional vector containing sampling weights.} + +\item{control}{[\code{list()}]\cr +Output of \code{lmtp_control()}.} +} +\value{ +A list of class \code{lmtp} containing the following components: + +\item{estimator}{The estimator used, in this case "SDR".} +\item{theta}{The estimated population LMTP effect.} +\item{standard_error}{The estimated standard error of the LMTP effect.} +\item{low}{Lower bound of the 95\% confidence interval of the LMTP effect.} +\item{high}{Upper bound of the 95\% confidence interval of the LMTP effect.} +\item{eif}{The estimated, un-centered, influence function of the estimate.} +\item{shift}{The shift function specifying the treatment policy of interest.} +\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +The mean of the first column is used for calculating theta.} +\item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} +\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold for the outcome regression.} +\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold of density ratio estimation.} +\item{outcome_type}{The outcome variable type.} +} +\description{ +Sequentially doubly robust estimator for the effects of traditional causal effects and +modified treatment policies for both point treatment and longitudinal data with binary, +continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +} +\details{ +\subsection{Should \code{mtp = TRUE}?}{ + +A modified treatment policy (MTP) is an intervention that depends +on the natural value of the exposure (the value that the treatment would have taken under no intervention). +This differs from other causal effects, +such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +by some amount, use \code{mtp = TRUE}}. +} +} +\examples{ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_sdr(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2, mtp = TRUE) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, + folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_sdr(sim_t4, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_sdr(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) \%in\% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_sdr(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_sdr( + iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2 + ) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_sdr(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_sdr(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sdr(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} +} diff --git a/man/lmtp_sub.Rd b/man/lmtp_sub.Rd new file mode 100644 index 00000000..3d64f177 --- /dev/null +++ b/man/lmtp_sub.Rd @@ -0,0 +1,273 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/estimators.R +\name{lmtp_sub} +\alias{lmtp_sub} +\title{LMTP Substitution Estimator} +\usage{ +lmtp_sub( + data, + trt, + outcome, + baseline = NULL, + time_vary = NULL, + cens = NULL, + shift = NULL, + shifted = NULL, + k = Inf, + outcome_type = c("binomial", "continuous", "survival"), + id = NULL, + bounds = NULL, + learners = "SL.glm", + folds = 10, + weights = NULL, + control = lmtp_control() +) +} +\arguments{ +\item{data}{[\code{data.frame}]\cr +A \code{data.frame} in wide format containing all necessary variables +for the estimation problem. Must not be a \code{data.table}.} + +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} + +\item{outcome}{[\code{character}]\cr +The column name of the outcome variable. In the case of time-to-event +analysis, a vector containing the columns names of intermediate outcome variables and the final +outcome variable ordered by time. Only numeric values are allowed. If the outcome type +is binary, data should be coded as 0 and 1.} + +\item{baseline}{[\code{character}]\cr +An optional vector containing the column names of baseline covariates to be +included for adjustment at every time point.} + +\item{time_vary}{[\code{list}]\cr +A list the same length as the number of time points of observation with +the column names for new time-varying covariates introduced at each time point. The list +should be ordered following the time ordering of the model.} + +\item{cens}{[\code{character}]\cr +An optional vector of column names of censoring indicators the same +length as the number of time points of observation. If missingness in the outcome is +present or if time-to-event outcome, must be provided.} + +\item{shift}{[\code{closure}]\cr +A two argument function that specifies how treatment variables should be shifted. +See examples for how to specify shift functions for continuous, binary, and categorical exposures.} + +\item{shifted}{[\code{data.frame}]\cr +An optional data frame, the same as in \code{data}, but modified according +to the treatment policy of interest. If specified, \code{shift} is ignored.} + +\item{k}{[\code{integer(1)}]\cr +An integer specifying how previous time points should be +used for estimation at the given time point. Default is \code{Inf}, +all time points.} + +\item{outcome_type}{[\code{character(1)}]\cr +Outcome variable type (i.e., continuous, binomial, survival).} + +\item{id}{[\code{character(1)}]\cr +An optional column name containing cluster level identifiers.} + +\item{bounds}{[\code{numeric(2)}]\cr +An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +the bounds will be taken as the minimum and maximum of the observed data. +Should be left as \code{NULL} if the outcome type is binary.} + +\item{learners}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} + +\item{folds}{[\code{integer(1)}]\cr +The number of folds to be used for cross-fitting.} + +\item{weights}{[\code{numeric(nrow(data))}]\cr +An optional vector containing sampling weights.} + +\item{control}{[\code{list()}]\cr +Output of \code{lmtp_control()}.} +} +\value{ +A list of class \code{lmtp} containing the following components: + +\item{estimator}{The estimator used, in this case "substitution".} +\item{theta}{The estimated population LMTP effect.} +\item{standard_error}{NA} +\item{low}{NA} +\item{high}{NA} +\item{shift}{The shift function specifying the treatment policy of interest.} +\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +The mean of the first column is used for calculating theta.} +\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold for the outcome regression.} +\item{outcome_type}{The outcome variable type.} +} +\description{ +G-computation estimator for the effects of traditional causal effects and +modified treatment policies for both point treatment and longitudinal data with binary, +continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +} +\examples{ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_sub(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, folds = 2) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_sub(sim_t4, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_sub(sim_t4, A, "Y", time_vary = L, k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) \%in\% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_sub(tmp, A, "Y", time_vary = L, shift = policy, k = 0, folds = 2) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_sub(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous") + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_sub(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_sub(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_sub(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1) +} +} diff --git a/man/lmtp_tmle.Rd b/man/lmtp_tmle.Rd new file mode 100644 index 00000000..f790bab0 --- /dev/null +++ b/man/lmtp_tmle.Rd @@ -0,0 +1,301 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/estimators.R +\name{lmtp_tmle} +\alias{lmtp_tmle} +\title{LMTP Targeted Maximum Likelihood Estimator} +\usage{ +lmtp_tmle( + data, + trt, + outcome, + baseline = NULL, + time_vary = NULL, + cens = NULL, + shift = NULL, + shifted = NULL, + k = Inf, + mtp = FALSE, + outcome_type = c("binomial", "continuous", "survival"), + id = NULL, + bounds = NULL, + learners_outcome = "SL.glm", + learners_trt = "SL.glm", + folds = 10, + weights = NULL, + control = lmtp_control() +) +} +\arguments{ +\item{data}{[\code{data.frame}]\cr +A \code{data.frame} in wide format containing all necessary variables +for the estimation problem. Must not be a \code{data.table}.} + +\item{trt}{[\code{character}] or [\code{list}]\cr +A vector containing the column names of treatment variables ordered by time. +Or, a list of vectors, the same length as the number of time points of observation. +Vectors should contain column names for the treatment variables at each time point. The list +should be ordered following the time ordering of the model.} + +\item{outcome}{[\code{character}]\cr +The column name of the outcome variable. In the case of time-to-event +analysis, a vector containing the columns names of intermediate outcome variables and the final +outcome variable ordered by time. Only numeric values are allowed. If the outcome type +is binary, data should be coded as 0 and 1.} + +\item{baseline}{[\code{character}]\cr +An optional vector containing the column names of baseline covariates to be +included for adjustment at every time point.} + +\item{time_vary}{[\code{list}]\cr +A list the same length as the number of time points of observation with +the column names for new time-varying covariates introduced at each time point. The list +should be ordered following the time ordering of the model.} + +\item{cens}{[\code{character}]\cr +An optional vector of column names of censoring indicators the same +length as the number of time points of observation. If missingness in the outcome is +present or if time-to-event outcome, must be provided.} + +\item{shift}{[\code{closure}]\cr +A two argument function that specifies how treatment variables should be shifted. +See examples for how to specify shift functions for continuous, binary, and categorical exposures.} + +\item{shifted}{[\code{data.frame}]\cr +An optional data frame, the same as in \code{data}, but modified according +to the treatment policy of interest. If specified, \code{shift} is ignored.} + +\item{k}{[\code{integer(1)}]\cr +An integer specifying how previous time points should be +used for estimation at the given time point. Default is \code{Inf}, +all time points.} + +\item{mtp}{[\code{logical(1)}]\cr +Is the intervention of interest a modified treatment policy? +Default is \code{FALSE}. If treatment variables are continuous this should be \code{TRUE}.} + +\item{outcome_type}{[\code{character(1)}]\cr +Outcome variable type (i.e., continuous, binomial, survival).} + +\item{id}{[\code{character(1)}]\cr +An optional column name containing cluster level identifiers.} + +\item{bounds}{[\code{numeric(2)}]\cr +An optional, ordered vector of the bounds for a continuous outcomes. If \code{NULL}, +the bounds will be taken as the minimum and maximum of the observed data. +Should be left as \code{NULL} if the outcome type is binary.} + +\item{learners_outcome}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the outcome regression. Default is \code{"SL.glm"}, a main effects GLM.} + +\item{learners_trt}{[\code{character}]\cr A vector of \code{SuperLearner} algorithms for estimation +of the exposure mechanism. Default is \code{"SL.glm"}, a main effects GLM. +\bold{Only include candidate learners capable of binary classification}.} + +\item{folds}{[\code{integer(1)}]\cr +The number of folds to be used for cross-fitting.} + +\item{weights}{[\code{numeric(nrow(data))}]\cr +An optional vector containing sampling weights.} + +\item{control}{[\code{list()}]\cr +Output of \code{lmtp_control()}.} +} +\value{ +A list of class \code{lmtp} containing the following components: + +\item{estimator}{The estimator used, in this case "TMLE".} +\item{theta}{The estimated population LMTP effect.} +\item{standard_error}{The estimated standard error of the LMTP effect.} +\item{low}{Lower bound of the 95\% confidence interval of the LMTP effect.} +\item{high}{Upper bound of the 95\% confidence interval of the LMTP effect.} +\item{eif}{The estimated, un-centered, influence function of the estimate.} +\item{shift}{The shift function specifying the treatment policy of interest.} +\item{outcome_reg}{An n x Tau + 1 matrix of outcome regression predictions. +The mean of the first column is used for calculating theta.} +\item{density_ratios}{An n x Tau matrix of the estimated, non-cumulative, density ratios.} +\item{fits_m}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold for the outcome regression.} +\item{fits_r}{A list the same length as \code{folds}, containing the fits at each time-point +for each fold of density ratio estimation.} +\item{outcome_type}{The outcome variable type.} +} +\description{ +Targeted maximum likelihood estimator for the effects of traditional causal effects and +modified treatment policies for both point treatment and longitudinal data with binary, +continuous, or time-to-event outcomes. Supports binary, categorical, and continuous exposures. +} +\details{ +\subsection{Should \code{mtp = TRUE}?}{ + +A modified treatment policy (MTP) is an intervention that depends +on the natural value of the exposure (the value that the treatment would have taken under no intervention). +This differs from other causal effects, +such as the average treatment effect (ATE), where an exposure would be increased (or decreased) deterministically. +\bold{If your intervention of interest adds, subtracts, or multiplies the observed treatment values +by some amount, use \code{mtp = TRUE}}. +} +} +\examples{ +\donttest{ + set.seed(56) + n <- 1000 + W <- rnorm(n, 10, 5) + A <- 23 + 5*W + rnorm(n) + Y <- 7.2*A + 3*W + rnorm(n) + ex1_dat <- data.frame(W, A, Y) + + # Example 1.1 + # Point treatment, continuous exposure, continuous outcome, no loss-to-follow-up + # Interested in the effect of a modified treatment policy where A is decreased by 15 + # units only among observations whose observed A was above 80. + # The true value under this intervention is about 513. + policy <- function(data, x) { + (data[[x]] > 80)*(data[[x]] - 15) + (data[[x]] <= 80)*data[[x]] + } + + lmtp_tmle(ex1_dat, "A", "Y", "W", shift = policy, + outcome_type = "continuous", folds = 2, mtp = TRUE) + + # Example 2.1 + # Longitudinal setting, time-varying continuous exposure bounded by 0, + # time-varying covariates, and a binary outcome with no loss-to-follow-up. + # Interested in the effect of a treatment policy where exposure decreases by + # one unit at every time point if an observations observed exposure is greater + # than or equal to 2. The true value under this intervention is about 0.305. + head(sim_t4) + + A <- c("A_1", "A_2", "A_3", "A_4") + L <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + policy <- function(data, trt) { + a <- data[[trt]] + (a - 1) * (a - 1 >= 1) + a * (a - 1 < 1) + } + + # BONUS: progressr progress bars! + progressr::handlers(global = TRUE) + + lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, + folds = 2, mtp = TRUE) + + # Example 2.2 + # The previous example assumed that the outcome (as well as the treatment variables) + # were directly affected by all other nodes in the past. In certain situations, + # domain specific knowledge may suggest otherwise. + # This can be controlled using the k argument. + lmtp_tmle(sim_t4, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 2.3 + # Using the same data as examples 2.1 and 2.2. + # Now estimating the effect of a dynamic modified treatment policy. + # creating a dynamic mtp that applies the shift function + # but also depends on history and the current time + policy <- function(data, trt) { + mtp <- function(data, trt) { + (data[[trt]] - 1) * (data[[trt]] - 1 >= 1) + data[[trt]] * (data[[trt]] - 1 < 1) + } + + # if its the first time point, follow the same mtp as before + if (trt == "A_1") return(mtp(data, trt)) + + # otherwise check if the time varying covariate equals 1 + ifelse( + data[[sub("A", "L", trt)]] == 1, + mtp(data, trt), # if yes continue with the policy + data[[trt]] # otherwise do nothing + ) + } + + lmtp_tmle(sim_t4, A, "Y", time_vary = L, mtp = TRUE, + k = 0, shift = policy, folds = 2) + + # Example 2.4 + # Using the same data as examples 2.1, 2.2, and 2.3, but now treating the exposure + # as an ordered categorical variable. To account for the exposure being a + # factor we just need to modify the shift function (and the original data) + # so as to respect this. + tmp <- sim_t4 + for (i in A) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) + } + + policy <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) \%in\% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) + } + + lmtp_tmle(tmp, A, "Y", time_vary = L, shift = policy, + k = 0, folds = 2, mtp = TRUE) + + # Example 3.1 + # Longitudinal setting, time-varying binary treatment, time-varying covariates + # and baseline covariates with no loss-to-follow-up. Interested in a "traditional" + # causal effect where treatment is set to 1 at all time points for all observations. + if (require("twang")) { + data("iptwExWide", package = "twang") + + A <- paste0("tx", 1:3) + W <- c("gender", "age") + L <- list(c("use0"), c("use1"), c("use2")) + + lmtp_tmle(iptwExWide, A, "outcome", baseline = W, time_vary = L, + shift = static_binary_on, outcome_type = "continuous", + mtp = FALSE, folds = 2) + } + + # Example 4.1 + # Longitudinal setting, time-varying continuous treatment, time-varying covariates, + # binary outcome with right censoring. Interested in the mean population outcome under + # the observed exposures in a hypothetical population with no loss-to-follow-up. + head(sim_cens) + + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + C <- c("C1", "C2") + Y <- "Y" + + lmtp_tmle(sim_cens, A, Y, time_vary = L, cens = C, shift = NULL, folds = 2) + + # Example 5.1 + # Time-to-event analysis with a binary time-invariant exposure. Interested in + # the effect of treatment being given to all observations on the cumulative + # incidence of the outcome. + # For a survival problem, the outcome argument now takes a vector of outcomes + # if an observation experiences the event prior to the end of follow-up, all future + # outcome nodes should be set to 1 (i.e., last observation carried forward). + A <- "trt" + Y <- paste0("Y.", 1:6) + C <- paste0("C.", 0:5) + W <- c("W1", "W2") + + lmtp_tmle(sim_point_surv, A, Y, W, cens = C, folds = 2, + shift = static_binary_on, outcome_type = "survival") + + # Example 6.1 + # Intervening on multiple exposures simultaneously. Interested in the effect of + # a modified treatment policy where variable D1 is decreased by 0.1 units and + # variable D2 is decreased by 0.5 units simultaneously. + A <- list(c("D1", "D2")) + W <- paste0("C", 1:3) + Y <- "Y" + + d <- function(data, a) { + out = list( + data[[a[1]]] - 0.1, + data[[a[2]]] - 0.5 + ) + setNames(out, a) + } + + lmtp_tmle(multivariate_data, A, Y, W, shift = d, + outcome_type = "continuous", folds = 1, mtp = TRUE) +} +} diff --git a/man/multivariate_data.Rd b/man/multivariate_data.Rd new file mode 100644 index 00000000..41d7cd36 --- /dev/null +++ b/man/multivariate_data.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{multivariate_data} +\alias{multivariate_data} +\title{Simulated Multivariate Exposure Data} +\format{ +A data frame with 2000 rows and 6 variables: +\describe{ +\item{C1}{Continuous baseline variable.} +\item{C2}{Continuous baseline variable.} +\item{C3}{Continuous baseline variable.} +\item{D1}{Treatment variable one at baseline.} +\item{D2}{Treatment variable two at baseline.} +\item{Y}{Continuous outcome} +} +} +\usage{ +multivariate_data +} +\description{ +A dataset with a continuous outcome, three baseline covariates, +and two treatment variables. +} +\keyword{datasets} diff --git a/man/reexports.Rd b/man/reexports.Rd new file mode 100644 index 00000000..824a6293 --- /dev/null +++ b/man/reexports.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/tidy.R +\docType{import} +\name{reexports} +\alias{reexports} +\alias{tidy} +\title{Objects exported from other packages} +\keyword{internal} +\description{ +These objects are imported from other packages. Follow the links +below to see their documentation. + +\describe{ + \item{generics}{\code{\link[generics]{tidy}}} +}} + diff --git a/man/sim_cens.Rd b/man/sim_cens.Rd new file mode 100644 index 00000000..9222d6e4 --- /dev/null +++ b/man/sim_cens.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{sim_cens} +\alias{sim_cens} +\title{Simulated Longitudinal Data With Censoring} +\format{ +A data frame with 1000 rows and 10 variables: +\describe{ +\item{L1}{Time varying covariate time 1} +\item{A1}{Treatment node at time 1, effected by L_1} +\item{C1}{Censoring indicator that the observation is observed after time 1} +\item{L2}{Time varying covariate at time 2, effected by L_1 and A_1} +\item{A2}{Treatment node at time 2, effected by L_2 and A_1} +\item{C2}{Censoring indicator that the observation is observed after time 2} +\item{Y}{Binary outcome at time 3, effected by L_2 and A_2} +} +} +\usage{ +sim_cens +} +\description{ +A dataset with a binary outcome, two time varying treatment nodes, +two time varying covariates, and two censoring indicators. +} +\keyword{datasets} diff --git a/man/sim_point_surv.Rd b/man/sim_point_surv.Rd new file mode 100644 index 00000000..9698e75b --- /dev/null +++ b/man/sim_point_surv.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{sim_point_surv} +\alias{sim_point_surv} +\title{Simulated Point-treatment Survival Data} +\format{ +A data frame with 2000 rows and 16 variables: +\describe{ +\item{W1}{Binary baseline variable.} +\item{W2}{Categorical baseline variable.} +\item{trt}{Binary treatment variable.} +\item{C.0}{Censoring indicator that the observation is observed future time points.} +\item{Y.1}{Outcome node at time 1.} +\item{C.1}{Censoring indicator that the observation is observed future time points.} +\item{Y.2}{Outcome node at time 2.} +\item{C.2}{Censoring indicator that the observation is observed future time points.} +\item{Y.3}{Outcome node at time 3.} +\item{C.3}{Censoring indicator that the observation is observed future time points.} +\item{Y.4}{Outcome node at time 4.} +\item{C.4}{Censoring indicator that the observation is observed future time points.} +\item{Y.5}{Outcome node at time 5.} +\item{C.5}{Censoring indicator that the observation is observed future time points.} +\item{Y.6}{Final outcome node.} +} +} +\usage{ +sim_point_surv +} +\description{ +A dataset with a time-to-event outcome, two baseline nodes, a binary +point treatment, six past-time outcome nodes, and six censoring indicators. +} +\keyword{datasets} diff --git a/man/sim_t4.Rd b/man/sim_t4.Rd new file mode 100644 index 00000000..0fc7f56c --- /dev/null +++ b/man/sim_t4.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{sim_t4} +\alias{sim_t4} +\title{Simulated Longitudinal Data} +\format{ +A data frame with 5000 rows and 10 variables: +\describe{ +\item{ID}{observation ID} +\item{L_1}{Time varying covariate time 1} +\item{A_1}{Treatment node at time 1, effected by L_1} +\item{L_2}{Time varying covariate time 1, effected by L_1 and A_1} +\item{A_2}{Treatment node at time 2, effected by L_2 and A_1} +\item{L_3}{Time varying covariate time 1, effected by L_2 and A_2} +\item{A_3}{Treatment node at time 3, effected by L_3 and A_2} +\item{L_4}{Time varying covariate time 1, effected by L_3 and A_3} +\item{A_4}{Treatment node at time 3, effected by L_4 and A_3} +\item{Y}{Binary outcome at time 5, effected by L_4 and A_4} +} +} +\usage{ +sim_t4 +} +\description{ +A dataset with a binary outcome, four time varying treatment nodes, +and four time varying covariates. +} +\keyword{datasets} diff --git a/man/sim_timevary_surv.Rd b/man/sim_timevary_surv.Rd new file mode 100644 index 00000000..a0f525a3 --- /dev/null +++ b/man/sim_timevary_surv.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{sim_timevary_surv} +\alias{sim_timevary_surv} +\title{Simulated Time-varying Survival Data} +\format{ +A data frame with 500 rows and 11 variables: +\describe{ +\item{L0.a}{Continuous baseline variable.} +\item{L0.b}{Time varying covariate at baseline.} +\item{L0.c}{Time varying covariate at baseline.} +\item{A0}{Treatment variable at baseline} +\item{C0}{Censoring indicator that the observation is observed future time points.} +\item{L1.a}{Time varying covariate at time 1.} +\item{L1.b}{Time varying covariate at time 1.} +\item{Y1}{Outcome node at time 1.} +\item{A1}{Treatment variable at time 1.} +\item{C1}{Censoring indicator that the observation is observed future time points.} +\item{Y2}{Final outcome node.} +} +} +\usage{ +sim_timevary_surv +} +\description{ +A dataset with a time-to-event outcome, one baseline nodes, two time-varying +covariates, a binary time-varying treatment, two outcome nodes, +and two censoring indicators. Data-generating mechanism taken from +Lendle, Schwab, Petersen, and van der Laan (\url{https://www.jstatsoft.org/article/view/v081i01}). +} +\keyword{datasets} diff --git a/man/static_binary_off.Rd b/man/static_binary_off.Rd new file mode 100644 index 00000000..f522e398 --- /dev/null +++ b/man/static_binary_off.Rd @@ -0,0 +1,33 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shift.R +\name{static_binary_off} +\alias{static_binary_off} +\title{Turn All Treatment Nodes Off} +\usage{ +static_binary_off(data, trt) +} +\arguments{ +\item{data}{A dataframe containing the treatment variables.} + +\item{trt}{The name of the current treatment variable.} +} +\value{ +A dataframe with all treatment nodes set to 0. +} +\description{ +A pre-packaged shift function for use with provided estimators when the exposure is binary. +Used to estimate the population intervention effect when all treatment variables are set to 0. +} +\examples{ +\donttest{ +data("iptwExWide", package = "twang") +a <- paste0("tx", 1:3) +baseline <- c("gender", "age") +tv <- list(c("use0"), c("use1"), c("use2")) +lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, + shift = static_binary_off, outcome_type = "continuous", folds = 2) +} +} +\seealso{ +\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} +} diff --git a/man/static_binary_on.Rd b/man/static_binary_on.Rd new file mode 100644 index 00000000..73fcd521 --- /dev/null +++ b/man/static_binary_on.Rd @@ -0,0 +1,33 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shift.R +\name{static_binary_on} +\alias{static_binary_on} +\title{Turn All Treatment Nodes On} +\usage{ +static_binary_on(data, trt) +} +\arguments{ +\item{data}{A dataframe containing the treatment variables.} + +\item{trt}{The name of the current treatment variable.} +} +\value{ +A dataframe with all treatment nodes set to 1. +} +\description{ +A pre-packaged shift function for use with provided estimators when the exposure is binary. +Used to estimate the population intervention effect when all treatment variables are set to 1. +} +\examples{ +\donttest{ +data("iptwExWide", package = "twang") +a <- paste0("tx", 1:3) +baseline <- c("gender", "age") +tv <- list(c("use0"), c("use1"), c("use2")) +lmtp_sdr(iptwExWide, a, "outcome", baseline = baseline, time_vary = tv, + shift = static_binary_on, outcome_type = "continuous", folds = 2) +} +} +\seealso{ +\code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, \code{\link[=lmtp_sub]{lmtp_sub()}}, \code{\link[=lmtp_ipw]{lmtp_ipw()}} +} diff --git a/man/tidy.lmtp.Rd b/man/tidy.lmtp.Rd new file mode 100644 index 00000000..687bcfae --- /dev/null +++ b/man/tidy.lmtp.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/tidy.R +\name{tidy.lmtp} +\alias{tidy.lmtp} +\title{Tidy a(n) lmtp object} +\usage{ +\method{tidy}{lmtp}(x, ...) +} +\arguments{ +\item{x}{A \code{lmtp} object produced by a call to \code{\link[=lmtp_tmle]{lmtp_tmle()}}, \code{\link[=lmtp_sdr]{lmtp_sdr()}}, +\code{\link[=lmtp_sub]{lmtp_sub()}}, or \code{\link[=lmtp_ipw]{lmtp_ipw()}}.} + +\item{...}{Unused, included for generic consistency only.} +} +\description{ +Tidy a(n) lmtp object +} +\examples{ +\donttest{ +a <- c("A1", "A2") +nodes <- list(c("L1"), c("L2")) +cens <- c("C1", "C2") +y <- "Y" +fit <- lmtp_tmle(sim_cens, a, y, time_vary = nodes, cens = cens, shift = NULL, folds = 2) +tidy(fit) +} + +} diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 00000000..7355cc47 --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(lmtp) + +test_check("lmtp") diff --git a/tests/testthat/test-censoring.R b/tests/testthat/test-censoring.R new file mode 100644 index 00000000..c7b2ae1c --- /dev/null +++ b/tests/testthat/test-censoring.R @@ -0,0 +1,19 @@ +context("Fidelity of estimates with censoring") + +A <- c("A1", "A2") +L <- list(c("L1"), c("L2")) +C <- c("C1", "C2") +truth <- 0.8 + +sub <- sw(lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) +ipw <- sw(lmtp_ipw(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) +tmle <- sw(lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) +sdr <- sw(lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = C, k = 0, shift = NULL, folds = 1)) + +# tests +test_that("estimator fidelity with censoring", { + expect_equal(truth, sub$theta, tolerance = 0.15) + expect_equal(truth, ipw$theta, tolerance = 0.15) + expect_equal(truth, tmle$theta, tolerance = 0.15) + expect_equal(truth, sdr$theta, tolerance = 0.15) +}) diff --git a/tests/testthat/test-checks.R b/tests/testthat/test-checks.R new file mode 100644 index 00000000..e8d20622 --- /dev/null +++ b/tests/testthat/test-checks.R @@ -0,0 +1,179 @@ +context("Argument checks") + +test_that("'data' is a 'data.frame'", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(list(), A, "tmp_lmtp_stack_indicator", time_vary = L, cens = cens), + "Assertion on 'data' failed: Must be of type 'data.frame', not 'list'." + ) + + sim_cens <- data.table::as.data.table(sim_cens) + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'data' failed: Must be a 'data.frame', not a 'data.table'." + ) +}) + +test_that("No uncensored missing data", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + sim_cens$A2 <- NA_real_ + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'data' failed: Missing data found in treatment and/or covariate nodes for uncensored observations." + ) +}) + +test_that("Reserved variables", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + sim_cens$tmp_lmtp_stack_indicator <- sim_cens$Y + + expect_error( + lmtp_sub(sim_cens, A, "tmp_lmtp_stack_indicator", time_vary = L, cens = cens), + "Assertion on 'data' failed: 'lmtp_id', 'tmp_lmtp_stack_indicator', and 'tmp_lmtp_scaled_outcome' are reserved variable names." + ) +}) + +test_that("Incorrect folds", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 0), + "Assertion on 'folds' failed: Element 1 is not >= 1." + ) +}) + +test_that("Variables dont exist", { + A <- c("A", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'c(unlist(trt), outcome, baseline, unlist(time_vary), cens, id)' failed: Must be a subset of {'L1','A1','C1','L2','A2','C2','Y'}, but has additional elements {'A'}.", + fixed = TRUE + ) +}) + +test_that("Time_vary is a list", { + A <- c("A1", "A2") + L <- c("L1", "L2") + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'time_vary' failed: Must be of type 'list' (or 'NULL'), not 'character'.", + fixed = TRUE + ) +}) + +test_that("Variable length mismatch", { + A <- c("A1") + L <- c("L1", "L2") + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'cens' failed: Must have length 1, but has length 2." + ) +}) + +test_that("No outcome variation changes learners", { + x <- check_variation(rep(0.5, 10), "SL.glm") + y <- "SL.mean" + expect_equal(x, y) +}) + +test_that("Only 0 and 1 in 'outcome' when binary or surival", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + sim_cens$Y <- sample(c(3, 4), nrow(sim_cens), replace = TRUE) + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens), + "Assertion on 'data' failed: Only 0 and 1 allowed in outcome variables if 'outcome_type' set to binomial or survival." + ) +}) + +test_that("Issues with 'outcome_type' being or not being survival", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + + expect_error( + lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, outcome_type = "survival"), + "Assertion on 'outcome' failed: Must have length >= 2, but has length 1." + ) + + A <- "trt" + Y <- paste0("Y.", 1:6) + cens <- paste0("C.", 0:5) + W <- c("W1", "W2") + + expect_error( + lmtp_ipw(sim_point_surv, A, Y, W, cens = cens, shift = static_binary_on), + "Assertion on 'outcome' failed: Must have length 1, but has length 6." + ) +}) + +test_that("Issues with 'shift' function and providing 'shifted' data", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + shifted <- shift_data(sim_cens, A, cens, function(data, trt) data[[trt]] + 0.5) + shifted$L1 <- 1 + + expect_error( + lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shift = function(data, trt, extra) data[[trt]] + 0.5), + "Assertion on 'shift' failed: Must have exactly 2 formal arguments, but has 3." + ) + + expect_error( + lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shifted = shifted), + "Assertion on 'shifted' failed: The only columns that can be different between `data` and `shifted` are those indicated in `trt` and `cens`." + ) + + shifted <- shift_data(sim_cens, A, NULL, function(data, trt) data[[trt]] + 0.5) + expect_error( + lmtp_tmle(sim_cens, A, "Y", time_vary = L, cens = cens, shifted = shifted), + "Assertion on 'shifted' failed: Censoring variables should be 1 in 'shifted'." + ) +}) + +test_that("Contrast assertions", { + A <- c("A1", "A2") + L <- list(c("L1"), c("L2")) + cens <- c("C1", "C2") + + fit <- lmtp_sub(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1) + expect_error( + lmtp_contrast(fit, ref = 0.1), + "Assertion on 'fits' failed: Contrasts not implemented for substitution/IPW estimators." + ) + + fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1) + expect_error( + lmtp_contrast(fit, ref = c(0.1, 0.2)), + "Assertion on 'ref' failed: Must either be a single numeric value or another lmtp object." + ) + + expect_error( + lmtp_contrast(fit, "Not lmtp object", ref = 0.1), + "Assertion on 'fits' failed: Objects must be of type 'lmtp'." + ) + + fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1, outcome_type = "continuous") + expect_error( + lmtp_contrast(fit, ref = 0.1, type = "rr"), + "Assertion on 'type' failed: 'rr' specified but one or more outcome types are not 'binomial' or 'survival'." + ) +}) diff --git a/tests/testthat/test-dynamic.R b/tests/testthat/test-dynamic.R new file mode 100644 index 00000000..94bf0c2d --- /dev/null +++ b/tests/testthat/test-dynamic.R @@ -0,0 +1,56 @@ +dynamic_vec <- function(data, trt) { + # the function should either be vectorized or iterate over the rows + if (trt == "A1") { # if the first time point set to 1 + return(rep(1, nrow(data))) + } else { # a vectorized version + (data[["L"]] > 0)*1 + (data[["L"]] <= 0)*0 # else return 1 or 0 based on L + } +} + +time_vary_on <- function(data, trt) { + if (trt == "A1") return(rep(1, nrow(data))) + else return(rep(0, nrow(data))) +} + +# test adapted from the ltmle package vignette for a dynamic intervention example with censoring +rexpit <- function(x) rbinom(n = length(x), size = 1, prob = plogis(x)) +n <- 10000 +W <- rnorm(n) +A1 <- rexpit(W) +C1 <- rexpit(0.6 * W - 0.5 * A1) +uncensored <- C1 == 1 +L <- A2 <- C2 <- Y <- rep(NA, n) +L[uncensored] <- (0.3 * W[uncensored] + 0.2 * A1[uncensored] + rnorm(sum(uncensored))) +A2[uncensored] <- rexpit(W[uncensored] + A1[uncensored] + L[uncensored]) +C2[uncensored] <- 1 +C2[!uncensored] <- 0 +Y[uncensored] <- rexpit(W[uncensored] - 0.6 * A1[uncensored] + L[uncensored] - 0.8 * A2[uncensored]) +sim <- data.frame(W, A1, C1, L, A2, C2, Y) +a <- c("A1", "A2") +baseline <- "W" +cens <- c("C1", "C2") +nodes <- list(c(NULL), c("L")) + +# truth = 0.308 +tml.stc <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = static_binary_on, folds = 1)) + +# truth = 0.528 +sdr.stc <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = static_binary_off, folds = 1)) + +# truth = 0.433 +tml.tv <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = time_vary_on, folds = 1)) +sdr.tv <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = time_vary_on, folds = 1)) + +# time varying and covariate dynamic +# truth = 0.345 +tml.dyn <- sw(lmtp_tmle(sim, a, "Y", baseline, nodes, cens, shift = dynamic_vec, folds = 1)) +sdr.dyn <- sw(lmtp_sdr(sim, a, "Y", baseline, nodes, cens, shift = dynamic_vec, folds = 1)) + +test_that("Dynamic intervention fidelity", { + expect_equal(0.308, tml.stc$theta, tolerance = 0.1) + expect_equal(0.528, sdr.stc$theta, tolerance = 0.1) + expect_equal(0.433, tml.tv$theta, tolerance = 0.1) + expect_equal(0.433, sdr.tv$theta, tolerance = 0.1) + expect_equal(0.345, tml.dyn$theta, tolerance = 0.1) + expect_equal(0.345, sdr.dyn$theta, tolerance = 0.1) +}) diff --git a/tests/testthat/test-node-list.txt b/tests/testthat/test-node-list.txt new file mode 100644 index 00000000..290b12a5 --- /dev/null +++ b/tests/testthat/test-node-list.txt @@ -0,0 +1,243 @@ +> a <- c("A_1", "A_2", "A_3", "A_4") +> bs <- c("W") +> nodes <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) +> create_node_list(a, 4, nodes, baseline = NULL, k = NULL) +$trt +$trt[[1]] +[1] "L_1" "A_1" + +$trt[[2]] +[1] "L_1" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "L_1" "A_1" + +$outcome[[2]] +[1] "L_1" "A_1" "L_2" "A_2" + +$outcome[[3]] +[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" + +$outcome[[4]] +[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, baseline = NULL, k = Inf) +$trt +$trt[[1]] +[1] "L_1" "A_1" + +$trt[[2]] +[1] "L_1" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "L_1" "A_1" + +$outcome[[2]] +[1] "L_1" "A_1" "L_2" "A_2" + +$outcome[[3]] +[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" + +$outcome[[4]] +[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, baseline = NULL, k = 0) +$trt +$trt[[1]] +[1] "L_1" "A_1" + +$trt[[2]] +[1] "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "L_1" "A_1" + +$outcome[[2]] +[1] "L_2" "A_2" + +$outcome[[3]] +[1] "L_3" "A_3" + +$outcome[[4]] +[1] "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, baseline = NULL, k = 1) +$trt +$trt[[1]] +[1] "L_1" "A_1" + +$trt[[2]] +[1] "L_1" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "L_2" "A_1" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "L_3" "A_2" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "L_1" "A_1" + +$outcome[[2]] +[1] "L_1" "A_1" "L_2" "A_2" + +$outcome[[3]] +[1] "L_2" "A_2" "L_3" "A_3" + +$outcome[[4]] +[1] "L_3" "A_3" "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, baseline = NULL, k = 2) +$trt +$trt[[1]] +[1] "L_1" "A_1" + +$trt[[2]] +[1] "L_1" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "L_1" "A_1" + +$outcome[[2]] +[1] "L_1" "A_1" "L_2" "A_2" + +$outcome[[3]] +[1] "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" + +$outcome[[4]] +[1] "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, bs, k = 0) +$trt +$trt[[1]] +[1] "W" "L_1" "A_1" + +$trt[[2]] +[1] "W" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "W" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "W" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "W" "L_1" "A_1" + +$outcome[[2]] +[1] "W" "L_2" "A_2" + +$outcome[[3]] +[1] "W" "L_3" "A_3" + +$outcome[[4]] +[1] "W" "L_4" "A_4" + + + +> create_node_list(a, 4, nodes, bs, k = Inf) +$trt +$trt[[1]] +[1] "W" "L_1" "A_1" + +$trt[[2]] +[1] "W" "L_1" "L_2" "A_1" "A_2" + +$trt[[3]] +[1] "W" "L_1" "L_2" "A_1" "L_3" "A_2" "A_3" + +$trt[[4]] +[1] "W" "L_1" "L_2" "A_1" "L_3" "A_2" "L_4" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "W" "L_1" "A_1" + +$outcome[[2]] +[1] "W" "L_1" "A_1" "L_2" "A_2" + +$outcome[[3]] +[1] "W" "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" + +$outcome[[4]] +[1] "W" "L_1" "A_1" "L_2" "A_2" "L_3" "A_3" "L_4" "A_4" + + + +> create_node_list(a, 4, NULL, bs, k = Inf) +$trt +$trt[[1]] +[1] "W" "A_1" + +$trt[[2]] +[1] "W" "A_1" "A_2" + +$trt[[3]] +[1] "W" "A_1" "A_2" "A_3" + +$trt[[4]] +[1] "W" "A_1" "A_2" "A_3" "A_4" + + +$outcome +$outcome[[1]] +[1] "W" "A_1" + +$outcome[[2]] +[1] "W" "A_1" "A_2" + +$outcome[[3]] +[1] "W" "A_1" "A_2" "A_3" + +$outcome[[4]] +[1] "W" "A_1" "A_2" "A_3" "A_4" + + + diff --git a/tests/testthat/test-node_list.R b/tests/testthat/test-node_list.R new file mode 100644 index 00000000..5622bd97 --- /dev/null +++ b/tests/testthat/test-node_list.R @@ -0,0 +1,33 @@ +context("Node list creation") + +test_that("create proper node lists, t > 1", { + verify_output(test_path("test-node-list.txt"), { + a <- c("A_1", "A_2", "A_3", "A_4") + bs <- c("W") + nodes <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + + # k = NULL + create_node_list(a, 4, nodes, baseline = NULL, k = NULL) + + # k = Inf + create_node_list(a, 4, nodes, baseline = NULL, k = Inf) + + # k = 0 + create_node_list(a, 4, nodes, baseline = NULL, k = 0) + + # k = 1 + create_node_list(a, 4, nodes, baseline = NULL, k = 1) + + # k = 2 + create_node_list(a, 4, nodes, baseline = NULL, k = 2) + + # Markov + create_node_list(a, 4, nodes, bs, k = 0) + + # Non-Markov with baseline + create_node_list(a, 4, nodes, bs, k = Inf) + + # NULL time-varying + create_node_list(a, 4, NULL, bs, k = Inf) + }) +}) diff --git a/tests/testthat/test-point_treatment.R b/tests/testthat/test-point_treatment.R new file mode 100644 index 00000000..638e103b --- /dev/null +++ b/tests/testthat/test-point_treatment.R @@ -0,0 +1,27 @@ +context("Fidelity of estimators for a point treatment") + +set.seed(543523) + +n <- 1e4 +W1 <- rbinom(n, size = 1, prob = 0.5) +W2 <- rbinom(n, size = 1, prob = 0.65) +A <- rbinom(n, size = 1, prob = plogis(-0.4 + 0.2 * W2 + 0.15 * W1)) +Y.1 <-rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) +Y.0 <- rbinom(n, size = 1, prob = plogis(-1 + 0 - 0.1 * W1 + 0.3 * W2)) + +Y <- Y.1 * A + Y.0 * (1 - A) +tmp <- data.frame(W1, W2, A, Y, Y.1, Y.0) +truth <- mean(tmp$Y.1) + +sub <- lmtp_sub(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) +ipw <- lmtp_ipw(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) +tmle <- lmtp_tmle(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) +sdr <- lmtp_sdr(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, folds = 1) + +# tests +test_that("point treatment fidelity", { + expect_equal(truth, sub$theta, tolerance = 0.025) + expect_equal(truth, ipw$theta, tolerance = 0.025) + expect_equal(truth, tmle$theta, tolerance = 0.025) + expect_equal(truth, sdr$theta, tolerance = 0.025) +}) diff --git a/tests/testthat/test-shifted.R b/tests/testthat/test-shifted.R new file mode 100644 index 00000000..b85f90ba --- /dev/null +++ b/tests/testthat/test-shifted.R @@ -0,0 +1,36 @@ +context("Fidelity of estimates with shifted data supplied") + +a <- c("A1", "A2") +nodes <- list(c("L1"), c("L2")) +cens <- c("C1", "C2") +truth <- 0.88 + +sc <- shift_data(sim_cens, a, cens, function(data, trt) data[[trt]] + 0.5) + +sub <- + sw(lmtp_sub(sim_cens, a, "Y", nodes, baseline = NULL, + cens, k = 0, shifted = sc, + outcome_type = "binomial", + folds = 2)) + +ipw <- + sw(lmtp_ipw(sim_cens, a, "Y", NULL, nodes, + cens, k = 0, shifted = sc, folds = 2, mtp = TRUE)) + +tmle <- + sw(lmtp_tmle(sim_cens, a, "Y", nodes, baseline = NULL, + cens, k = 0, shifted = sc, + outcome_type = "binomial", folds = 2, mtp = TRUE)) + +sdr <- + sw(lmtp_sdr(sim_cens, a, "Y", nodes, baseline = NULL, + cens, k = 0, shifted = sc, + outcome_type = "binomial", folds = 2, mtp = TRUE)) + +# tests +test_that("estimator fidelity with shifted data supplied", { + expect_equal(truth, sub$theta, tolerance = 0.05) + expect_equal(truth, ipw$theta, tolerance = 0.025) + expect_equal(truth, tmle$theta, tolerance = 0.025) + expect_equal(truth, sdr$theta, tolerance = 0.025) +}) diff --git a/tests/testthat/test-survey.R b/tests/testthat/test-survey.R new file mode 100644 index 00000000..2cdd6d5c --- /dev/null +++ b/tests/testthat/test-survey.R @@ -0,0 +1,40 @@ +context("Survey weights") + +set.seed(429153) + +n <- 1e4 +W1 <- rbinom(n, size = 1, prob = 0.5) +W2 <- rbinom(n, size = 1, prob = 0.65) +A <- rbinom(n, size = 1, prob = plogis(-0.4 + 0.2 * W2 + 0.15 * W1)) +Y.1 <- rbinom(n, size = 1, prob = plogis(-1 + 1 - 0.1 * W1 + 0.3 * W2)) +Y.0 <- rbinom(n, size = 1, prob = plogis(-1 + 0 - 0.1 * W1 + 0.3 * W2)) + +Y <- Y.1 * A + Y.0 * (1 - A) +tmp <- data.frame(W1, W2, A, Y, Y.1, Y.0) +truth <- mean(tmp$Y.1) + +prob_S <- plogis(W1 * 0.5 + rnorm(n, mean = 0, sd = 1)) +S <- rbinom(n, 1, prob_S) +tmp <- tmp[S == 1, ] +wts <- 1 / prob_S[S == 1] + +sub <- lmtp_sub(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, + weights = wts, folds = 2) + +ipw <- lmtp_ipw(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, + weights = wts, folds = 2) + +tmle <- lmtp_tmle(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, + weights = wts, folds = 2) + +sdr <- lmtp_sdr(tmp, "A", "Y", baseline = c("W1", "W2"), shift = static_binary_on, + weights = wts, folds = 2) + + +# tests +test_that("survey weight fidelity", { + expect_equal(truth, sub$theta, tolerance = 0.025) + expect_equal(truth, ipw$theta, tolerance = 0.025) + expect_equal(truth, tmle$theta, tolerance = 0.025) + expect_equal(truth, sdr$theta, tolerance = 0.025) +}) diff --git a/tests/testthat/test-time_varying_treatment.R b/tests/testthat/test-time_varying_treatment.R new file mode 100644 index 00000000..7e7cd1e0 --- /dev/null +++ b/tests/testthat/test-time_varying_treatment.R @@ -0,0 +1,36 @@ +context("Fidelity of estimators for time-varying treatment") + +tmp <- sim_t4 +a <- c("A_1", "A_2", "A_3", "A_4") +time_varying <- list(c("L_1"), c("L_2"), c("L_3"), c("L_4")) + +for (i in a) { + tmp[[i]] <- factor(tmp[[i]], levels = 0:5, ordered = TRUE) +} + +d <- function(data, trt) { + out <- list() + a <- data[[trt]] + for (i in 1:length(a)) { + if (as.character(a[i]) %in% c("0", "1")) { + out[[i]] <- as.character(a[i]) + } else { + out[[i]] <- as.numeric(as.character(a[i])) - 1 + } + } + factor(unlist(out), levels = 0:5, ordered = TRUE) +} + +truth <- 0.305 + +sub <- sw(lmtp_sub(tmp, a, "Y", time_vary = time_varying, shift = d, folds = 1)) +ipw <- sw(lmtp_ipw(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) +tmle <- sw(lmtp_tmle(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) +sdr <- sw(lmtp_sdr(tmp, a, "Y", time_vary = time_varying, shift = d, mtp = T, folds = 1)) + +test_that("time varying treatment fidelity, t = 4", { + expect_equal(truth, sub$theta, tolerance = 0.025) + expect_equal(truth, ipw$theta, tolerance = 0.05) + expect_equal(truth, tmle$theta, tolerance = 0.025) + expect_equal(truth, sdr$theta, tolerance = 0.025) +}) From b96a9a0c9c25de3b4312f759befab7cca9f503c4 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 25 Apr 2024 10:43:07 -0700 Subject: [PATCH 20/34] Refactoring --- R/density_ratios.R | 16 ++++++---------- R/estimators.R | 19 +++++++++---------- R/gcomp.R | 10 +++++----- R/sdr.R | 14 +++++++------- R/tmle.R | 10 +++++----- 5 files changed, 32 insertions(+), 37 deletions(-) diff --git a/R/density_ratios.R b/R/density_ratios.R index 344dbcdb..6d5566b5 100644 --- a/R/density_ratios.R +++ b/R/density_ratios.R @@ -1,25 +1,21 @@ -cf_r <- function(Task, learners, mtp, lrnr_folds, trim, full_fits, pb) { - fopts <- options("lmtp.bound", "lmtp.trt.length") - +cf_r <- function(Task, learners, mtp, control, pb) { out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ - options(fopts) - estimate_r( get_folded_data(Task$natural, Task$folds, fold), get_folded_data(Task$shifted, Task$folds, fold), Task$trt, Task$cens, Task$risk, Task$tau, Task$node_list$trt, - learners, pb, mtp, lrnr_folds, full_fits + learners, pb, mtp, control ) }, seed = TRUE) } - trim_ratios(recombine_ratios(future::value(out), Task$folds), trim) + trim_ratios(recombine_ratios(future::value(out), Task$folds), control$.trim) } -estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, lrnr_folds, full_fits) { +estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, control) { densratios <- matrix(nrow = nrow(natural$valid), ncol = tau) fits <- vector("list", length = tau) @@ -47,10 +43,10 @@ estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learne learners, "binomial", stacked[jrt & drt, ]$lmtp_id, - lrnr_folds + control$.learners_trt_folds ) - if (full_fits) { + if (control$.return_full_fits) { fits[[t]] <- fit } else { fits[[t]] <- extract_sl_weights(fit) diff --git a/R/estimators.R b/R/estimators.R index fbf50dc2..c7fd201a 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -146,8 +146,9 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, pb <- progressr::progressor(Task$tau*folds*2) - ratios <- cf_r(Task, learners_trt, mtp, control$.learners_trt_folds, control$.trim, control$.return_full_fits, pb) - estims <- cf_tmle(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, control$.learners_outcome_folds, control$.return_full_fits, pb) + ratios <- cf_r(Task, learners_trt, mtp, control, pb) + estims <- cf_tmle(Task, "tmp_lmtp_scaled_outcome", + ratios$ratios, learners_outcome, control, pb) theta_dr( list( @@ -319,10 +320,9 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, pb <- progressr::progressor(Task$tau*folds*2) - ratios <- cf_r(Task, learners_trt, mtp, - control$.learners_trt_folds, control$.trim, control$.return_full_fits, pb) - estims <- cf_sdr(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, learners_outcome, - control$.learners_outcome_folds, control$.return_full_fits, pb) + ratios <- cf_r(Task, learners_trt, mtp, control, pb) + estims <- cf_sdr(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, + learners_outcome, control, pb) theta_dr( list( @@ -469,8 +469,8 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens pb <- progressr::progressor(Task$tau*folds) - estims <- cf_sub(Task, "tmp_lmtp_scaled_outcome", learners, - control$.learners_outcome_folds, control$.return_full_fits, pb) + estims <- cf_sub(Task, "tmp_lmtp_scaled_outcome", + learners, control, pb) theta_sub( eta = list( @@ -620,8 +620,7 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens pb <- progressr::progressor(Task$tau*folds) - ratios <- cf_r(Task, learners, mtp, control$.learners_trt_folds, - control$.trim, control$.return_full_fits, pb) + ratios <- cf_r(Task, learners, mtp, control, pb) theta_ipw( eta = list( diff --git a/R/gcomp.R b/R/gcomp.R index bb074458..b0c2cbd9 100644 --- a/R/gcomp.R +++ b/R/gcomp.R @@ -1,4 +1,4 @@ -cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { +cf_sub <- function(Task, outcome, learners, control, pb) { out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ @@ -8,7 +8,7 @@ cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, - learners, lrnr_folds, pb, full_fits + learners, control, pb ) }, seed = TRUE) @@ -23,7 +23,7 @@ cf_sub <- function(Task, outcome, learners, lrnr_folds, full_fits, pb) { } estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, - tau, outcome_type, learners, lrnr_folds, pb, full_fits) { + tau, outcome_type, learners, control, pb) { m <- matrix(nrow = nrow(natural$valid), ncol = tau) fits <- vector("list", length = tau) @@ -51,10 +51,10 @@ estimate_sub <- function(natural, shifted, trt, outcome, node_list, cens, risk, learners, outcome_type, id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds + control$.learners_outcome_folds ) - if (full_fits) { + if (control$.return_full_fits) { fits[[t]] <- fit } else { fits[[t]] <- extract_sl_weights(fit) diff --git a/R/sdr.R b/R/sdr.R index 099a1428..5f32099c 100644 --- a/R/sdr.R +++ b/R/sdr.R @@ -1,4 +1,4 @@ -cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { +cf_sdr <- function(Task, outcome, ratios, learners, control, pb) { out <- vector("list", length = length(Task$folds)) for (fold in seq_along(Task$folds)) { out[[fold]] <- future::future({ @@ -8,7 +8,7 @@ cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, get_folded_data(ratios, Task$folds, fold)$train, - learners, lrnr_folds, pb, full_fits + learners, control, pb ) }, seed = TRUE) @@ -22,7 +22,7 @@ cf_sdr <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { } estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, tau, - outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { + outcome_type, ratios, learners, control, pb) { m_natural_train <- m_shifted_train <- cbind(matrix(nrow = nrow(natural$train), ncol = tau), natural$train[[outcome]]) @@ -49,9 +49,9 @@ estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, learners, outcome_type, id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds) + control$.learners_outcome_folds) - if (full_fits) { + if (control$.return_full_fits) { fits[[t]] <- fit } else { fits[[t]] <- extract_sl_weights(fit) @@ -73,9 +73,9 @@ estimate_sdr <- function(natural, shifted, trt, outcome, node_list, cens, risk, learners, "continuous", id = natural$train[i & rt, ][["lmtp_id"]], - lrnr_folds) + control$.learners_outcome_folds) - if (full_fits) { + if (control$.return_full_fits) { fits[[t]] <- fit } else { fits[[t]] <- extract_sl_weights(fit) diff --git a/R/tmle.R b/R/tmle.R index 7cd9b783..217e6d74 100644 --- a/R/tmle.R +++ b/R/tmle.R @@ -1,4 +1,4 @@ -cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) { +cf_tmle <- function(Task, outcome, ratios, learners, control, pb) { out <- vector("list", length = length(Task$folds)) ratios <- matrix(t(apply(ratios, 1, cumprod)), nrow = nrow(ratios), @@ -12,7 +12,7 @@ cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, Task$tau, Task$outcome_type, get_folded_data(ratios, Task$folds, fold)$train, - learners, lrnr_folds, pb, full_fits + learners, control, pb ) }, seed = TRUE) @@ -28,7 +28,7 @@ cf_tmle <- function(Task, outcome, ratios, learners, lrnr_folds, full_fits, pb) } estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, - risk, tau, outcome_type, ratios, learners, lrnr_folds, pb, full_fits) { + risk, tau, outcome_type, ratios, learners, control, pb) { m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) @@ -56,10 +56,10 @@ estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, learners, outcome_type, id = natural$train[i & rt,][["lmtp_id"]], - lrnr_folds + control$.learners_outcome_folds ) - if (full_fits) { + if (control$.return_full_fits) { fits[[t]] <- fit } else { fits[[t]] <- extract_sl_weights(fit) From 83deac32c64a1d93a4976cbcf94ce73f98af3ccf Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 25 Apr 2024 11:41:36 -0700 Subject: [PATCH 21/34] Improved folds --- R/lmtp_Task.R | 2 +- R/utils.R | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R index 79b4842c..1b8a1270 100644 --- a/R/lmtp_Task.R +++ b/R/lmtp_Task.R @@ -31,7 +31,7 @@ lmtp_Task <- R6::R6Class( self$bounds <- y_bounds(data[[final_outcome(outcome)]], self$outcome_type, bounds) data$lmtp_id <- create_ids(data, id) self$id <- data$lmtp_id - self$folds <- setup_cv(data, data$lmtp_id, V) + self$folds <- setup_cv(data, V, data$lmtp_id, final_outcome(outcome), self$outcome_type) self$multivariate <- is.list(trt) shifted <- { diff --git a/R/utils.R b/R/utils.R index 14dca938..74685743 100644 --- a/R/utils.R +++ b/R/utils.R @@ -6,8 +6,15 @@ determine_tau <- function(outcome, trt) { length(outcome) } -setup_cv <- function(data, id, V = 10) { - out <- origami::make_folds(data, cluster_ids = id, V = V) +setup_cv <- function(data, V = 10, id, strata, outcome_type) { + if (length(unique(id)) == nrow(data) & outcome_type == "binomial") { + strata <- data[[strata]] + strata[is.na(strata)] <- 2 + out <- origami::make_folds(data, V = V, strata_ids = strata) + } else { + out <- origami::make_folds(data, cluster_ids = id, V = V) + } + if (V > 1) { return(out) } From 8be80d74b0baf2b6008305987a8e1f381ed421b3 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 25 Apr 2024 13:47:27 -0700 Subject: [PATCH 22/34] refactoring --- R/density_ratios.R | 23 ++++++++---- R/estimators.R | 93 +++++++++++++++++++++++++--------------------- R/gcomp.R | 26 ++++++++----- R/lmtp_Task.R | 4 +- R/sdr.R | 29 +++++++++------ R/tmle.R | 29 +++++++++------ 6 files changed, 120 insertions(+), 84 deletions(-) diff --git a/R/density_ratios.R b/R/density_ratios.R index 6d5566b5..329e0beb 100644 --- a/R/density_ratios.R +++ b/R/density_ratios.R @@ -1,18 +1,25 @@ -cf_r <- function(Task, learners, mtp, control, pb) { - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { +cf_r <- function(task, learners, mtp, control, pb) { + out <- vector("list", length = length(task$folds)) + for (fold in seq_along(task$folds)) { out[[fold]] <- future::future({ estimate_r( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted, Task$folds, fold), - Task$trt, Task$cens, Task$risk, Task$tau, Task$node_list$trt, - learners, pb, mtp, control + get_folded_data(task$natural, task$folds, fold), + get_folded_data(task$shifted, task$folds, fold), + task$trt, + task$cens, + task$risk, + task$tau, + task$node_list$trt, + learners, + pb, + mtp, + control ) }, seed = TRUE) } - trim_ratios(recombine_ratios(future::value(out), Task$folds), control$.trim) + trim_ratios(recombine_ratios(future::value(out), task$folds), control$.trim) } estimate_r <- function(natural, shifted, trt, cens, risk, tau, node_list, learners, pb, mtp, control) { diff --git a/R/estimators.R b/R/estimators.R index c7fd201a..8f4b7c52 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -126,7 +126,7 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) - Task <- lmtp_Task$new( + task <- lmtp_task$new( data = data, trt = trt, outcome = outcome, @@ -144,27 +144,31 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, bound = control$.bound ) - pb <- progressr::progressor(Task$tau*folds*2) + pb <- progressr::progressor(task$tau*folds*2) - ratios <- cf_r(Task, learners_trt, mtp, control, pb) - estims <- cf_tmle(Task, "tmp_lmtp_scaled_outcome", - ratios$ratios, learners_outcome, control, pb) + ratios <- cf_r(task, learners_trt, mtp, control, pb) + estims <- cf_tmle(task, + "tmp_lmtp_scaled_outcome", + ratios$ratios, + learners_outcome, + control, + pb) theta_dr( list( estimator = "TMLE", m = list(natural = estims$natural, shifted = estims$shifted), r = ratios$ratios, - tau = Task$tau, - folds = Task$folds, - id = Task$id, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - weights = Task$weights, + tau = task$tau, + folds = task$folds, + id = task$id, + outcome_type = task$outcome_type, + bounds = task$bounds, + weights = task$weights, shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, fits_m = estims$fits, fits_r = ratios$fits, - outcome_type = Task$outcome_type + outcome_type = task$outcome_type ), FALSE ) @@ -265,7 +269,6 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, shift = NULL, shifted = NULL, k = Inf, mtp = FALSE, - # intervention_type = c("static", "dynamic", "mtp"), outcome_type = c("binomial", "continuous", "survival"), id = NULL, bounds = NULL, learners_outcome = "SL.glm", @@ -300,7 +303,7 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) - Task <- lmtp_Task$new( + task <- lmtp_task$new( data = data, trt = trt, outcome = outcome, @@ -318,27 +321,31 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, bound = control$control$.bound ) - pb <- progressr::progressor(Task$tau*folds*2) + pb <- progressr::progressor(task$tau*folds*2) - ratios <- cf_r(Task, learners_trt, mtp, control, pb) - estims <- cf_sdr(Task, "tmp_lmtp_scaled_outcome", ratios$ratios, - learners_outcome, control, pb) + ratios <- cf_r(task, learners_trt, mtp, control, pb) + estims <- cf_sdr(task, + "tmp_lmtp_scaled_outcome", + ratios$ratios, + learners_outcome, + control, + pb) theta_dr( list( estimator = "SDR", m = list(natural = estims$natural, shifted = estims$shifted), r = ratios$ratios, - tau = Task$tau, - folds = Task$folds, - id = Task$id, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - weights = Task$weights, + tau = task$tau, + folds = task$folds, + id = task$id, + outcome_type = task$outcome_type, + bounds = task$bounds, + weights = task$weights, shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, fits_m = estims$fits, fits_r = ratios$fits, - outcome_type = Task$outcome_type + outcome_type = task$outcome_type ), TRUE ) @@ -449,7 +456,7 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertNumber(control$.bound) checkmate::assertLogical(control$.return_full_fits, len = 1) - Task <- lmtp_Task$new( + task <- lmtp_task$new( data = data, trt = trt, outcome = outcome, @@ -467,21 +474,24 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens bound = control$.bound ) - pb <- progressr::progressor(Task$tau*folds) + pb <- progressr::progressor(task$tau*folds) - estims <- cf_sub(Task, "tmp_lmtp_scaled_outcome", - learners, control, pb) + estims <- cf_sub(task, + "tmp_lmtp_scaled_outcome", + learners, + control, + pb) theta_sub( eta = list( m = estims$m, - outcome_type = Task$outcome_type, - bounds = Task$bounds, - folds = Task$folds, - weights = Task$weights, + outcome_type = task$outcome_type, + bounds = task$bounds, + folds = task$folds, + weights = task$weights, shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, fits_m = estims$fits, - outcome_type = Task$outcome_type + outcome_type = task$outcome_type ) ) } @@ -568,7 +578,6 @@ lmtp_sub <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens #' @example inst/examples/ipw-ex.R lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens = NULL, shift = NULL, shifted = NULL, mtp = FALSE, - # intervention_type = c("static", "dynamic", "mtp"), k = Inf, id = NULL, outcome_type = c("binomial", "continuous", "survival"), learners = "SL.glm", @@ -600,7 +609,7 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) - Task <- lmtp_Task$new( + task <- lmtp_task$new( data = data, trt = trt, outcome = outcome, @@ -618,9 +627,9 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens bound = control$.bound ) - pb <- progressr::progressor(Task$tau*folds) + pb <- progressr::progressor(task$tau*folds) - ratios <- cf_r(Task, learners, mtp, control, pb) + ratios <- cf_r(task, learners, mtp, control, pb) theta_ipw( eta = list( @@ -629,14 +638,14 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens nrow = nrow(ratios$ratios), ncol = ncol(ratios$ratios) ), - y = if (Task$survival) { + y = if (task$survival) { convert_to_surv(data[[final_outcome(outcome)]]) } else { data[[final_outcome(outcome)]] }, - folds = Task$folds, - weights = Task$weights, - tau = Task$tau, + folds = task$folds, + weights = task$weights, + tau = task$tau, shift = if (is.null(shifted)) deparse(substitute((shift))) else NULL, fits_r = ratios$fits ) diff --git a/R/gcomp.R b/R/gcomp.R index b0c2cbd9..ad0b7183 100644 --- a/R/gcomp.R +++ b/R/gcomp.R @@ -1,14 +1,20 @@ -cf_sub <- function(Task, outcome, learners, control, pb) { - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { +cf_sub <- function(task, outcome, learners, control, pb) { + out <- vector("list", length = length(task$folds)) + for (fold in seq_along(task$folds)) { out[[fold]] <- future::future({ estimate_sub( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, - Task$node_list$outcome, Task$cens, - Task$risk, Task$tau, Task$outcome_type, - learners, control, pb + get_folded_data(task$natural, task$folds, fold), + get_folded_data(task$shifted[, unlist(task$trt), drop = F], task$folds, fold), + task$trt, + outcome, + task$node_list$outcome, + task$cens, + task$risk, + task$tau, + task$outcome_type, + learners, + control, + pb ) }, seed = TRUE) @@ -17,7 +23,7 @@ cf_sub <- function(Task, outcome, learners, control, pb) { out <- future::value(out) list( - m = recombine_outcome(out, "m", Task$folds), + m = recombine_outcome(out, "m", task$folds), fits = lapply(out, function(x) x[["fits"]]) ) } diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R index 1b8a1270..c673ee2e 100644 --- a/R/lmtp_Task.R +++ b/R/lmtp_Task.R @@ -1,6 +1,6 @@ #' @importFrom R6 R6Class -lmtp_Task <- R6::R6Class( - "lmtp_Task", +lmtp_task <- R6::R6Class( + "lmtp_task", public = list( natural = NULL, shifted = NULL, diff --git a/R/sdr.R b/R/sdr.R index 5f32099c..b497c020 100644 --- a/R/sdr.R +++ b/R/sdr.R @@ -1,14 +1,21 @@ -cf_sdr <- function(Task, outcome, ratios, learners, control, pb) { - out <- vector("list", length = length(Task$folds)) - for (fold in seq_along(Task$folds)) { +cf_sdr <- function(task, outcome, ratios, learners, control, pb) { + out <- vector("list", length = length(task$folds)) + for (fold in seq_along(task$folds)) { out[[fold]] <- future::future({ estimate_sdr( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, Task$node_list$outcome, - Task$cens, Task$risk, Task$tau, Task$outcome_type, - get_folded_data(ratios, Task$folds, fold)$train, - learners, control, pb + get_folded_data(task$natural, task$folds, fold), + get_folded_data(task$shifted[, unlist(task$trt), drop = F], task$folds, fold), + task$trt, + outcome, + task$node_list$outcome, + task$cens, + task$risk, + task$tau, + task$outcome_type, + get_folded_data(ratios, task$folds, fold)$train, + learners, + control, + pb ) }, seed = TRUE) @@ -16,8 +23,8 @@ cf_sdr <- function(Task, outcome, ratios, learners, control, pb) { out <- future::value(out) - list(natural = recombine_outcome(out, "natural", Task$folds), - shifted = recombine_outcome(out, "shifted", Task$folds), + list(natural = recombine_outcome(out, "natural", task$folds), + shifted = recombine_outcome(out, "shifted", task$folds), fits = lapply(out, function(x) x[["fits"]])) } diff --git a/R/tmle.R b/R/tmle.R index 217e6d74..9f5972b7 100644 --- a/R/tmle.R +++ b/R/tmle.R @@ -1,18 +1,25 @@ -cf_tmle <- function(Task, outcome, ratios, learners, control, pb) { - out <- vector("list", length = length(Task$folds)) +cf_tmle <- function(task, outcome, ratios, learners, control, pb) { + out <- vector("list", length = length(task$folds)) ratios <- matrix(t(apply(ratios, 1, cumprod)), nrow = nrow(ratios), ncol = ncol(ratios)) - for (fold in seq_along(Task$folds)) { + for (fold in seq_along(task$folds)) { out[[fold]] <- future::future({ estimate_tmle( - get_folded_data(Task$natural, Task$folds, fold), - get_folded_data(Task$shifted[, unlist(Task$trt), drop = F], Task$folds, fold), - Task$trt, outcome, Task$node_list$outcome, Task$cens, Task$risk, - Task$tau, Task$outcome_type, - get_folded_data(ratios, Task$folds, fold)$train, - learners, control, pb + get_folded_data(task$natural, task$folds, fold), + get_folded_data(task$shifted[, unlist(task$trt), drop = F], task$folds, fold), + task$trt, + outcome, + task$node_list$outcome, + task$cens, + task$risk, + task$tau, + task$outcome_type, + get_folded_data(ratios, task$folds, fold)$train, + learners, + control, + pb ) }, seed = TRUE) @@ -21,8 +28,8 @@ cf_tmle <- function(Task, outcome, ratios, learners, control, pb) { out <- future::value(out) list( - natural = recombine_outcome(out, "natural", Task$folds), - shifted = cbind(recombine_outcome(out, "shifted", Task$folds), Task$natural[["tmp_lmtp_scaled_outcome"]]), + natural = recombine_outcome(out, "natural", task$folds), + shifted = cbind(recombine_outcome(out, "shifted", task$folds), task$natural[["tmp_lmtp_scaled_outcome"]]), fits = lapply(out, function(x) x[["fits"]]) ) } From 5d87091d40c030b44172536e44c925970cbbaf24 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 25 Apr 2024 15:26:29 -0700 Subject: [PATCH 23/34] Survey weight fix --- R/lmtp_Task.R | 5 ++++- R/theta.R | 12 +++--------- R/tmle.R | 7 +++++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R index c673ee2e..81c34293 100644 --- a/R/lmtp_Task.R +++ b/R/lmtp_Task.R @@ -66,7 +66,10 @@ lmtp_task <- R6::R6Class( self$shifted <- shifted if (!is.null(weights)) { - self$weights <- weights + # Normalize weights + self$weights <- weights / mean(weights) + } else { + self$weights <- rep(1, self$n) } } ) diff --git a/R/theta.R b/R/theta.R index 09bdcfd3..66582c5a 100644 --- a/R/theta.R +++ b/R/theta.R @@ -72,15 +72,9 @@ theta_dr <- function(eta, augmented = FALSE) { natural = eta$m$natural) theta <- { if (augmented) - if (is.null(eta$weights)) - mean(inflnce) - else - weighted.mean(inflnce, eta$weights) + weighted.mean(inflnce, eta$weights) else - if (is.null(eta$weights)) - mean(eta$m$shifted[, 1]) - else - weighted.mean(eta$m$shifted[, 1], eta$weights) + weighted.mean(eta$m$shifted[, 1], eta$weights) } if (eta$outcome_type == "continuous") { @@ -88,7 +82,7 @@ theta_dr <- function(eta, augmented = FALSE) { theta <- rescale_y_continuous(theta, eta$bounds) } - clusters <- split(inflnce, eta$id) + clusters <- split(inflnce*eta$weights, eta$id) j <- length(clusters) se <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) ci_low <- theta - (qnorm(0.975) * se) diff --git a/R/tmle.R b/R/tmle.R index 9f5972b7..c9e40224 100644 --- a/R/tmle.R +++ b/R/tmle.R @@ -17,6 +17,7 @@ cf_tmle <- function(task, outcome, ratios, learners, control, pb) { task$tau, task$outcome_type, get_folded_data(ratios, task$folds, fold)$train, + task$weights[task$folds[[fold]]$training_set], learners, control, pb @@ -35,7 +36,7 @@ cf_tmle <- function(task, outcome, ratios, learners, control, pb) { } estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, - risk, tau, outcome_type, ratios, learners, control, pb) { + risk, tau, outcome_type, ratios, weights, learners, control, pb) { m_natural_train <- m_shifted_train <- matrix(nrow = nrow(natural$train), ncol = tau) m_natural_valid <- m_shifted_valid <- matrix(nrow = nrow(natural$valid), ncol = tau) @@ -89,10 +90,12 @@ estimate_tmle <- function(natural, shifted, trt, outcome, node_list, cens, m_natural_valid[jv & rv, t] <- bound(SL_predict(fit, natural$valid[jv & rv, vars]), 1e-05) m_shifted_valid[jv & rv, t] <- bound(SL_predict(fit, under_shift_valid), 1e-05) + wts <- ratios[i & rt, t] * weights[i & rt] + fit <- sw( glm( natural$train[i & rt, ][[outcome]] ~ offset(qlogis(m_natural_train[i & rt, t])), - weights = ratios[i & rt, t], + weights = wts, family = "binomial" ) ) From fb499b9fbc4f9bc784da67d00713c81a92800ad0 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Fri, 26 Apr 2024 11:04:00 -0700 Subject: [PATCH 24/34] Attempt to detect intervention type errors, issue #98 --- DESCRIPTION | 3 ++- R/checks.R | 13 +++++++++++++ R/estimators.R | 3 +++ tests/testthat/test-checks.R | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 14c2e99d..c847d1e0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,7 +36,8 @@ Imports: progressr, data.table (>= 1.13.0), checkmate (>= 2.1.0), - SuperLearner + SuperLearner, + schoolmath URL: https://github.com/nt-williams/lmtp BugReports: https://github.com/nt-williams/lmtp/issues Suggests: diff --git a/R/checks.R b/R/checks.R index be50deaf..23d596ce 100644 --- a/R/checks.R +++ b/R/checks.R @@ -171,3 +171,16 @@ check_ref_class <- function(x) { } assertRefClass <- checkmate::makeAssertionFunction(check_ref_class) + +check_trt_type <- function(data, trt, mtp) { + is_decimal <- vector("logical", length(trt)) + for (i in seq_along(trt)) { + a <- data[[trt[i]]] + if (is.character(a) | is.factor(a)) next + is_decimal[i] <- any(schoolmath::is.decimal(a[!is.na(a)])) + } + if (any(is_decimal) & isFALSE(mtp)) { + cli::cli_warn("Detected decimalish `trt` values and {.code mtp = FALSE}. Consider setting {.code mtp = TRUE} if getting errors.") + } +} + diff --git a/R/estimators.R b/R/estimators.R index 8f4b7c52..e3f956a1 100644 --- a/R/estimators.R +++ b/R/estimators.R @@ -125,6 +125,7 @@ lmtp_tmle <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(control$.bound) checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) + check_trt_type(data, unlist(trt), mtp) task <- lmtp_task$new( data = data, @@ -302,6 +303,7 @@ lmtp_sdr <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, checkmate::assertNumber(control$.bound) checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) + check_trt_type(data, unlist(trt), mtp) task <- lmtp_task$new( data = data, @@ -608,6 +610,7 @@ lmtp_ipw <- function(data, trt, outcome, baseline = NULL, time_vary = NULL, cens checkmate::assertNumber(control$.bound) checkmate::assertNumber(control$.trim, upper = 1) checkmate::assertLogical(control$.return_full_fits, len = 1) + check_trt_type(data, unlist(trt), mtp) task <- lmtp_task$new( data = data, diff --git a/tests/testthat/test-checks.R b/tests/testthat/test-checks.R index e8d20622..39b3aebc 100644 --- a/tests/testthat/test-checks.R +++ b/tests/testthat/test-checks.R @@ -160,7 +160,7 @@ test_that("Contrast assertions", { "Assertion on 'fits' failed: Contrasts not implemented for substitution/IPW estimators." ) - fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1) + fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1, mtp = TRUE) expect_error( lmtp_contrast(fit, ref = c(0.1, 0.2)), "Assertion on 'ref' failed: Must either be a single numeric value or another lmtp object." @@ -171,7 +171,7 @@ test_that("Contrast assertions", { "Assertion on 'fits' failed: Objects must be of type 'lmtp'." ) - fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1, outcome_type = "continuous") + fit <- lmtp_sdr(sim_cens, A, "Y", time_vary = L, cens = cens, folds = 1, outcome_type = "continuous", mtp = TRUE) expect_error( lmtp_contrast(fit, ref = 0.1, type = "rr"), "Assertion on 'type' failed: 'rr' specified but one or more outcome types are not 'binomial' or 'survival'." From c05ffe8d091444cdf8ccc234a07d0dc4513fb805 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Fri, 26 Apr 2024 14:59:22 -0700 Subject: [PATCH 25/34] Updated NEWS --- NEWS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index f512846f..817c8751 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,11 +6,12 @@ - New pre-packaged shift function, `ipsi()` for estimating IPSI effects using the risk ratio. - `lmtp_control()` now replaces extra estimator arguments. -### Buf Fixes +### Bug Fixes ### General - The `intervention_type` argument has been fully deprecated. +- Now attempting to detect intervention type errors (see issue \#98). # lmtp 1.3.3 From 62008047daf7d841c5d60f4891bdac1437aaa095 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Mon, 29 Apr 2024 10:42:58 -0700 Subject: [PATCH 26/34] Adding check for lmtp_contrast that all fits use the same weights --- R/checks.R | 11 ++++++++++- R/contrasts.R | 6 ++++++ R/theta.R | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/R/checks.R b/R/checks.R index 23d596ce..5e7dc464 100644 --- a/R/checks.R +++ b/R/checks.R @@ -163,7 +163,7 @@ assertDr <- checkmate::makeAssertionFunction(check_dr) check_ref_class <- function(x) { if (!is.lmtp(x)) { is_num <- checkmate::check_number(x) - if (!isTRUE(is_num)) { + if (isFALSE(is_num)) { return("Must either be a single numeric value or another lmtp object") } } @@ -184,3 +184,12 @@ check_trt_type <- function(data, trt, mtp) { } } +check_same_weights <- function(weights) { + if (isFALSE(Reduce(identical, weights))) { + return("Weights must all be the same.") + } + TRUE +} + +assertSameWeights <- checkmate::makeAssertionFunction(check_same_weights) + diff --git a/R/contrasts.R b/R/contrasts.R index 330d4fcb..2c958295 100644 --- a/R/contrasts.R +++ b/R/contrasts.R @@ -25,6 +25,12 @@ lmtp_contrast <- function(..., ref, type = c("additive", "rr", "or")) { assertRefClass(ref) assertContrastType(match.arg(type), fits, .var.name = "type") + weights <- lapply(fits, function(x) x$weights) + if (isFALSE(is.numeric(ref))) { + weights <- c(weights, ref$weights) + } + assertSameWeights(weights) + if (is.numeric(ref)) { type <- "additive" message("Non-estimated reference value, defaulting type = 'additive'") diff --git a/R/theta.R b/R/theta.R index 66582c5a..7df2f8fa 100644 --- a/R/theta.R +++ b/R/theta.R @@ -103,6 +103,7 @@ theta_dr <- function(eta, augmented = FALSE) { binomial = eta$m$shifted ), density_ratios = eta$r, + weights = eta$weights, fits_m = eta$fits_m, fits_r = eta$fits_r, outcome_type = eta$outcome_type From 8f9d18ed3b7ed1bcc28cbf63cf251e6a318cba6a Mon Sep 17 00:00:00 2001 From: nt-williams Date: Mon, 29 Apr 2024 10:55:59 -0700 Subject: [PATCH 27/34] Incorporating survey weights into contrasts --- R/checks.R | 3 ++- R/contrasts.R | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/R/checks.R b/R/checks.R index 5e7dc464..5e7f12c9 100644 --- a/R/checks.R +++ b/R/checks.R @@ -185,7 +185,8 @@ check_trt_type <- function(data, trt, mtp) { } check_same_weights <- function(weights) { - if (isFALSE(Reduce(identical, weights))) { + check <- all(sapply(1:(length(weights) - 1), function(i) identical(weights[[i]], weights[[i + 1]]))) + if (isFALSE(check)) { return("Weights must all be the same.") } TRUE diff --git a/R/contrasts.R b/R/contrasts.R index 2c958295..72f7fd67 100644 --- a/R/contrasts.R +++ b/R/contrasts.R @@ -27,7 +27,7 @@ lmtp_contrast <- function(..., ref, type = c("additive", "rr", "or")) { weights <- lapply(fits, function(x) x$weights) if (isFALSE(is.numeric(ref))) { - weights <- c(weights, ref$weights) + weights <- append(weights, list(ref$weights)) } assertSameWeights(weights) @@ -74,7 +74,7 @@ contrast_additive_single <- function(fit, ref) { fit$id <- 1:length(eif) } - clusters <- split(eif, fit$id) + clusters <- split(eif*fit$weights, fit$id) j <- length(clusters) std.error <- sqrt(var(vapply(clusters, function(x) mean(x), 1)) / j) conf.low <- theta - qnorm(0.975) * std.error @@ -113,7 +113,8 @@ contrast_rr <- function(fits, ref) { contrast_rr_single <- function(fit, ref) { theta <- fit$theta / ref$theta - log_eif <- (fit$eif / fit$theta) - (ref$eif / ref$theta) + log_eif <- (fit$eif*fit$weights / fit$theta) - + (ref$eif*ref$weights / ref$theta) if (is.null(fit$id)) { fit$id <- 1:length(eif) @@ -157,7 +158,8 @@ contrast_or <- function(fits, ref) { contrast_or_single <- function(fit, ref) { theta <- (fit$theta / (1 - fit$theta)) / (ref$theta / (1 - ref$theta)) - log_eif <- (fit$eif / (fit$theta * (1 - fit$theta))) - (ref$eif / (ref$theta * (1 - ref$theta))) + log_eif <- (fit$eif*fit$weights / (fit$theta * (1 - fit$theta))) - + (ref$eif*ref$weights / (ref$theta * (1 - ref$theta))) if (is.null(fit$id)) { fit$id <- 1:length(eif) From 13faf4f71bcb103f2c53db162c7a6036f88fe70f Mon Sep 17 00:00:00 2001 From: nt-williams Date: Mon, 29 Apr 2024 11:23:50 -0700 Subject: [PATCH 28/34] Refactoring --- DESCRIPTION | 2 +- R/checks.R | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index c847d1e0..01075d62 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -24,7 +24,7 @@ License: AGPL-3 Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Imports: stats, nnls, diff --git a/R/checks.R b/R/checks.R index 5e7f12c9..10e7649f 100644 --- a/R/checks.R +++ b/R/checks.R @@ -162,7 +162,7 @@ assertDr <- checkmate::makeAssertionFunction(check_dr) check_ref_class <- function(x) { if (!is.lmtp(x)) { - is_num <- checkmate::check_number(x) + is_num <- checkmate::test_number(x) if (isFALSE(is_num)) { return("Must either be a single numeric value or another lmtp object") } @@ -185,7 +185,14 @@ check_trt_type <- function(data, trt, mtp) { } check_same_weights <- function(weights) { - check <- all(sapply(1:(length(weights) - 1), function(i) identical(weights[[i]], weights[[i + 1]]))) + if (length(weights) == 1) { + check <- TRUE + } else if (length(weights) == 2) { + check <- identical(weights[[1]], weights[[2]]) + } else { + check <- all(sapply(1:(length(weights) - 1), function(i) identical(weights[[i]], weights[[i + 1]]))) + } + if (isFALSE(check)) { return("Weights must all be the same.") } From 5c7ccb636eb05ba747eefaee60b0c47c77cabaab Mon Sep 17 00:00:00 2001 From: nt-williams Date: Mon, 29 Apr 2024 11:25:19 -0700 Subject: [PATCH 29/34] Update NEWS.md --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 817c8751..394128df 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,8 @@ ### Bug Fixes +- Standard errors now incorporate survey weights (see issue \#134). + ### General - The `intervention_type` argument has been fully deprecated. From 9bca82490346caca63b8585602f57da4632c1e14 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 30 May 2024 10:47:31 -0700 Subject: [PATCH 30/34] Updated Ivan email --- DESCRIPTION | 2 +- man/lmtp-package.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 01075d62..fc74fe4b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -9,7 +9,7 @@ Authors@R: comment = c(ORCID = "0000-0002-1378-4831")), person(given = "Iván", family = "Díaz", - email = "ild2005@med.cornell.edu", + email = "Ivan.Diaz@nyulangone.org", role = c("aut", "cph"), comment = c(ORCID = "0000-0001-9056-2047"))) Description: Non-parametric estimators for casual effects based on longitudinal modified treatment diff --git a/man/lmtp-package.Rd b/man/lmtp-package.Rd index 211ad080..ef02c184 100644 --- a/man/lmtp-package.Rd +++ b/man/lmtp-package.Rd @@ -21,7 +21,7 @@ Useful links: Authors: \itemize{ - \item Iván Díaz \email{ild2005@med.cornell.edu} (\href{https://orcid.org/0000-0001-9056-2047}{ORCID}) [copyright holder] + \item Iván Díaz \email{Ivan.Diaz@nyulangone.org} (\href{https://orcid.org/0000-0001-9056-2047}{ORCID}) [copyright holder] } } From b1d925c090cbb19466a27735ab88b0b0063ca0ad Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 6 Jun 2024 09:54:53 -0700 Subject: [PATCH 31/34] Convert to data.frame in Task, check for already normalized weights --- R/lmtp_Task.R | 12 ++++++++---- R/utils.R | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/R/lmtp_Task.R b/R/lmtp_Task.R index 81c34293..6d5e3130 100644 --- a/R/lmtp_Task.R +++ b/R/lmtp_Task.R @@ -46,8 +46,8 @@ lmtp_task <- R6::R6Class( } } - data <- data.table::copy(data) - shifted <- data.table::copy(shifted) + data <- data.table::copy(as.data.frame(data)) + shifted <- data.table::copy(as.data.frame(shifted)) data <- fix_censoring_ind(data, cens) shifted <- fix_censoring_ind(shifted, cens) @@ -66,8 +66,12 @@ lmtp_task <- R6::R6Class( self$shifted <- shifted if (!is.null(weights)) { - # Normalize weights - self$weights <- weights / mean(weights) + if (is_normalized(weights)) { + self$weights <- weights + } else { + # Normalize weights + self$weights <- weights / mean(weights) + } } else { self$weights <- rep(1, self$n) } diff --git a/R/utils.R b/R/utils.R index 74685743..92becb1a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -222,3 +222,8 @@ compute_weights <- function(r, t, tau) { if (ncol(out) > ncol(r)) return(t(out)) out } + +is_normalized <- function(x, tolerance = .Machine$double.eps^0.5) { + # Check if the mean is approximately 1 within the given tolerance + abs(mean(x) - 1) < tolerance +} From eac04717e0c21f14814e9b8239acc44007c116b7 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 13 Jun 2024 10:55:07 -0700 Subject: [PATCH 32/34] Update DESCRIPTION and NEWS --- DESCRIPTION | 2 +- NEWS.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index fc74fe4b..653bee10 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -14,7 +14,7 @@ Authors@R: comment = c(ORCID = "0000-0001-9056-2047"))) Description: Non-parametric estimators for casual effects based on longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck , traditional point treatment, - and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are + and traditional longitudinal effects. Continuous, binary, categorical treatments, and multivariate treatments are allowed as well are censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects can be calculated and relative risks and odds ratios may be calculated for binary outcomes. diff --git a/NEWS.md b/NEWS.md index 394128df..10cdb3a7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,7 @@ ### Bug Fixes - Standard errors now incorporate survey weights (see issue \#134). +- Bug fix when shift is NULL and data is a tibble (see issue \#137) ### General From 2452cb048b6037b7a1ff84e89ec102ef6883ca62 Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 13 Jun 2024 11:11:36 -0700 Subject: [PATCH 33/34] Update CRAN comments --- cran-comments.md | 2 +- man/lmtp-package.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cran-comments.md b/cran-comments.md index 49645184..6fd60426 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,4 +1,4 @@ -## Version 1.3.3 submission +## Version 1.4.0 submission ## Test environments diff --git a/man/lmtp-package.Rd b/man/lmtp-package.Rd index ef02c184..993a55d0 100644 --- a/man/lmtp-package.Rd +++ b/man/lmtp-package.Rd @@ -6,7 +6,7 @@ \alias{lmtp-package} \title{lmtp: Non-Parametric Causal Effects of Feasible Interventions Based on Modified Treatment Policies} \description{ -Non-parametric estimators for casual effects based on longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck \doi{10.1080/01621459.2021.1955691}, traditional point treatment, and traditional longitudinal effects. Continuous, binary, and categorical treatments are allowed as well are censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects can be calculated and relative risks and odds ratios may be calculated for binary outcomes. +Non-parametric estimators for casual effects based on longitudinal modified treatment policies as described in Diaz, Williams, Hoffman, and Schenck \doi{10.1080/01621459.2021.1955691}, traditional point treatment, and traditional longitudinal effects. Continuous, binary, categorical treatments, and multivariate treatments are allowed as well are censored outcomes. The treatment mechanism is estimated via a density ratio classification procedure irrespective of treatment variable type. For both continuous and binary outcomes, additive treatment effects can be calculated and relative risks and odds ratios may be calculated for binary outcomes. } \seealso{ Useful links: From 7a2f31a2aac9268ea8bf61a2721d3129cf01a2eb Mon Sep 17 00:00:00 2001 From: nt-williams Date: Thu, 13 Jun 2024 11:16:36 -0700 Subject: [PATCH 34/34] CRAN submission file --- CRAN-SUBMISSION | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CRAN-SUBMISSION diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION new file mode 100644 index 00000000..25dd011f --- /dev/null +++ b/CRAN-SUBMISSION @@ -0,0 +1,3 @@ +Version: 1.4.0 +Date: 2024-06-13 18:14:55 UTC +SHA: 2452cb048b6037b7a1ff84e89ec102ef6883ca62

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