Introduction to MultiFrailty: Shared Frailty Regression Models

Overview

The MultiFrailty package provides tools for fitting and analyzing shared frailty survival regression models. Shared frailty models incorporate unobserved individual heterogeneity into proportional hazard settings.

Supported Frailty & Baseline Distributions

MultiFrailty supports 10 model combinations across 5 frailty families and 2 baseline hazard functions:

  • Frailty Distributions: none, gamma, ig (Inverse Gaussian), gl1 (Generalized Lindley Type 1), gl2 (Generalized Lindley Type 2).
  • Baseline Hazard Distributions: weibull (2-parameter Weibull) and gw (3-parameter Generalized Weibull).

Basic Usage Example

library(MultiFrailty)
library(survival)

# Generate synthetic survival data under Gamma frailty with Weibull baseline
set.seed(123)
dat <- r_frailty(n = 80, baseline = "weibull", bpar = c(2.0, 1.5),
                 frailty = "gamma", fpar = c(0.8),
                 x = matrix(rnorm(80), ncol = 1), beta = 0.5)

# Fit model using formula interface
fit <- multifrailty(Surv(time, status) ~ X1, data = dat,
                    baseline = "weibull", frailty = "gamma")

# Summarize fit
summary(fit)
#> 
#> =========================================================
#>  MultiFrailty Regression Model Fit (MLE)
#> =========================================================
#> Baseline Hazard : weibull 
#> Frailty Family  : gamma 
#> Sample Size (n) : 80 
#> Log-Likelihood  : -163.14 
#> AIC / BIC       : 334.28 / 343.81 
#> Frailty Var (SE): 0.2093 ( 0.1925 )
#> Optimizer       : Converged 
#> ---------------------------------------------------------
#> Parameter Estimates (Natural Scale):
#>        Estimate StdErr z_stat p_value   CI_lower  CI_upper Signif
#> lambda   2.6499 0.3788 6.9954  0.0000  1.9074434 3.3923778    ***
#> gamma    1.2771 0.1744 7.3249  0.0000  0.9353857 1.6188461    ***
#> theta    0.2093 0.1925 1.0875  0.2768 -0.1679262 0.5865439       
#> X1       0.2427 0.1472 1.6489  0.0992 -0.0457808 0.5311039      .
#> =========================================================

# Predict survival probabilities
pred_surv <- predict_frailty(fit, type = "survival", newtime = c(1, 2, 3))