knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(knitr) library(tmleplus)
surv_eff_mod()
This function uses influence curves to calculate the difference and standard error in marginal cumulative incidence for an effect modification variable.
We demonstrate this by modifying the example from David Bankeser and Nima Hejazi's survtmle
vignette.
We have 1000 observations with randomized treatment and randomized effect modification variables. The survival time (ftime
) is affected by an interaction between the treatment and effect modification variable.
set.seed(1234) n <- 1000 t_0 <- 6 trt <- rbinom(n, 1, 0.5) eff <- rbinom(n, 1, 0.5) adjustVars <- data.frame(W1 = round(runif(n)), W2 = round(runif(n, 0, 2))) ftime <- round(1 + runif(n, 1, 4) - trt*eff + adjustVars$W1 + adjustVars$W2) ftype <- round(runif(n, 0, 1)) dat <- data.frame(trt, eff, adjustVars, ftime, ftype)
We can then stratify our data into patients with and without the effect modification variable and obtain survtmle
estimates for the effect of treatment.
For observations without the effect modifier:
dat_noeff <- dat[dat$eff == 0,] trt <- dat_noeff$trt adjustVars <- dat_noeff[c("W1", "W2")] ftime <- dat_noeff$ftime ftype <- dat_noeff$ftype fit_noeff <- survtmle::survtmle(ftime = ftime, ftype = ftype, trt = trt, adjustVars = adjustVars, SL.trt = c("SL.glm", "SL.mean", "SL.step"), SL.ftime = c("SL.glm", "SL.mean", "SL.step"), SL.ctime = c("SL.glm", "SL.mean", "SL.step"), method = "hazard", t0 = t_0)
For observations with the effect modifier:
dat_eff <- dat[dat$eff == 1,] trt <- dat_eff$trt adjustVars <- dat_eff[c("W1", "W2")] ftime <- dat_eff$ftime ftype <- dat_eff$ftype fit_eff <- survtmle::survtmle(ftime = ftime, ftype = ftype, trt = trt, adjustVars = adjustVars, SL.trt = c("SL.glm", "SL.mean", "SL.step"), SL.ftime = c("SL.glm", "SL.mean", "SL.step"), SL.ctime = c("SL.glm", "SL.mean", "SL.step"), method = "hazard", t0 = t_0)
Once we have obtained our two survtmle
fits, we need only to specify the full data set, our effect modification variable, and the names of our survtmle
objects.
result <- surv_eff_mod(tmle_fit_0 = fit_a, tmle_fit_1 = fit_b)
The resulting data frame contains the estimate, standard error, 95% confidence intervals and p-values for...
The difference in the marginal cumulative incidence between treated and untreated patients amongst those with the effect modification variable.
The estimate and standard error for the difference in the marginal cumulative incidence between treated and untreated patients amongst those without the effect modification variable.
The overall difference and standard error between the effect modification groups.
kable(result)
This result would indicate:
A significant effect on the marginal cumulative incidence at t0
between the treated and untreated observations for those with the effect modification variable.
A non-significant effect on the marginal cumulative incidence at t0
between the treated and untreated observations for those without the effect modification variable.
An overall significant modification effect on the marginal cumulative incidence at t0
between the treated and untreated observations.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.