Learn R Programming

curesurv (version 0.1.2)

curesurv: Fitting cure models using curesurv

Description

Fits the non-mixture cure model proposed by Boussari et al. (2020), or mixture cure model such as proposed by De Angelis et al. (1999) with the possibility to correct the background mortality as proposed by Phillips et al. (2002) in the net survival framework.

Non-mixture cure model

The Boussari model

This model allows for direct estimation of time-to-null-excess-hazard which can be interpreted as time-to-cure. The parametrization offers various link functions for the covariates effects on the time-to-null-excess-hazard: τ(zk) = g(τ0 + zk τk). If link_tau=linear, then g is the identity function. If link_tau=loglinear then g is the exponential function. In this model, the cure proportion is expressed as: π(z;θ) = exp(−g(τ0 + zk τk) \text{Beta}((\alpha_{0} + Z_{k} \alpha_{k}), \beta)).

Mixture cure model

The user can choose the survival function modeling the uncured patients net survival among Weibull (default) and exponentiated Weibull. The parametrization for weibull distribution is Su(t) = exp(−λtγ)exp(δZ). The related hazard function is expressed as: λu(t) = γλtγ− 1 exp(δz) The net survival and the excess hazard functions can be respectively expressed as SE(t) = π(z;β) + (1 − π(z;β)) * Su(t). and λE(t)=[((1−π(z;β))fu(t))/(π(z;β) + (1 − π(z;β))Su(t))], with π(z;β) = [1/((1 + exp(−[β0 + Zβ])))].

Correction of background mortality

Usually, in the net survival framework the expected hazard is directly obtained from life tables. However some patients in cancer registries can have some factors impacting their expected mortality rates (such as comorbidities, deprivation) that are not always accounted #' for in the available life tables, and there is a need to account for this problem. The correction proposed by Phillips et al (2002) assumes that λexp(t,z)=αλpop(t,zk) with λexp(t,z) the patient expected hazard and λpop(t,zk) the population hazard obtained from life table.

Usage

curesurv(
  formula,
  data,
  pophaz = NULL,
  cumpophaz = NULL,
  pophaz.alpha = FALSE,
  model = "nmixture",
  dist = "weib",
  link_tau = "linear",
  ncoor_des = NULL,
  init = NULL,
  maxit_opt = 10000,
  gradient = FALSE,
  hessian_varcov = TRUE,
  optim_func = "optim",
  optimizer = "optim",
  method_opt = "L-BFGS-B",
  trace = 0,
  nvalues = 10,
  iter_eps = 1e-08,
  optim_fixed = NULL,
  clustertype = NULL,
  nproc = 1,
  subset,
  na.action,
  sign_delta,
  ...
)

Value

An object of class curesurv. This object is a list containing the following components:

iter_coords

number of iterations performed to obtain initial values of the parameters in tneh model only

coefficients

estimates found for the model

estimates

estimates in the appropriate scale for the model

loglik

corresponds to the log-likelihood computed; if only the pophaz is provided, the log-likelihood doesn't correspond to the total log-likelihood. The part of the cumulative population hazard is a constant and is dropped for the computation as presented in Esteve et al. (1990); The total log-likekihood is calculed if the user specifies a column name equal expected cumulative mortality (cumpophaz)

iteractions

the number iterations attained to estimate the parameters of the related model

evaluations

the number of times the log-likelihood function was evaluated until to reach the convergence

convergence

an integer code as in optim when L-BFGS-B method is used in optim.

message

a character string returned by the optimizer

varcov

the variance covariance matrix of the parameters estimated

varcov_star

the variance covariance matrix of the coefficients of the model of interest

std_err

the standard errors of the estimated parameters

std_err_star

the standard errors of the coefficients of the model of interest

AIC

the Akaike information criteria from the model of interest

n.events

the number of events in the dataset. Events are considered

n.obs

the number of observations in the dataset.

model

if fitted model is a mixture model, it returns "mixture". If fitted model is Time-To-Null Excess Hazard model, it returns "nmixture".

Terms

the representation of the terms in the model

pophaz.alpha

logical value to indicate if fitted cure model requires correction of mortality rates by a scale parameter

pophaz

corresponds to the the population instantaneous mortality rates.

cumpophaz

corresponds to the population cumulative mortality rates.

frailtyhp

a booleen to be specified if a frailty correction is needed for the population hazard.

dist

For mixture model, it corresponds to the function used to fit the uncured patients survival. By default, ("weib") is used. Another option is the exponentiated Weibull function ("eweib"). For non-mixture models, this argument corresponds to the name of the model. By default, ("tneh") is used to fit the time to null excess hazard model proposed by Boussari et al.

xmax

maximum follow-up time to evaluate the TTC

z_tau

Covariates acting on parameter tau in non mixture cure model tneh

link_tau

returned only for model ="tneh"; returned by default is "linear" or "loglinear" for linear or loglinear link function of covariates acting on tau parameter.

z_alpha

Covariates acting on parameter alpha in non mixture cure model tneh

z_c

Covariates acting on cure fraction in mixture cure model

z_ucured

covariates acting on survival of uncured in mixture cure model

z_pcured

Covariates acting on cure fraction in mixture cure model

z_ucured

covariates acting on survival of uncured in mixture cure model

data

the dataset used to run the model

call

the function call based on model

formula

the formula as a formula object

Arguments

formula

a formula object of the Surv function with the response on the left of a ~ operator and the terms on the right. The response must be a survival object as returned by the Surv function (time in first and status in second).

data

a data frame in which to interpret the variables named in the formula

pophaz

corresponds to the name of the column in the data representing the values of the population instantaneous mortality rates. If the pophaz argument is not specified, overall survival is fitted.

cumpophaz

corresponds to the name of the column in the data representing the values of the instantaneous population cumulative mortality rates. If not specified, the model cannot be compared with model with pophaz.alpha = TRUE using AIC.

pophaz.alpha

to be specified if user want an excess hazard model with correction of mortality rates by a scale parameter

model

To fit a mixture model, specify model = "mixture". To fit Time-To-Null Excess Hazard model the argument is model = "tneh".

dist

For mixture model, it corresponds to the function used to fit the uncured patients survival. By default, ("weib") is used. Another option is the exponentiated Weibull function ("eweib"). For non-mixture models, this argument corresponds to the name of the model. By default, ("tneh") is used to fit the time to null excess hazard model proposed by Boussari et al..

link_tau

must be specified only for model ="tneh". Default is linear link ("linear"). Another link is loglinear ("loglinear").

ncoor_des

if null, the initial parameters are defaults. If else, the initials parameters are obtained via coordinates descent algorithms

init

a list containing the vector of initial values theta_init, the vector of upper bounds theta_upper and the vector of the lower bounds theta_lower for the parameters to estimate. For each elements of the list, give the name of the covariate followed by the vector of the fixed initials values

maxit_opt

option for maximum of iteration in optimization function

gradient

True if optimization process requires gradient to be provided

hessian_varcov

TRUE if user wants variance covariance matrix using hessian function

optim_func

specify which function to be used for optimization purposes.

optimizer

only use this argument when optim_func="bbmle"

method_opt

optimization method used in optim function. The default algorithm is "L-BFGS-B".

trace

Non-negative integer corresponding to the trace argument as in optim

nvalues

number of set of initial values when using multiple initials values

iter_eps

this parameter only works when ncoor_des = "iter"; It allows to run coordinates descent algorithm until the stooping criteria equal at least to the specified value.

optim_fixed

to specify with parameter to not estimated in the estimation process

clustertype

related to cluster type in marqLevAlg package

nproc

number of processors for parallel computing as in marqLevAlg

subset

an expression indicating which subset of the data should be used in the modeling. All observations are included by default

na.action

as in the coxph function, a missing-data filter function.

sign_delta

only used for mixture cure rate models to specify if the effects or minus the effects of covariates acting on uncured survival to be considered. Default will be sign_delta = "1". The alternative is sign_delta = "-1".

...

additional parameters such z_alpha, and z_tau. For more details, use the help function.

Author

Juste Goungounga, Judith Breaud, Olayide Boussari, Laura Botta, Valerie Jooste

References

Boussari O, Bordes L, Romain G, Colonna M, Bossard N, Remontet L, Jooste V. Modeling excess hazard with time-to-cure as a parameter. Biometrics. 2021 Dec;77(4):1289-1302. doi: 10.1111/biom.13361. Epub 2020 Sep 12. PMID: 32869288. (pubmed)

Boussari O, Romain G, Remontet L, Bossard N, Mounier M, Bouvier AM, Binquet C, Colonna M, Jooste V. A new approach to estimate time-to-cure from cancer registries data. Cancer Epidemiol. 2018 Apr;53:72-80. doi: 10.1016/j.canep.2018.01.013. Epub 2018 Feb 4. PMID: 29414635. (pubmed)

Phillips N, Coldman A, McBride ML. Estimating cancer prevalence using mixture models for cancer survival. Stat Med. 2002 May 15;21(9):1257-70. doi: 10.1002/sim.1101. PMID: 12111877. (pubmed)

De Angelis R, Capocaccia R, Hakulinen T, Soderman B, Verdecchia A. Mixture models for cancer survival analysis: application to population-based data with covariates. Stat Med. 1999 Feb 28;18(4):441-54. doi: 10.1002/(sici)1097-0258(19990228)18:4<441::aid-sim23>3.0.co;2-m. PMID: 10070685. (pubmed)

Botta L, Caffo O, Dreassi E, Pizzoli S, Quaglio F, Rugge M, Valsecchi MG. A new cure model that corrects for increased risk of non-cancer death: analysis of reliability and robustness, and application to real-life data. BMC Med Res Methodol. 2023 Mar 25;23(1):70. doi: 10.1186/s12874-023-01876-x. PMID: N/A. (pubmed)

See Also

predict.curesurv(), print.curesurv(), browseVignettes("curesurv")

Examples

Run this code

library("curesurv")
library("survival")



# Net survival setting
# Mixture cure model with Weibull function for the uncured patients survival:
# no covariate

theta_init2 <- rep(0, 3)
theta_lower2 <- c(-Inf,-Inf,-Inf)
theta_upper2 <- c(Inf, Inf, Inf)


fit_m0_ml <- curesurv(Surv(time_obs, event) ~ 1 | 1,
             pophaz = "ehazard",
             cumpophaz = "cumehazard",
             model = "mixture", dist = "weib",
             data = testiscancer,
             init = list(theta_init = theta_init2,
             theta_lower = theta_lower2,
             theta_upper = theta_upper2),
             method_opt = "L-BFGS-B")
fit_m0_ml



# Mixture cure model with Weibull function for the uncured patients survival:
#standardized age as covariate


fit_m2_ml <- curesurv(Surv(time_obs, event) ~ age_cr | age_cr,
                   pophaz = "ehazard",
                   cumpophaz = "cumehazard",
                   model = "mixture", dist = "weib",
                   data = testiscancer,
                   method_opt = "L-BFGS-B")

 fit_m2_ml



## Non mixture cure model
### TNEH Null model
#### loglinear effect of covariates on time-to-null excess hazard

theta_init2 <- rep(0, 3)
theta_lower2 <- c(-Inf,-Inf,-Inf)
theta_upper2 <- c(Inf, Inf, Inf)

fit_m0_mult_tneh <- curesurv(Surv(time_obs, event) ~ 1,
                          pophaz = "ehazard",
                          cumpophaz = "cumehazard",
                          model = "nmixture",
                          dist = "tneh", link_tau = "loglinear",
                          data = testiscancer,
                          init = list(theta_init = theta_init2,
                                      theta_lower = theta_lower2,
                                      theta_upper = theta_upper2),
                          method_opt = "L-BFGS-B")


fit_m0_mult_tneh

#### Additive parametrization
theta_init2 <- c(1, 6, 6)
theta_lower2 <- c(0,1,0)
theta_upper2 <- c(Inf, Inf, Inf)

fit_m0_ad_tneh <- curesurv(Surv(time_obs, event) ~ 1,
                          pophaz = "ehazard",
                          cumpophaz = "cumehazard",
                          model = "nmixture",
                          dist = "tneh", link_tau = "linear",
                          data = testiscancer,
                          init = list(theta_init = theta_init2,
                                      theta_lower = theta_lower2,
                                      theta_upper = theta_upper2),
                          method_opt = "L-BFGS-B")



 fit_m0_ad_tneh

#### Additive parametrization, with covariates
fit_m1_ad_tneh <- curesurv(Surv(time_obs, event) ~ z_alpha(age_cr) +
                          z_tau(age_cr),
                          pophaz = "ehazard",
                          cumpophaz = "cumehazard",
                          model = "nmixture",
                          dist = "tneh", link_tau = "linear",
                          data = testiscancer,
                          method_opt = "L-BFGS-B")



 fit_m1_ad_tneh




Run the code above in your browser using DataLab