Skip to contents

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

Computes the randomization distribution of the treatment effect estimate under the sharp null.

Whether compute_rand_two_sided_pval() is actually usable on this instance right now – FALSE exactly when it would stop(): an incidence-response instance with no custom randomization statistic and a design not eligible for design-randomization-based incidence inference (see private$should_use_design_randomization_for_incidence()). TRUE for every other case, including every non-incidence response type. Public, self-contained (only reads already-set instance state, no side effects), so InferenceSuite can check this before attempting the sentinel instead of relying on the stop() being silently swallowed into a pval = NA "ok" row – the single source of truth for both this check and compute_rand_two_sided_pval()'s own guard, so the two can never drift apart.

Value

When debug = FALSE (default), a numeric vector of length r. When debug = TRUE, a list with: values, errors (list of character vectors, one per iteration), warnings (list of character vectors, one per iteration), num_errors, num_warnings, prop_iterations_with_errors, prop_iterations_with_warnings, and prop_illegal_values.

A single logical.

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. For the randomization confidence interval (compute_rand_confidence_interval()), which inverts an AFT sharp null by rescaling the recorded times of treated units — event and censoring times alike, censoring indicators unchanged — the residual construction and its validity under independent censoring are from Tsiatis, A. A. (1990). Estimating regression parameters using linear rank tests for censored data. The Annals of Statistics, 18(1), 354-372, doi:10.1214/aos/1176347504 ; Wei, L. J., Ying, Z., and Lin, D. Y. (1990). Linear regression analysis of censored survival data based on rank tests. Biometrika, 77(4), 845-851, doi:10.1093/biomet/77.4.845 ; and Jin, Z., Lin, D. Y., Wei, L. J., and Ying, Z. (2003). Rank-based inference for the accelerated failure time model. Biometrika, 90(2), 341-353, doi:10.1093/biomet/90.2.341 .

See also

Comparable Python API: lifelines WeibullAFTFitter. See also: Proportional hazards model (Wikipedia, for the AFT/PH equivalence note).

Super class

Inference -> InferenceSurvivalWeibullRegr

Methods

+ inherited public methods from Inference


InferenceSurvivalWeibullRegr$approximate_randomization_distribution_beta_hat_T()

Usage

InferenceSurvivalWeibullRegr$approximate_randomization_distribution_beta_hat_T(
  r = 501,
  delta = 0,
  transform_responses = "none",
  show_progress = TRUE,
  permutations = NULL,
  debug = FALSE,
  zero_one_logit_clamp = .Machine$double.eps
)

Arguments

r

Number of randomization vectors. Default 501.

delta

The null difference. Default 0.

transform_responses

Type of transformation. Default "none".

show_progress

Show progress bar. Default TRUE.

permutations

Pre-computed permutations. Default NULL.

debug

If TRUE, return a list with the distribution values and per-iteration diagnostics including error messages, warning messages, counts of each, and summary proportions for iterations with errors, warnings, and illegal (non-finite) values. Runs serially. Default FALSE.

zero_one_logit_clamp

The clamping amount for exact 0 and 1 values when logging


InferenceSurvivalWeibullRegr$supports_rand_pval_for_incidence()

Usage

InferenceSurvivalWeibullRegr$supports_rand_pval_for_incidence()


InferenceSurvivalWeibullRegr$clone()

The objects of this class are cloneable with this method.

Usage

InferenceSurvivalWeibullRegr$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

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] 0.2039519
# }
# \donttest{
inf$set_seed(1)
inf$compute_lik_ratio_bootstrap_two_sided_pval(delta = 0, B = 9, show_progress = FALSE)
#> [1] 0.6
# }