Function simSurv() and rSurvtime2() simulate arbitrary (Cox-type) survival times using the inversion method. Function simSurv() is a simple wrapper that calls rSurvtime2(). The functions are based on the R package CoxFlexBoost implementation rSurvtime() and only slightly modify the code.

## Simulate a pre-specified survival times data set.
simSurv(n = 300)

## Simulate arbitrary survival times.
rSurvTime2(lambda, x, cens_fct, upper = 1000, ...,
  file = NULL, subdivisions = 1000)

Arguments

n

The number of individuals for which survival times should be simulated.

lambda

function. Baseline hazard \(\lambda(t, x)\) where time must be first argument.

x

matrix. (Sampled) values for covariates (without time).

cens_fct

function. Function to compute (random) censoring.

upper

upper boundary of the interval the random survival times fall into.

...

further arguments to be passed to lambda or cens_fct.

file

character. name of the data file the generated data set should be stored into (e.g., "survtimes.RData") or NULL if the dataset should directly be returned in R.

subdivisions

The maximum number of subintervals for the integration.

Details

This is basically a slight modification according the computation of the integral, see the manual page of function rSurvtime() of package CoxFlexBoost for details.

Value

A data.frame consisting of the observed survival time (time), the non-censoring indicator (event) and further covariates x is returned. If file is specified, the data.frame is additionally stored on the disc.

References

Benjamin Hofner (2016). CoxFlexBoost: Boosting Flexible Cox Models (with Time-Varying Effects). R package version 0.7-0.

Ralph Bender and Thomas Augustin and Maria Blettner (2005), Generating Survival Times to Simulate Cox Proportional Hazards Models. Statistics in Medicine, 24, 1713-1723.

Examples

## The following shows the code of the
## wrapper function simSurv().
set.seed(111)
n <- 100
X <- matrix(NA, nrow = n, ncol = 3)
X[, 1] <- runif(n, -1, 1)
X[, 2] <- runif(n, -3, 3)
X[, 3] <- runif(n, -1, 1)

## Specify censoring function.
cens_fct <- function(time, mean_cens) {
  ## Censoring times are independent exponentially distributed.
  censor_time <- rexp(n = length(time), rate = 1 / mean_cens)
  event <- (time <= censor_time)
  t_obs <- apply(cbind(time, censor_time), 1, min)
  ## Return matrix of observed survival times and event indicator.
  return(cbind(t_obs, event))
}

## log(time) is the baseline hazard.
lambda <-  function(time, x) {
  exp(log(time) + 0.7 * x[1] + sin(x[2]) + sin(time * 2) * x[3])
}

## Simulate data with lambda() and cens_fct().
d <- rSurvTime2(lambda, X, cens_fct, mean_cens = 5)