The goal of drsurv is to implement several doubly robust estimators
for the survival difference at a given time point and one more complex
doubly robust estimator for the survival curve process. The estimators
are doubly robust in the sense that they are consistent if the censoring
model is correctly specified for censoring and either the outcome model
is correctly specified for confounding or the exposure model is
correctly specified for confounding. See
https://arxiv.org/abs/2310.16207 for more details and examples.
You can install drsurv like so:
remotes::install_github("sachsmc/drsurv")This is a basic example which shows you how to solve a common problem:
library(drsurv)
#> Loading required package: survival
## basic example code
df <- rotterdam
df$time <- pmin(df$rtime, df$dtime) / 365.25
df$status <- ifelse(df$recur == 1 | df$death == 1, 1, 0)
df$censor <- 1 - df$status
drFit.sjovan <-
sjovan_survdiff(
oformula = Surv(time, status) ~ chemo + year + age + meno +
size + factor(grade) + nodes + pgr + er + hormon,
ofunc = "survreg",
cformula = Surv(time, censor) ~ chemo + year + age,
cfunc = "survreg",
eformula = chemo ~ year + age + meno + size +
factor(grade) + nodes + pgr + er + hormon,
method = "DR",
times = c(2.5, 5, 7.5),
se.type = "sandwich",
data = df
)
drFit.sjovan
#> $est.S1
#> [1] 0.7661741 0.6032550 0.5224925
#>
#> $se.S1
#> [1] 0.03440273 0.02906199 0.14520126
#>
#> $est.S0
#> [1] 0.7190130 0.5515392 0.4670844
#>
#> $se.S0
#> [1] 0.07008758 0.07427899 0.10500988
#>
#> $est.diff
#> [1] 0.04716109 0.05171581 0.05540801
#>
#> $se.diff
#> [1] 0.06863352 0.07611256 0.14153032The other methods are blanche_survdiff and pseudo_survdiff.