--- title: "G-Computation or standardization for the Cox, Fine-Gray and binomial regression models for survival data" author: Klaus Holst & Thomas Scheike date: "`r Sys.Date()`" output: rmarkdown::html_vignette: fig_caption: yes fig_width: 7.15 fig_height: 5.5 vignette: > %\VignetteIndexEntry{Average treatment effect (ATE) based on the Cox and Fine-Gray model} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(mets) ``` G-computation for the Cox and Fine-Gray models ============================================== Computing the standardized estimate (G-estimation) based on the Cox or Fine-Gray model : \[ \hat S(t,A=a) = n^{-1} \sum_i S(t,A=a,X_i) \] and this estimator has influence function \[ S(t,A=a,X_i) - S(t,A=a) + E( D_{A_0(t), \beta} S(t,A=a,X_i) ) \epsilon_i(t) \] where $\epsilon_i(t)$ is the iid decomposition of $(\hat A(t) - A(t), \hat \beta- \beta)$. These estimates have a causal interpration under the assumption of no-unmeasured confounders, and even without the causal assumptions this standardization can still be a useful summary measure. ```{r} set.seed(100) data(bmt); bmt$time <- bmt$time+runif(nrow(bmt))*0.001 dfactor(bmt) <- tcell~tcell bmt$event <- (bmt$cause!=0)*1 fg1 <- cifreg(Event(time,cause)~tcell+platelet+age,bmt,cause=1, cox.prep=TRUE,propodds=NULL) summary(survivalG(fg1,bmt,50)) fg2 <- cifreg(Event(time,cause)~tcell+platelet+age,bmt,cause=2, cox.prep=TRUE,propodds=NULL) summary(survivalG(fg2,bmt,50)) ss <- phreg(Surv(time,event)~tcell+platelet+age,bmt) summary(survivalG(ss,bmt,50)) ``` G-computation for the binomial regression ============================================== We compare with the similar estimates using the Doubly Robust estimating equations using binregATE. The standardization from the G-computation can also be computed using a specialized function that takes less memory and is quicker (for large data). ```{r} ## survival situation sr1 <- binregATE(Event(time,event)~tcell+platelet+age,bmt,cause=1, time=40, treat.model=tcell~platelet+age) summary(sr1) ## relative risk effect estimate(coef=sr1$riskDR,vcov=sr1$var.riskDR,f=function(p) p[2]/p[1],null=1) ## competing risks br1 <- binregATE(Event(time,cause)~tcell+platelet+age,bmt,cause=1, time=40,treat.model=tcell~platelet+age) summary(br1) ``` and using the specialized function ```{r} br1 <- binreg(Event(time,cause)~tcell+platelet+age,bmt,cause=1,time=40) Gbr1 <- binregG(br1,data=bmt) summary(Gbr1) ## contrasting average age to +2-sd age, Avalues Gbr2 <- binregG(br1,data=bmt,varname="age",Avalues=c(0,2)) summary(Gbr2) ``` SessionInfo ============ ```{r} sessionInfo() ```