The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Introduction to the BetaDanish Package

Bilal Ahmad & Dr. Muhammad Yameen Danish

2026-05-16

1. Introduction

The BetaDanish package provides a comprehensive suite of tools for survival and reliability analysis using the Beta-Danish distribution.

Classical lifetime models, such as the Weibull, Gamma, or Log-Normal distributions, are often limited in their hazard shape flexibility. They typically force the hazard rate to be strictly monotonic or, at best, unimodal. The Beta-Danish distribution overcomes these limitations by accommodating decreasing, increasing, unimodal (upside-down bathtub), and bathtub-shaped hazard rates within a single, unified four-parameter family.

This package implements the core mathematical functions, robust Maximum Likelihood Estimation (MLE) for complete and right-censored data, and advanced modules for Accelerated Failure Time (AFT) regression, cure-rate models, and competing risks.

2. Theoretical Background

The Beta-Danish distribution is constructed by applying the beta-generated transformation (Eugene et al., 2002) to a baseline distribution. The baseline used here is the two-parameter exponentiated log-logistic distribution.

Let \(a, b, c, k > 0\) be the parameters of the distribution. * \(k\) is the scale parameter. * \(c\) is the baseline shape parameter. * \(a\) and \(b\) are the beta-generator shape parameters controlling skewness and tail weight.

The Cumulative Distribution Function (CDF) is given by the regularized incomplete beta function: \[ F(t) = I_{G(t)}(a, b) \] where \(G(t) = \left( \frac{k t}{1 + k t} \right)^c\).

The Probability Density Function (PDF) is: \[ f(t) = \frac{c k}{B(a, b)} \frac{(k t)^{ca - 1}}{(1 + k t)^{ca + 1}} \left[ 1 - \left( \frac{k t}{1 + k t} \right)^c \right]^{b - 1} \]

The 3-Parameter Submodel

By fixing \(a = 1\), the distribution reduces to a highly tractable 3-parameter submodel (the Complementary Exponentiated Danish distribution), which is particularly useful for regression and cure-rate modeling to ensure parameter identifiability.

3. Core Distribution Functions

The package provides the standard d/p/q/r/h functions. All internal calculations are performed in log-space to ensure numerical stability, especially in the tails.

library(BetaDanish)

# Calculate the hazard rate at time t = 2
hbetadanish(x = 2, a = 1.5, b = 2.0, c = 3.0, k = 0.5)

# Generate 100 random survival times
set.seed(2026)
sim_data <- rbetadanish(n = 100, a = 1.5, b = 2.0, c = 3.0, k = 0.5)

4. Fitting Models to Data

The fit_betadanish() function is the core MLE engine. It uses a multi-start optimization strategy to ensure global convergence and strictly enforces positivity constraints via log-scale reparameterization.

Example 1: Uncensored Data (Bladder Cancer Remission)

The remission dataset contains the remission times of 128 bladder cancer patients. This data exhibits a unimodal/decreasing hazard rate.

# Load the built-in dataset
data("remission", package = "BetaDanish")

# Fit the full 4-parameter model
fit_full <- fit_betadanish(survival::Surv(time, status) ~ 1, data = remission)
summary(fit_full)

# Fit the 3-parameter submodel (a = 1)
fit_sub <- fit_betadanish(survival::Surv(time, status) ~ 1, data = remission, submodel = TRUE)

# Compare the nested models using a Likelihood Ratio Test (LRT)
compare_models(fit_full, fit_sub)

You can easily generate publication-quality diagnostic plots:

# Generates Survival, Hazard, Density, P-P, and Q-Q plots
plot(fit_full, type = "all")

Example 2: Right-Censored Data (Bone Marrow Transplant)

The transplant dataset contains survival times for 91 patients, including right-censored observations. The fit_betadanish() function natively handles survival::Surv objects.

data("transplant", package = "BetaDanish")

# Fit the model to censored data
fit_censored <- fit_betadanish(survival::Surv(time, status) ~ 1, data = transplant)
summary(fit_censored)

# Plot the Kaplan-Meier curve overlaid with the Beta-Danish fit
plot(fit_censored, type = "survival")

5. Advanced Modeling: Cure Rates

In many clinical datasets (like the transplant data), a proportion of patients may be “cured” and will never experience the event. Standard survival models force the survival curve to zero, which misrepresents the data.

The BetaDanish package provides the fit_bd_cure() function to fit both Mixture and Promotion-Time (Non-Mixture) cure models.

# Fit a mixture cure model
# Latency (time to event for susceptible) has no covariates (~ 1)
# Incidence (probability of being susceptible) depends on treatment group (~ group)
cure_fit <- fit_bd_cure(
  formula_aft = survival::Surv(time, status) ~ 1,
  formula_cure = ~ group,
  data = transplant,
  type = "mixture"
)

summary(cure_fit)

6. Automated Benchmarking

To justify the use of the Beta-Danish distribution, you can benchmark it against classical distributions (Weibull, Gamma, Log-Normal, etc.) using the compare_distributions() function. (Note: This requires the flexsurv package).

# Returns a ranked table of AIC, BIC, and Log-Likelihoods
compare_distributions(fit_full)

7. Conclusion

The BetaDanish package offers a robust, flexible, and user-friendly environment for advanced survival analysis. By unifying standard MLE fitting, comprehensive diagnostics, and advanced modules (AFT, Cure, Competing Risks) under a single framework, it serves as a powerful tool for statisticians and applied researchers alike.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.