
The BetaDanish package implements the four-parameter Beta-Danish distribution and its three-parameter Exponentiated Danish (ED) submodel for survival, reliability and lifetime-data analysis. The distribution is developed in the doctoral thesis of Ahmad (2026) and accommodates monotonic, unimodal and bathtub-shaped hazards within a single parametric family. From version 1.0.0 the estimation, goodness-of-fit, interval and Bayesian routines follow the final analysis code of that thesis.
Its upper tail is regularly varying with index -b, so
the survival function decays polynomially rather than exponentially.
That is what makes the family useful for heavy-tailed lifetime data, and
it has two consequences the package takes seriously: E(Z^r)
is finite only when b > r, and the moment generating
function does not exist at all.
dbetadanish(), pbetadanish(),
qbetadanish(), sbetadanish(),
hbetadanish() and rbetadanish(), with
ded(), ped(), qed(),
sed(), hed() and red() naming the
ED submodel directly. All are evaluated so as to hold accuracy far into
both tails: the quantile function uses the beta mirror identity rather
than subtracting a near-one probability from one, the survival function
is never formed by cancellation, and the distribution function stays
finite on the log scale where the baseline underflows.
(a, c)
ridge through it, so the four-parameter log-likelihood can never fall
below the submodel’s[1e-4, 1e4]; a
fit on its edge is reported as a supremum, with no AIC,
BIC, standard errors or goodness-of-fit statisticsbd_identified_coef() reports the fit through the
identified composite ac, which is what the data determine
when a and c cannot be separatedb = 1
ridge, when the information matrix is singular, or when starts were
discarded as degenerateRaw, incomplete and conditional moments with their existence conditions; Shannon (closed form), Renyi and Tsallis entropies; mean residual life and mean inactivity time; mean deviations; Lorenz and Bonferroni curves; probability weighted moments; order-statistic densities, distributions and moments; stress-strength reliability; hazard-shape classification via Glaser’s criterion; the tail index; and the Kullback-Leibler separation of a Beta-Danish distribution from its closest ED submodel.
Accelerated failure time models, mixture and promotion-time cure models with an ED or a four-parameter Beta-Danish kernel, and competing risks with Aalen-Johansen comparison and Gray’s test, each with Cox-Snell residual diagnostics.
bd_analyze_csv() takes a delimited file or spreadsheet
through reading, fitting, tabulation and optional figure output in one
call. See the “Analysing Your Own Data from a CSV File” vignette.
You can install the development version of BetaDanish from GitHub with:
# install.packages("devtools")
devtools::install_github("bilal-aiou/BetaDanish")Optional packages used by advanced modules (declared in
Suggests):
install.packages(c("coda", "MCMCpack", "cmprsk", "flexsurv", "readxl"))The Beta-Danish distribution is obtained by applying the beta-generated family of Eugene, Lee, and Famoye (2002) to the Danish baseline, whose cumulative distribution function and density are
\[G(z; c, k) = \left(\frac{kz}{1+kz}\right)^c, \qquad g(z; c, k) = ck\,(kz)^{c-1}(1+kz)^{-(c+1)}, \qquad z > 0,\]
with shape parameter \(c > 0\) and scale parameter \(k > 0\).
For a random variable \(Z \sim \text{BetaDanish}(a, b, c, k)\) with \(a, b, c, k > 0\), the CDF is the regularised incomplete beta function evaluated at the Danish CDF:
\[F_Z(z; a, b, c, k) = I_{G(z; c, k)}(a, b) = I_{(kz/(1+kz))^c}(a, b), \qquad z > 0,\]
where \(I_x(a, b) = B_x(a, b) / B(a, b)\) and \(B(a, b)\) is the beta function.
Differentiating the CDF yields the density
\[f_Z(z; a, b, c, k) = \frac{ck}{B(a, b)} \cdot \frac{(kz)^{ca - 1}}{(1 + kz)^{ca + 1}} \cdot \left[1 - \left(\frac{kz}{1 + kz}\right)^c\right]^{b - 1}, \qquad z > 0.\]
The case \(a = 1\) yields the three-parameter Exponentiated Danish (ED) submodel used throughout the case studies.
The package provides numerically stable d/p/q/r/h functions analogous to the base R distribution interface:
| Function | Purpose |
|---|---|
dbetadanish() |
Density (PDF) |
pbetadanish() |
Cumulative distribution (CDF) and survival |
qbetadanish() |
Quantile function |
rbetadanish() |
Random number generation |
hbetadanish() |
Hazard rate |
library(BetaDanish)
# 1. Evaluate the density, CDF, hazard
dbetadanish(x = 2, a = 1.5, b = 2, c = 3, k = 0.5)
pbetadanish(q = 2, a = 1.5, b = 2, c = 3, k = 0.5)
hbetadanish(x = 2, a = 1.5, b = 2, c = 3, k = 0.5)
# 2. Simulate data and fit a model
set.seed(123)
dat <- simulate_bd_data(n = 200, a = 1.5, b = 2, c = 3, k = 0.5,
censor_rate = 0.2)
fit <- fit_betadanish(survival::Surv(time, status) ~ 1, data = dat)
summary(fit)
# 3. Diagnostic plots
plot(fit, type = "all")
# 4. Compare against standard distributions
compare_distributions(fit)data("remission")
fit_bayes <- bayes_betadanish(
time = remission$time,
status = remission$status,
submodel = TRUE,
burnin = 2000,
mcmc = 5000,
seed = 1
)
print(fit_bayes)See the Bayesian Estimation vignette for full details.
data("melanoma")
melanoma$event <- ifelse(melanoma$status == 1, 1, 0)
fit_aft <- fit_bd_aft(
survival::Surv(time, event) ~ age + thickness,
data = melanoma
)
summary(fit_aft)
plot(fit_aft) # Cox-Snell residual diagnosticBoth mixture and promotion-time
cure models, on the Exponentiated Danish kernel by default or on the
four-parameter Beta-Danish kernel with
submodel = FALSE:
fit_cure <- fit_bd_cure(
formula_aft = survival::Surv(time, status) ~ 1,
formula_cure = ~ group,
data = mydata,
type = "mixture"
)
summary(fit_cure)fit_cr <- fit_bd_competing(time = time, cause = cause)
res <- cif_compare(fit_cr, plot = TRUE)
res$gray_testThe fitted Beta-Danish cumulative incidence functions are overlaid against the nonparametric Aalen-Johansen estimator, with Gray’s test reported for cause equality.
| Function | Property |
|---|---|
bd_entropy_shannon() |
Shannon (differential) entropy |
bd_order_stat_pdf() |
r-th order statistic density |
bd_kl_submodel() |
Kullback-Leibler separation from the ED submodel |
The whole workflow can be driven from a spreadsheet, with no
modelling code. Two columns are enough: time and
status (1 = event, 0 = censored).
# Not sure of the layout? Write a template and fill it in.
bd_csv_template("my_data.csv", type = "covariate")
# Read a file; time and status are guessed from common column names.
dat <- read_survival_data("my_data.csv", covar_cols = "all")
attr(dat, "bd_data_report") # what was read, dropped, and inferred
# Or run the whole analysis in one call.
res <- bd_analyze_csv(
"my_data.csv",
analysis = "univariate", # or "aft", "cure", "competing"
model = "both", # Beta-Danish and the ED submodel
output_dir = "results" # tables as CSV, figures as PNG
)
res # headline summary
res$tables$estimates # tidy parameter table
res$failures # empty if everything succeededNothing is written to disk unless output_dir is
supplied. Each model is fitted independently, so one failure is recorded
rather than losing the whole run.
| Function | Purpose |
|---|---|
bd_analyze_csv() |
Read, fit, tabulate and optionally save |
read_survival_data() |
Read and validate a file into a data frame |
bd_csv_template() |
Write a correctly shaped skeleton CSV |
| Dataset | n | Description |
|---|---|---|
remission |
128 | Bladder cancer remission times |
carbon_fibres |
100 | Breaking stress of carbon fibres (GPa) |
transplant |
91 | Bone marrow transplant survival |
aarset |
50 | Aarset device failure times (bathtub hazard) |
leukemia |
23 | Acute myelogenous leukemia survival |
melanoma |
205 | Malignant melanoma post-surgery |
guinea_pig |
72 | Guinea pig survival, virulent tubercle bacilli (days) |
The package ships with six tutorials:
bayes_betadanish()Browse them with:
browseVignettes("BetaDanish")If you use BetaDanish in published work, please cite the doctoral thesis in which the Beta-Danish distribution and its Exponentiated Danish submodel are developed:
Ahmad, B. (2026). Modeling Diverse Survival Patterns: The Development and Characterization of a New Four-Parameter Lifetime Distribution (Ph.D. thesis). Allama Iqbal Open University, Islamabad, Pakistan. Supervised by Dr. Muhammad Yameen Danish.
A BibTeX entry is available via:
citation("BetaDanish")Ahmad, B. (2026). Modeling Diverse Survival Patterns: The Development and Characterization of a New Four-Parameter Lifetime Distribution (Ph.D. thesis). Allama Iqbal Open University, Islamabad, Pakistan.
?fit_betadanish in Rvignette(package = "BetaDanish")Bilal Ahmad (maintainer) — Allama Iqbal Open University, Islamabad, Pakistan. bilalahmad.imcbh9@gmail.com
Muhammad Yameen Danish — Allama Iqbal Open University, Islamabad, Pakistan. yameen.danish@aiou.edu.pk
GPL-3