Skip to content

mlr-org/survdistr

survdistr

Survival distribution container for efficient storage, management, and interpolation of survival model predictions.

r-cmd-check Codecov test coverage CRAN Status

Installation

Install the development version from GitHub:

# install.packages("pak")
pak::pak("mlr-org/survdistr")

Examples

Linear interpolation of a survival matrix using the survDistr R6 class:

library(survdistr)

# generate survival matrix
mat = matrix(data = c(0.9,0.6,0.4,0.8,0.8,0.7), nrow = 2,
             ncol = 3, byrow = TRUE)
x = survDistr$new(x = mat, times = c(12, 34, 42), method = "linear_surv")
x
## A [2 x 3] survival matrix
## Number of observations: 2
## Number of time points: 3
## Interpolation method: Piecewise Constant Density (Linear Survival)
# stored survival matrix
x$data()
##       12  34  42
## [1,] 0.9 0.6 0.4
## [2,] 0.8 0.8 0.7
# S(t) at requested time points (linear interpolation)
x$survival(times = c(5, 30, 42, 50))
##              5        30  42  50
## [1,] 0.9583333 0.6545455 0.4 0.2
## [2,] 0.9166667 0.8000000 0.7 0.6
# Cumulative hazard H(t)
x$cumhazard(times = c(5, 42))
##               5        42
## [1,] 0.04255961 0.9162907
## [2,] 0.08701138 0.3566749
# Probability density f(t)
x$density(times = c(5, 30, 42))
##                5         30     42
## [1,] 0.008333333 0.01363636 0.0250
## [2,] 0.016666667 0.00000000 0.0125
# Hazard h(t)
x$hazard(times = c(5, 30, 42))
##                5         30         42
## [1,] 0.008695652 0.02083333 0.06250000
## [2,] 0.018181818 0.00000000 0.01785714

Interpolation of a Kaplan-Meier survival curve using exported R function that calls C++ code:

library(survival)

fit = survfit(formula = Surv(time, status) ~ 1, data = veteran)
tab = data.frame(time = fit$time, surv = fit$surv)
head(tab)
##   time      surv
## 1    1 0.9854015
## 2    2 0.9781022
## 3    3 0.9708029
## 4    4 0.9635036
## 5    7 0.9416058
## 6    8 0.9124088
tail(tab)
##     time        surv
## 96   411 0.045022553
## 97   467 0.036018043
## 98   553 0.027013532
## 99   587 0.018009021
## 100  991 0.009004511
## 101  999 0.000000000
# constant S(t) interpolation
interp(
  x = tab$surv,
  times = tab$time,
  eval_times = c(0, 3.5, 995)
)
##           0         3.5         995 
## 1.000000000 0.970802920 0.009004511
# linear S(t) interpolation
interp(
  x = tab$surv,
  times = tab$time,
  eval_times = c(0, 3.5, 995),
  method = "linear_surv"
)
##           0         3.5         995 
## 1.000000000 0.967153285 0.004502255
# exponential S(t) interpolation
interp(
  x = tab$surv,
  times = tab$time,
  eval_times = c(0, 3.5, 995),
  method = "exp_surv"
)
##         0       3.5       995 
## 1.0000000 0.9671464 0.0000000

Code of Conduct

Please note that the survdistr project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

About

Survival Distribution Container with Flexible Interpolation Methods

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Contributors