No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
R
man
src
.Rbuildignore
.gitignore
DESCRIPTION
NAMESPACE
README.Rmd
README.md
aftiv.Rproj

README.md

aftiv

Installation

You can install the development version of aftiv from github with:

devtools::install_github("jaredhuling/aftiv")

Example

This is a basic example which shows you how to fit a semiparametric AFT model with instrumental variable estimation:

library(aftiv)
## simulate data
set.seed(1)
true.beta <- c(1,-0.5,-0.5,0)
dat <- simIVMultivarSurvivalData(500,1,1,-1,1,true.beta,num.confounded = 1,
                                 cens.distribution = "lognormal",
                                 confounding.function = "exp")

## delta is event indicator, log.t is log of the observed time
## X are the covariates, the first of which is the exposure of interest, the 
## rest are covariates to adjust for
df <- data.frame(dat$survival[c("delta", "log.t")], dat$X)

## Z is the instrument, related to the first variable in X
Z <- dat$Z

system.time(aftf <- aftfit(Surv(log.t, delta) ~ ., data = df, 
                           instrument = Z, 
                           confounded.x.names = "X1", # name of the exposure of interest
                           method = c("AFT",       # naive, unadjusted (biased) estimator
                                      "AFT-2SLS",  # 2-stage approach that relies on IV model
                                      "AFT-IV",    # incorrect approach
                                      "AFT-IPCW"), # proposed approach of Huling, et al
                           boot.method = "ls", 
                           B = 200L, ## number of bootstrap iterations
                           bootstrap = TRUE)) ## use bootstrap for Conf Intervals
#> [1] "Current ssf: 3.4443e-08   Best ssf: 3.4443e-08, sd: 0.1"
#> [1] "Current ssf: 6.62061e-08   Best ssf: 6.62061e-08, sd: 0.1"
#> [1] "Current ssf: 3.04507e-08   Best ssf: 3.04507e-08, sd: 0.1"
#> [1] "Current ssf: 1.93511   Best ssf: 1.93511, sd: 0.1"
#>    user  system elapsed 
#>  16.760   1.510  18.293

Investigate results:

summary(aftf)
#> ********************* 
#> 
#> Method: AFT 
#> 
#> Call:
#> aftfit(formula = Surv(log.t, delta) ~ ., data = df, instrument = Z, 
#>     confounded.x.names = "X1", method = c("AFT", "AFT-2SLS", 
#>         "AFT-IV", "AFT-IPCW"), bootstrap = TRUE, boot.method = "ls", 
#>     B = 200L)
#> 
#>   n= 500
#>         coef  se(coef) lower .95 upper .95      z Pr(>|z|)    
#> X1  1.119493  0.053212  1.015200  1.223787 21.038  < 2e-16 ***
#> X2 -0.374554  0.098035 -0.566698 -0.182409 -3.821 0.000133 ***
#> X3 -0.336222  0.104813 -0.541652 -0.130792 -3.208 0.001337 ** 
#> X4 -0.001018  0.106226 -0.209217  0.207181 -0.010 0.992355    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> ********************* 
#> 
#> Method: AFT-2SLS 
#> 
#> Call:
#> aftfit(formula = Surv(log.t, delta) ~ ., data = df, instrument = Z, 
#>     confounded.x.names = "X1", method = c("AFT", "AFT-2SLS", 
#>         "AFT-IV", "AFT-IPCW"), bootstrap = TRUE, boot.method = "ls", 
#>     B = 200L)
#> 
#>   n= 500
#>         coef  se(coef) lower .95 upper .95      z Pr(>|z|)    
#> X1  1.037481  0.161432  0.721080  1.353882  6.427  1.3e-10 ***
#> X2 -0.501683  0.195723 -0.885292 -0.118074 -2.563   0.0104 *  
#> X3 -0.351659  0.182110 -0.708589  0.005271 -1.931   0.0535 .  
#> X4 -0.003302  0.186932 -0.369681  0.363078 -0.018   0.9859    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> ********************* 
#> 
#> Method: AFT-IV 
#> 
#> Call:
#> aftfit(formula = Surv(log.t, delta) ~ ., data = df, instrument = Z, 
#>     confounded.x.names = "X1", method = c("AFT", "AFT-2SLS", 
#>         "AFT-IV", "AFT-IPCW"), bootstrap = TRUE, boot.method = "ls", 
#>     B = 200L)
#> 
#>   n= 500
#>        coef se(coef) lower .95 upper .95      z Pr(>|z|)    
#> X1  0.91527  0.04839   0.82042   1.01012 18.913  < 2e-16 ***
#> X2 -0.35576  0.09620  -0.54430  -0.16722 -3.698 0.000217 ***
#> X3 -0.30964  0.10819  -0.52168  -0.09760 -2.862 0.004208 ** 
#> X4 -0.01589  0.10406  -0.21985   0.18806 -0.153 0.878597    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> ********************* 
#> 
#> Method: AFT-IPCW 
#> 
#> Call:
#> aftfit(formula = Surv(log.t, delta) ~ ., data = df, instrument = Z, 
#>     confounded.x.names = "X1", method = c("AFT", "AFT-2SLS", 
#>         "AFT-IV", "AFT-IPCW"), bootstrap = TRUE, boot.method = "ls", 
#>     B = 200L)
#> 
#>   n= 500
#>        coef se(coef) lower .95 upper .95      z Pr(>|z|)    
#> X1  1.02465  0.12118   0.78714   1.26216  8.456   <2e-16 ***
#> X2 -0.10566  0.16174  -0.42267   0.21134 -0.653   0.5136    
#> X3 -0.01731  0.17275  -0.35589   0.32127 -0.100   0.9202    
#> X4  0.28338  0.15798  -0.02626   0.59302  1.794   0.0729 .  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1