Я бы хотел проанализировать свои данные на основе модели с градиентом.
С другой стороны, поскольку мои данные являются своего рода когортой, у меня возникают проблемы с пониманием результата этой модели.
Вот мой код. Анализ выполнен на основе данных примера.
install.packages("randomForestSRC")
install.packages("gbm")
install.packages("survival")
library(randomForestSRC)
library(gbm)
library(survival)
data(pbc, package="randomForestSRC")
data <- na.omit(pbc)
set.seed(9512)
train <- sample(1:nrow(data), round(nrow(data)*0.7))
data.train <- data[train, ]
data.test <- data[-train, ]
set.seed(9741)
gbm <- gbm(Surv(days, status)~.,
data.train,
interaction.depth=2,
shrinkage=0.01,
n.trees=500,
distribution="coxph")
summary(gbm)
set.seed(9741)
gbm.pred <- predict.gbm(gbm,
n.trees=500,
newdata=data.test,
type="response")
Когда я читаю документацию пакета, "gbm.pred" является результатом частичной вероятности Кокса.
set.seed(9741)
lambda0 = basehaz.gbm(t=data.test$days,
delta=data.test$status,
t.eval=sort(data.test$days),
cumulative = FALSE,
f.x=gbm.pred,
smooth=T)
hazard=lambda0*exp(gbm.pred)
В этом коде lambda0 - базовая функция опасности.
Итак, по формуле: h (t / x) = лямбда0 (t) * exp (f (x))
«Опасность» - это функция опасности.
Однако, то, что я хотел вычислить, было "функцией выживания".
Потому что я хотел бы сравнить исход исходных данных (data $ status) с результатом прогнозирования (функция выживания).
Пожалуйста, дайте мне знать, как рассчитать функцию выживания.
Спасибо