Starting from version 1.1.0, the package supports a simplified approach to specify interventions. This document describes how to specify interventions using this approach. This document assumes that readers have read the long-form package documentation of McGrath et al. (2020).
Note that maintains backwards compatibility in the sense that users may continue to specify interventions using the previous approach (i.e., based on specifying the arguments , , and ).
To specify interventions, users can supply arguments with the following naming requirements:
For example, an argument with the name specifies the first intervention, which intervenes on variable .
Each intervention argument takes as input a list with the following elements:
The next sections illustrate complete examples.
In this example, we re-perform the analysis in Example 1 in McGrath et al. (2020) using the new intervention specification.
id <- 'id'
time_points <- 7
time_name <- 't0'
covnames <- c('L1', 'L2', 'A')
outcome_name <- 'Y'
outcome_type <- 'survival'
covtypes <- c('binary', 'bounded normal', 'binary')
histories <- c(lagged, lagavg)
histvars <- list(c('A', 'L1', 'L2'), c('L1', 'L2'))
covparams <- list(covmodels = c(L1 ~ lag1_A + lag_cumavg1_L1 + lag_cumavg1_L2 +
L3 + t0,
L2 ~ lag1_A + L1 + lag_cumavg1_L1 +
lag_cumavg1_L2 + L3 + t0,
A ~ lag1_A + L1 + L2 + lag_cumavg1_L1 +
lag_cumavg1_L2 + L3 + t0))
ymodel <- Y ~ A + L1 + L2 + L3 + lag1_A + lag1_L1 + lag1_L2 + t0
nsimul <- 10000
gform_basic <- gformula(obs_data = basicdata_nocomp, id = id,
time_points = time_points,
time_name = time_name, covnames = covnames,
outcome_name = outcome_name,
outcome_type = outcome_type, covtypes = covtypes,
covparams = covparams, ymodel = ymodel,
histories = histories, histvars = histvars,
basecovs = c('L3'), nsimul = nsimul,
seed = 1234,
intervention1.A = list(static, rep(0, time_points)),
intervention2.A = list(static, rep(1, time_points)),
int_descript = c('Never treat', 'Always treat'))
gform_basic
## PREDICTED RISK UNDER MULTIPLE INTERVENTIONS
##
## Intervention Description
## 0 Natural course
## 1 Never treat
## 2 Always treat
##
## Sample size = 2500, Monte Carlo sample size = 10000
## Number of bootstrap samples = 0
## Reference intervention = natural course (0)
##
##
## k Interv. NP Risk g-form risk Risk ratio Risk difference % Intervened On
## <num> <num> <num> <num> <num> <num> <num>
## 6 0 0.5056 0.5041395 1.0000000 0.0000000 0.00
## 6 1 NA 0.7307657 1.4495308 0.2266262 100.00
## 6 2 NA 0.2336471 0.4634571 -0.2704925 94.67
## Aver % Intervened On
## <num>
## 0.00000
## 71.62286
## 34.00000
In this example, we apply a custom intervention that assigns treatment if is below a certain threshold. We first define the custom intervention function.
example_intervention <- function(newdf, pool, intvar, intvals, time_name, t){
newdf[, (intvar) := 0]
newdf[L2 < intvals[[1]], (intvar) := 1]
}
Next, we apply the g-formula with this custom intervention where we consider different thresholds for .
gform_basic <- gformula(obs_data = basicdata_nocomp, id = id,
time_points = time_points,
time_name = time_name, covnames = covnames,
outcome_name = outcome_name,
outcome_type = outcome_type, covtypes = covtypes,
covparams = covparams, ymodel = ymodel,
histories = histories, histvars = histvars,
basecovs = c('L3'), nsimul = nsimul,
seed = 1234,
intervention1.A = list(example_intervention, 0.8),
intervention2.A = list(example_intervention, 1),
int_descript = c('Treat if L2 < 0.8', 'Treat if L2 < 1'))
gform_basic
## PREDICTED RISK UNDER MULTIPLE INTERVENTIONS
##
## Intervention Description
## 0 Natural course
## 1 Treat if L2 < 0.8
## 2 Treat if L2 < 1
##
## Sample size = 2500, Monte Carlo sample size = 10000
## Number of bootstrap samples = 0
## Reference intervention = natural course (0)
##
##
## k Interv. NP Risk g-form risk Risk ratio Risk difference % Intervened On
## <num> <num> <num> <num> <num> <num> <num>
## 6 0 0.5056 0.5041395 1.0000000 0.0000000 0.00
## 6 1 NA 0.6958459 1.3802645 0.1917064 99.88
## 6 2 NA 0.3302342 0.6550453 -0.1739053 96.32
## Aver % Intervened On
## <num>
## 0.00000
## 68.50143
## 38.47143
McGrath S, Lin V, Zhang Z, Petito LC, Logan RW, Hernán MA, Young JG. gfoRmula: an R package for estimating the effects of sustained treatment strategies via the parametric g-formula. Patterns. 2020 Jun 12;1(3).