
Weibull AFT Inference for Survival Responses
Source:R/inference_survival_weibull.R
InferenceSurvivalWeibullRegr.RdFits a Weibull Accelerated Failure Time (AFT) model for survival responses:
\(\log T_i = \beta_0 + \beta_T W_i + X_i^\top \gamma + \sigma \epsilon_i\),
\(\epsilon_i \sim\) standard extreme-value (Gumbel-minimum), so that
\(T_i\) is marginally Weibull-distributed with shape \(1/\sigma\) and
treatment-dependent scale, by maximum likelihood
(fast_weibull_regression_cpp). \(\hat\beta_T\) is a
log-time-ratio (log acceleration factor): \(\exp(\hat\beta_T)\)
is the estimated multiplicative effect of treatment on survival time (an
AFT model, not a proportional-hazards model — the Weibull distribution is
the one location where AFT and proportional-hazards parameterizations
coincide, since \(\exp(-\beta_T/\sigma)\) also equals the treatment
hazard ratio). likelihood_tier = "full": likelihood-ratio, score,
gradient, and Wald tests are all available when the model converges, plus
parametric-likelihood-bootstrap calibration of the likelihood-ratio test.
Right-censored and interval-censored observations enter the likelihood via
their appropriate survival/density contributions. Validity requires the
Weibull shape assumption for the (log-)survival-time distribution and,
when interpreted causally, the usual design-based/model-based assumptions.
References
Kalbfleisch, J. D., and Prentice, R. L. (2002). The Statistical Analysis of Failure Time Data (2nd ed.). Wiley, for the Weibull AFT model and its equivalence to a proportional-hazards model.
See also
Comparable Python API: lifelines WeibullAFTFitter. See also: Proportional hazards model (Wikipedia, for the AFT/PH equivalence note).
Super class
Inference -> InferenceSurvivalWeibullRegr
Methods
Public methods
+ inherited public methods from Inference
Inference$capabilities()Inference$compute_asymp_confidence_interval()Inference$compute_asymp_two_sided_pval()Inference$compute_estimate()Inference$compute_exact_confidence_interval()Inference$compute_exact_two_sided_pval_for_treatment_effect()Inference$duplicate()Inference$get_analysis_data()Inference$get_covariates()Inference$get_design_object()Inference$get_model_formula()Inference$get_nonestimable_reason()Inference$get_nonestimable_stage()Inference$get_optimization_alg()Inference$get_response()Inference$get_response_type()Inference$get_treatment()Inference$initialize()Inference$is_nonestimable()Inference$set_optimization_alg()Inference$set_seed()Inference$supports()
Examples
# \donttest{
seq_des = DesignSeqOneByOneBernoulli$new(n = 10, response_type = 'survival')
for (i in 1:10) {
seq_des$add_one_subject_to_experiment_and_assign(data.frame(x1 = rnorm(1)))
}
seq_des$add_all_subject_responses(runif(10))
inf = InferenceSurvivalWeibullRegr$new(seq_des)
inf$compute_estimate()
#> [1] -1.284267
# }
# \donttest{
inf$set_seed(1)
inf$compute_lik_ratio_bootstrap_two_sided_pval(delta = 0, B = 9, show_progress = FALSE)
#> [1] 0.2
# }