Survival models may have very different structures.
This function creates a unified representation of a survival model, which can be further processed by various survival
explainers (see also explain
).
Please NOTE, that the model
is actually the only required argument.
But some survival explainers may require additional arguments.
explain.default(model, data = NULL, y, times = NULL, predict_function = yhat, link = I, label = tail(class(model), 1), ...) explain(model, data = NULL, y, times = NULL, predict_function = yhat, link = I, label = tail(class(model), 1), ...)
model | object - a survival model to be explained |
---|---|
data | data.frame, tibble or matrix - data that will be used by survival explainers. If not provided then will be extracted from the model |
y | object of class 'surv', contains event status and times |
times | optional argument, the vector of time points on which survival probability will be predicted |
predict_function | function that takes three arguments: model, new data, vector with times, and returns numeric vector or matrix with predictions. If not passed, function |
link | function - a transformation/link function that shall be applied to raw model predictions |
label | character - the name of the survival model. By default it's extracted from the 'class' attribute of the model. |
... | other parameters |
An object of the class 'surv_explainer'.
It's a list with following fields:
model
the explained model
data
the dataset
y
event statuses and times
times
time points on which survival probability is predicted
predict_function
function that may be used for model predictions, shall return a single numerical value for each time.
link
function - a transformation/link function that shall be applied to raw model predictions
class
class/classes of a model
label
label, by default it's the last value from the class
vector, but may be set to any character.
library(survxai) library(rms) library(randomForestSRC)#> #>#> #> #>#> #>#>#> #>data(pbc, package = "randomForestSRC") pbc <- pbc[complete.cases(pbc),] predict_times <- function(model, data, times){ prob <- rms::survest(model, data, times = times)$surv return(prob) } cph_model <- cph(Surv(days/365, status)~., data=pbc, surv=TRUE, x = TRUE, y=TRUE) surve_cph <- explain(model = cph_model, data = pbc[,-c(1,2)], y = Surv(pbc$days/365, pbc$status), predict_function = predict_times)