| surv_iptw_cox {adjustedCurves} | R Documentation |
Inverse Probability of Treatment Weighted Survival using Cox-Regression
Description
This page explains the details of estimating inverse probability of treatment weighted survival curves using a weighted univariate cox-regression for single event time-to-event data (method="iptw_cox" in the adjustedsurv function). All regular arguments of the adjustedsurv function can be used. Additionally, the treatment_model argument has to be specified in the adjustedsurv call. Further arguments specific to this method are listed below.
Arguments
treatment_model |
[required] Must be either a model object with |
weight_method |
Method used in |
stabilize |
Whether to stabilize the weights or not. Is set to |
trim |
Can be either |
trim_quantiles |
Alternative argument to trim weights based on quantiles. Can be either |
... |
Further arguments passed to |
Details
Type of Adjustment: Requires a model describing the treatment assignment mechanism. This must be either a
glmormultinomobject.Doubly-Robust: Estimates are not Doubly-Robust.
Categorical groups: Any number of levels in
variableare allowed. Must be a factor variable.Approximate Variance: Calculations to approximate the variance and confidence intervals are not available.
Allowed Time Values: Allows both continuous and integer time.
Bounded Estimates: Estimates are guaranteed to be bounded in the 0 to 1 probability range.
Monotone Function: Estimates are guaranteed to be monotone.
Dependencies: This method relies on the survival package. Additionally, the WeightIt package is required if
treatment_modelis a formula object.
This method works by modeling the treatment assignment mechanism. Adjusted survival curves are calculated by first estimating appropriate case-weights for each observation in data. This can be done using inverse probability of treatment weights using the propensity score (usually estimated using a logistic regression model) or by some other method (see ?weightit). Those estimates are then used to fit a weighted Cox-Regression model, stratified by variable. Survival Curves based on this model are estimated using the method implemented in the survfit.coxph function. More information can be found in the literature listed under "references". The only difference to the iptw_km method is a slightly different weighting approach.
By default this method uses a a robust sandwich-type variance estimator (robust=TRUE in the coxph function call) to calculate the standard error used in the construction of confidence intervals. This estimator has been shown to be biased by Austin (2016). Coupled with stabilized weights however (stabilize=TRUE) this gives conservative estimates of the variance and confidence intervals (Xu et al. 2010). It is still recommended to use bootstrap confidence intervals instead. This can be done by setting bootstrap=TRUE in the adjustedsurv function call.
Value
Adds the following additional objects to the output of the adjustedsurv function:
-
cox_model: The stratified and weightedcoxphmodel. -
survfit: Thesurvfitobject created using thecox_modelobject. -
weights: The final weights used in the analysis.
Returns a list object containing a data.frame with the estimated adjusted survival probabilities for some points in time for each level of variable, the weighted coxph model, the weighted survfit object and the weights used in the analysis.
Author(s)
Robin Denz
References
Stephen R. Cole and Miguel A. HernĂ¡n (2004). "Adjusted Survival Curves with Inverse Probability Weights". In: Computer Methods and Programs in Biomedicine 2003.75, pp. 45-49
Peter C. Austin (2016). "Variance Estimation when Using Inverse Probability of Treatment Weighting (IPTW) with Survival Analysis". In: Statistics in Medicine 35, pp. 5642-5655
Stanley Xu, Colleen Ross and Marsha A. Raebel, Susan Shetterly, Christopher Blanchette, and David Smith (2010). "Use of Stabilized Inverse Propensity Scores as Weights to Directly Estimate Relative Risk and Its Confidence Intervals". In: Value in Health 13.2, pp. 273-277
See Also
weightit, coxph, survfit.coxph
Examples
library(adjustedCurves)
library(survival)
set.seed(42)
# simulate some data as example
sim_dat <- sim_confounded_surv(n=50, max_t=1.2)
sim_dat$group <- as.factor(sim_dat$group)
# estimate a treatment assignment model
glm_mod <- glm(group ~ x1 + x3 + x5 + x6, data=sim_dat, family="binomial")
# use it to calculate adjusted survival curves
adjsurv <- adjustedsurv(data=sim_dat,
variable="group",
ev_time="time",
event="event",
method="iptw_cox",
treatment_model=glm_mod)
# Alternatively, use custom weights
# In this example we use weights calculated using the propensity score,
# which is equal to using the glm model directly in the function
ps_score <- glm_mod$fitted.values
weights <- ifelse(sim_dat$group==1, 1/ps_score, 1/(1-ps_score))
adjsurv <- adjustedsurv(data=sim_dat,
variable="group",
ev_time="time",
event="event",
method="iptw_cox",
treatment_model=weights)
if (requireNamespace("WeightIt")) {
# And a third alternative: use the WeightIt package
# here an example with equal results to the ones above:
adjsurv <- adjustedsurv(data=sim_dat,
variable="group",
ev_time="time",
event="event",
method="iptw_cox",
treatment_model=group ~ x1 + x3 + x5 + x6,
weight_method="ps")
# here an example using Entropy Balancing Weighting:
adjsurv <- adjustedsurv(data=sim_dat,
variable="group",
ev_time="time",
event="event",
method="iptw_cox",
treatment_model=group ~ x1 + x3 + x5 + x6,
weight_method="ebal")
}