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.
Example
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.