我想根据梯度提升模型分析我的数据。
另一方面,由于我的数据是一种队列,我很难理解这个模型的结果。
这是我的代码。基于示例数据进行分析。
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”是 cox 部分可能性的结果。
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)=lambda0(t)*exp(f(x))
“危险”是危险函数。
但是,我想计算的是“生存函数”。
因为,我想将原始数据(data$status)的结果与预测结果(生存函数)进行比较。
请让我知道如何计算生存函数。
谢谢