Author: Bilal Ahmad

# Cure Models with the Beta-Danish Distribution

#### Bilal Ahmad

## Two cure formulations

The package implements two cure formulations on the Exponentiated Danish kernel:

- Mixture cure splits the population into a susceptible fraction `pi(Z)` modelled by logistic regression on the incidence covariates, and a cured fraction `1 - pi(Z)`.
- Promotion-time cure derives the cure fraction from a latent Poisson process of clonogenic cells with intensity `theta(Z) = exp(Z' gamma)`; the cure fraction is `exp(-theta(Z))`.

Both are fitted via `fit_bd_cure()`.

## Quick example

Both fits below use simulated data with a known cure structure.

    library(BetaDanish)
    set.seed(2026)
    n <- 250
    z <- stats::rbinom(n, 1, 0.5)
    pi_susc <- stats::plogis(0.3 + 0.7 * z)
    cured   <- stats::rbinom(n, 1, 1 - pi_susc) == 1
    T_true  <- ifelse(cured, Inf,
                      rbetadanish(n, a = 1, b = 2, c = 1.5, k = 0.4))
    C   <- stats::rexp(n, 0.04)
    time   <- pmin(T_true, C)
    status <- ifelse(T_true <= C, 1, 0)
    dat <- data.frame(time = time, status = status, z = z)
    cat("Sample size:", n, " Censoring rate:", round(mean(status == 0), 2), "\n")
    #> Sample size: 250  Censoring rate: 0.45

## Mixture cure model

    fit_mix <- fit_bd_cure(
      formula_aft  = survival::Surv(time, status) ~ 1,
      formula_cure = ~ z,
      data         = dat,
      type         = "mixture",
      n_starts     = 3
    )
    summary(fit_mix)
    #>
    #> Call:
    #> fit_bd_cure(formula_aft = survival::Surv(time, status) ~ 1, formula_cure = ~z,
    #>     data = dat, type = "mixture", n_starts = 3)
    #>
    #> Beta-Danish Cure Model (mixture)
    #>
    #>                   Estimate Std. Error z value Pr(>|z|)
    #> log_b              1.26173    0.52210  2.4166  0.01566 *
    #> log_c              0.43147    0.19961  2.1616  0.03065 *
    #> delta_(Intercept) -1.39644    0.75934 -1.8390  0.06591 .
    #> gamma_(Intercept)  0.22464    0.19373  1.1596  0.24623
    #> gamma_z            0.56245    0.29138  1.9303  0.05357 .
    #> ---
    #> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    #> ---
    #> Log-Likelihood: -416.2507

## Promotion-time cure model

    fit_prom <- fit_bd_cure(
      formula_aft  = survival::Surv(time, status) ~ 1,
      formula_cure = ~ z,
      data         = dat,
      type         = "promotion",
      n_starts     = 3
    )
    summary(fit_prom)
    #>
    #> Call:
    #> fit_bd_cure(formula_aft = survival::Surv(time, status) ~ 1, formula_cure = ~z,
    #>     data = dat, type = "promotion", n_starts = 3)
    #>
    #> Beta-Danish Cure Model (promotion)
    #>
    #>                   Estimate Std. Error z value Pr(>|z|)
    #> log_b              1.56319    0.77860  2.0077  0.04468 *
    #> log_c              0.39322    0.16852  2.3333  0.01963 *
    #> delta_(Intercept) -2.03331    0.93058 -2.1850  0.02889 *
    #> gamma_(Intercept) -0.19425    0.12818 -1.5155  0.12965
    #> gamma_z            0.33526    0.17055  1.9657  0.04933 *
    #> ---
    #> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    #> ---
    #> Log-Likelihood: -416.1921

## See also

- `?fit_bd_cure` for full documentation
- `?bd_bootstrap_ci` for bootstrap confidence intervals
- `?plot.bd_cure` for Cox-Snell residual plots