---
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()
```


