Fitting Dynamic Frailty Models with the EM Algorithm

Fits semiparametric dynamic frailty models according to the methodology of Putter and van Houwelingen (2015) . Intermediate models, where the frailty is piecewise constant on prespecified intervals, are also supported. The frailty process is taken to have a specific auto-correlation structure, and the supported distributions include gamma, inverse Gaussian, power variance family (PVF) and positive stable.

This is an R package for fitting semiparametric dynamic frailty models with the EM algorithm. The hazard for individual j from cluster i is specified as: λi**j(t|Zi(t)) = Zi(t)exp(βxi**j(t))λ0(t). The model used here is described in detail in Putter & van Houwelingen (2015). The distribution of Zi(t) is described by two parameters: θ, that is an inverse-variability parameter of Zi(t) for a fixed t, and λ, that describes the autocorrelation of the process, so that for t1 ≤ t2 cor(Zi(t1),Zi(t2)) = exp(λ(t2 − t1)).

The estimation process is that for fixed (θ, λ) the maximized profile likelihood is calculated, i.e. maximized with respect to (β, λ0). This profile likelihood is finally maximized itself.


The development version from GitHub:


The following packages are needed to build dynfrail:

install.packages(c("RcppArmadillo", "tibble", "magrittr", "dplyr", "tidyr"))

The functioning of the package is described in the documentation of the main fitting function, dynfrail().


  • gamma, PVF, compount Poisson, inverse Gaussian distributions
  • flexible adjustment of estimation parameters
  • semiparametric Z(t) that changes values at every t or piecewise constant Z(t)
  • clustered survival data & recurrent events (calendar time or gaptime) ar supported


  • dynfrail() has a friendly syntax very similar to the frailtyEM package: next to a formula and data argument, the distribution argument is used to specify the distribution parameters and the control parameter is used for controling the precision of the estimation.
  • dynfrail_prep() and dynfrail_fit() are used internally by dynfrail() but are made user-available. The first one prepares the input of dynfrail() to make it suitable for the actual EM algorithm. The second one performs one EM algorithm for fixed (θ, λ) to estimate the maximum (β, λ0).


  • slow even for medium sized data sets. It is recommended to start with a small number of piecewise constant intervals and/or a subset of the data
  • no direct standard errors for (θ, λ).


Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.5.2 by Theodor Adrian Balan, a year ago

Browse source code at

Authors: Theodor Adrian Balan

Documentation:   PDF Manual  

Task views: Survival Analysis

GPL (>= 2) license

Imports Rcpp, magrittr, tibble, dplyr, tidyr

Depends on survival

Suggests frailtyEM, knitr, parfm, ggplot2

Linking to Rcpp, RcppArmadillo

See at CRAN