Type: | Package |
Title: | Estimation and Additional Tools for Alternative Shared Frailty Models |
Version: | 1.14 |
Date: | 2025-08-24 |
Maintainer: | Diego Gallardo <dgallardo@ubiobio.cl> |
Description: | Provide estimation and data generation tools for new multivariate frailty models. This version includes the gamma, inverse Gaussian, weighted Lindley, Birnbaum-Saunders, truncated normal, mixture of inverse Gaussian, mixture of Birnbaum-Saunders, generalized exponential and Jorgensen-Seshadri-Whitmore as the distribution for frailty terms. For the basal model, it is considered a parametric approach based on the exponential, Weibull and the piecewise exponential distributions as well as a semiparametric approach. For details, see Gallardo et al. (2024) <doi:10.1007/s11222-024-10458-w>, Gallardo et al. (2025) <doi:10.1002/bimj.70044>, Kiprotich et al. (2025) <doi:10.1177/09622802251338984> and Gallardo et al. (2025) <doi:10.1038/s41598-025-15903-y>. |
Depends: | R (≥ 4.0.0), stats |
Imports: | survival, pracma, expint, msm |
Suggests: | frailtyHL |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
NeedsCompilation: | no |
Packaged: | 2025-08-24 17:16:17 UTC; Diego |
Author: | Diego Gallardo [aut, cre], Marcelo Bourguignon [aut], John Santib<c3><a1><c3><b1>ez [ctb], Gilbert Kiprotich [ctb], Pedro Ramos [ctb], Thomas Augustin [ctb], Zohreh Mohammadi [ctb] |
Repository: | CRAN |
Date/Publication: | 2025-08-24 23:10:14 UTC |
Computes the baseline cumulative hazard function.
Description
Provides the baseline cumulative hazard function (\Lambda_0
) for an object with extrafrail class.
Usage
baseCH(t, fit)
Arguments
t |
the vector of times for which the baseline cumulative hazard function should be computed. |
fit |
an object with extrafrail class. |
Details
Provides the baseline cumulative hazard function. When the baseline distribution is assumed as
the Weibull model, this function is \Lambda_0(t)=\lambda t^{\rho}
. For the piecewise
exponential model, this function is \Lambda_0(t)=\sum_{j=1}^L \lambda_j \nabla_j(t)
,
where \nabla_j(t)=0,
if t<a_{j-1}
, \nabla_j(t)=t-a_{j-1},
if a_{j-1}\leq t < a_{j}
and \nabla_j(t)=a_j-a_{j-1},
if t\geq a_{j}
, with a=(a_0=0, a_1, \ldots, a_{j-1}),
the
corresponding partition time.
Value
a vector with the same length that t, including the baseline cumulative hazard function related to t.
Author(s)
Diego Gallardo and Marcelo Bourguignon.
References
Gallardo, D.I., Bourguignon, M., Santibanez, J.L. (2025) The multivariate weighted Lindley frailty model for cluster failure time data. Biometrical Journal, 67(2), e70044.
Examples
#require(frailtypack)
require(survival)
data(rats, package="frailtyHL")
#Example for WL frailty model
fit.WL <- frailty.fit(survival::Surv(time, status) ~ rx + survival::cluster(litter),
dist.frail="WL", data = rats)
baseCH(c(80,90,100),fit.WL)
Fitted different shared frailty models
Description
frailty.fit computes the maximum likelihood estimates based on the EM algorithm for the shared gamma, inverse gaussian, weighted Lindley, Birnbaum-Saunders, truncated normal, mixture of inverse gaussian and mixture of Birbaum-Saunders frailty models.
Usage
frailty.fit(formula, data, dist.frail="gamma", dist = "np", prec = 1e-04,
max.iter = 1000, part=NULL)
Arguments
formula |
A formula that contains on the left hand side an object of the type Surv and on the right hand side a +cluster(id) statement, possibly with the covariates definition. |
data |
A data.frame in which the formula argument can be evaluated |
dist.frail |
the distribution assumed for the frailty. Supported values: gamma (GA also is valid), IG (inverse gaussian), WL (weighted Lindley), BS (Birnbaum-Saunders), TN (truncated normal), MIG (mixture of IG), MBS (mixture of BS), GE (generalized exponential) and JSW (Jorgensen-Seshadri-Whitmore). |
dist |
the distribution assumed for the basal model. Supported values: weibull, pe (piecewise exponential), exponential and np (non-parametric). |
prec |
The convergence tolerance for parameters. |
max.iter |
The maximum number of iterations. |
part |
partition time (only for piecewise exponential distribution). |
Details
The multiplicative frailty models are defined in the following way.
Consider the time to the event of an individual to be denoted by a random variable T
, where the latent effect
Z
acts multiplicative in the baseline hazard function, whose hazard function, conditional on a latent variable Z
,
satisfies
\lambda(t|Z)=Z \,\lambda_0(t), t >0,
where \lambda_0(t)
is a baseline hazard function and Z
is the frailty of the individual, and \Lambda_0(t) = \int_{0}^{t}\lambda_0(w)\textrm{d}w
is the cumulative baseline hazard function.
Let Z_i > 0
, i=1,\ldots,n
, be the latent random variable representing the frailty term associated with the i
-th cluster,
which has n_i
observations (note that the n_i
's can be different, i.e., the cluster can be unbalanced).
The case n_i=1
, \forall i=1,\ldots,n
, is known in the literature as the univariate case.
In a multiplicative hazards framework, given Z_i = z_i
and a vector of p
covariates (without intercept term), say
\mathbf{x}_i=(x_{i1},\ldots,x_{ip})
, the conditional hazard function for the observations in the i
-th cluster is given by
\lambda(t_{i1},\ldots,t_{in_i}\mid z_i, \mathbf{X}_i)=z_i \sum_{j=1}^{n_i} \lambda_0(t) \exp(\mathbf{x}_{ij}^\top {\bm \beta}), \quad i=1,\ldots,n,
where {\bm \beta}^\top=(\beta_1,\ldots,\beta_p)
are the regression parameters, respectively, and the distribution of Z
corresponds to a nonnegative random variable. In this package, it is considered Z
such as \mathbb{E}(Z)=1
and Var(Z)=\theta
.
The options avaliable for the distribution of Z
and the corresponding probability density function are:
- gamma:
f(z;\theta)=\frac{1}{\theta^{1\theta}\Gamma(1/\theta)}z^{1/\theta-1}e^{-z/\theta}.
- IG:
f(z;\theta)=\sqrt{\frac{1}{2\pi\theta z^3}}\exp\left[-\frac{(z-1)^2}{2\theta z}\right].
- WL (Mota et al; 2021 for the univariate case; Tyagi et al., 2021 for the bivariate case, Gallardo et al. 2025 for the general case):
f(z;\theta)=\frac{\theta}{2\Gamma(b_\theta)}a_\theta^{-b_\theta-1}z^{b_\theta-1}(1+z)\exp\left(-\frac{z}{a_\theta}\right),
where a_\theta=\theta(\theta+4)/[2(\theta+2)]
and b_\theta=4/[\theta(\theta+4)]
.
- BS (Leao et al; 2021 for the univariate case; Gallardo et al., 2024 for the general case):
f(z;\theta)=\frac{\exp(\phi_\theta/2)\sqrt{\phi_\theta+1}}{4z^{3/2}\sqrt{\pi}}\left(z+\frac{\phi_\theta}{\phi_\theta+1}\right)\exp\left[-\frac{\phi_\theta}{4}\left(\frac{z(\phi_\theta+1)}{\phi_\theta}+\frac{\phi_\theta}{z(\phi_\theta+1)}\right)\right],
where \phi_\theta=(1+\sqrt{3\theta+1}-\theta)/\theta
.
The marginal survival function for the times in a same cluster can be expressed in terms of the Laplace transform as
S(t_{i1},\ldots,t_{in_i}\mid {\bm X}_i)=\mathcal{L}_Z\left(\sum_{j=1}^{n_i}\exp(\mathbf{x}_i^\top {\bm \beta} \Lambda_0(t_{ij}))\right).
For the different models considered here, the Laplace transform is given by
- gamma:
\mathcal{L}_Z(s)=(1+\theta s)^{-1/\theta}.
- IG:
\mathcal{L}_Z(s)=\exp\left[\frac{1}{\theta}\left(1-\sqrt{1+2\theta s}\right)\right].
- WL:
\mathcal{L}_Z(s)=(1+a_\theta s)^{-b_\theta-1}(1+\theta s/2).
- BS:
\mathcal{L}_Z(s)=\frac{1}{2}\left[1+\left(1+\frac{4s}{\phi_\theta+1}\right)^{-1/2}\right]\exp\left[\frac{\phi_\theta}{2}\left(1-\left(1+\frac{4s}{\phi_\theta+1}\right)^{1/2}\right)\right].
The estimation is performed based on the EM algorithm. For the weibull, exponential and piecewise exponential distributions
as the basal model (\Lambda_0(\cdot)
), the M1-step is performed using the optim function. For the non-parametric case,
the M1-step is based on the coxph function from the survival package.
Value
an object of class "extrafrail" is returned. The object returned for this functions is a list containing the following components:
coefficients |
A named vector of coefficients |
se |
A named vector of the standard errors for the estimated coefficients. |
t |
The vector of times. |
delta |
The failure indicators. |
id |
A variable indicating the cluster which belongs each observation. |
x |
The regressor matrix based on cov.formula (without intercept term). |
dist |
The distribution assumed for the basal model. |
dist.frail |
The distribution assumed for the frailty variable. |
tau |
The Kendall's tau coefficient. |
logLik |
The log-likelihood function (only when the Weibull model is specified for the basal distribution). |
Lambda0 |
The observed times and the associated cumulative hazard function (only when the non-parametric option is specified for the basal distribution) |
part |
the partition time (only for piecewise exponential model). |
Author(s)
Diego Gallardo, Marcelo Bourguignon and John Santibanez.
References
Gallardo, D.I., Bourguignon, M., Santibanez, J.L. (2025) The shared weighted Lindley frailty model for cluster failure time data. Biometrical Journal, 67, e70044.
Gallardo, D.I., Bourguignon, M., Romeo, J. (2024) Birnbaum-Saunders frailty regression models for clustered survival data. Statistics and Computing, 34, 141.
Leao, J., Leiva, V., Saulo, H., Tomazella, V. (2017). Birnbaum-Saunders frailty regression models: Diagnostics and application to medical data. Biometrical journal, 59, 291-317.
Mota, A., Milani, E., Calsavara, V., Tomazella, V., Leao, J., Ramos, P., Ferreira, P., F., L. (2021). Weighted lindley frailty model: estimation and application to lung cancer data. Lifetime Data Analysis, 27, 561-587.
Tyagi, S., Pandey, A., Agiwal, V., Chesneau, C. (2021). Weighted Lindley multiplicative regression frailty models under random censored data. Computational and Applied Mathematics, 40, 265.
Examples
require(survival)
#require(frailtyHL)
data(rats, package="frailtyHL")
#Fit for WL frailty model
fit.WL <- frailty.fit(survival::Surv(time, status)~ rx+ survival::cluster(litter),
dist.frail="WL", data = rats)
summary(fit.WL)
#Fit for gamma frailty model
fit.GA <- frailty.fit(survival::Surv(time, status) ~ rx + survival::cluster(litter),
dist.frail="gamma", data = rats)
summary(fit.GA)
Generated random variables from the weighted Lindley distribution.
Description
Generated random variables from the weighted Lindley distribution with mean 1.
Usage
rWL(n, theta = 1)
Arguments
n |
number of observations. If length(n) > 1, the length is taken to be the number required. |
theta |
variance of the variable. |
Details
The weighted Lindley distribution has probability density function
f(z;\theta)=\frac{\theta}{2\Gamma(\theta)}a_{\theta}^{-b_{\theta}-1}z^{b_{\theta}-1}(1+z)\exp\left(-\frac{z}{a_{\theta}}\right), \quad z, \theta>0,
where a_{\theta}=\frac{\theta(\theta+4)}{2(\theta+2)}
and b_{\theta}=\frac{4}{\theta(\theta+4)}
. Under
this parametrization, E(Z)=1 and Var(Z)=\theta
.
Value
a vector of length n with the generated values.
Author(s)
Diego Gallardo and Marcelo Bourguignon.
References
Gallardo, D.I., Bourguignon, M. (2022) The multivariate weighted Lindley frailty model for cluster failure time data. Submitted.
Examples
rWL(10, theta=0.5)
Print a summary for a object of the "extrafrail" class.
Description
Summarizes the results for a object of the "extrafrail" class.
Usage
## S3 method for class 'extrafrail'
summary(object, ...)
Arguments
object |
an object of the "extrafrail" class. |
... |
for extra arguments. |
Details
Supported frailty models are: - gamma frailty model - inverse gaussian frailty model - weighted frailty model - Birnbaum-Saunders frailty model - Truncated normal frailty model - Mixture of inverse gaussian frailty model - Mixture of Birnbaum-Saunders frailty model
Value
A complete summary for the coefficients extracted from a "extrafrail" object.
Author(s)
Diego Gallardo and Marcelo Bourguignon.
References
Gallardo and Bourguignon (2022).
Examples
#require(frailtyHL)
require(survival)
data(rats, package="frailtyHL")
fit <- frailty.fit(survival::Surv(time, status) ~ rx + survival::cluster(litter),
dist.frail="WL", data = rats)
summary(fit)