Nothing
Survival distribution container for efficient storage, management, and interpolation of survival model predictions.
Install the development version from GitHub:
# install.packages("pak")
pak::pak("mlr-org/survdistr")
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
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.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.