我想用R开发一个Cox比例风险模型,用它来预测输入并评估模型的准确性。对于评估,我想使用Brior分数。
# import various packages, needed at some point of the script
library("survival")
library("survminer")
library("prodlim")
library("randomForestSRC")
library("pec")
library("rpart")
library("mlr")
library("Hmisc")
library("ipred")
# load lung cancer data
data("lung")
head(lung)
# recode status variable
lung$status <- lung$status-1
# Delete rows with missing values
lung <- na.omit(lung)
# split data into training and testing
## 80% of the sample size
smp_size <- floor(0.8 * nrow(lung))
## set the seed to make your partition reproducible
set.seed(123)
train_ind <- sample(seq_len(nrow(lung)), size = smp_size)
# training and testing data
train.lung <- lung[train_ind, ]
test.lung <- lung[-train_ind, ]
# time and failure event
s <- Surv(train.lung$time, train.lung$status)
# create model
cox.ph2 <- coxph(s~age+meal.cal+wt.loss, data=train.lung)
# predict
pred <- predict(cox.ph2, newdata = train.lung)
# evaluate
sbrier(s, pred)
作为预测的结果,我期待时间(如"这个个体什么时候经历失败"(。相反,我得到这样的值
[1] 0.017576359 -0.135928959 -0.347553969 0.112509137 -0.229301199 -0.131861582 0.044589175 0.002634008
[9] 0.345966978 0.209488560 0.002418358
那是什么意思?
此外,sbrier不起作用。显然它不能与预测pred一起使用(不足为奇(
我该如何解决这个问题?如何使用 cox.ph2 进行预测?之后如何评估模型?
predict()
函数不会返回时间值,您必须在predict()
函数中指定参数type = c("lp", "risk","expected","terms","survival")
。
如果你想得到危险比:
predict(cox.ph2, newdata = test.lung, type = "risk")
请注意,您希望预测测试集上的值,而不是训练集上的值。
我读过您可以在您的情况下使用 AFT 模型: https://stats.stackexchange.com/questions/79362/how-to-get-predictions-in-terms-of-survival-time-from-a-cox-ph-model
你也可以阅读这篇文章: 在 R 中使用 Cox 比例风险模型计算生存预测
希望会有所帮助