正如随机森林算法可以应用于回归和分类任务一样,它也可以扩展到生存分析。
在下面的示例中,生存模型适合并使用来自 CRAN 包 randomForestSRC
进行预测,评分和性能分析。
#------------#------------#------------#------------#------------
#------------#------------#------------#------------#------------
#加载包
rm(list=ls())
library(survival)
library(ranger)
library(ggplot2)
library(dplyr)
library(ggfortify)
library(randomForestSRC)
#------------#------------#------------#------------#------------
#------------#------------#------------#------------#------------
#生成训练集和测试集
data(veteran)
head(veteran)
set.seed(1234)
vet <- mutate(veteran, AG = ifelse((age < 60), 0, 1))
vet$celltype <- NULL
train <- vet[1:100,]
test <- vet[101:137,]
head(vet)
#------------#------------#------------#------------#------------
#------------#------------#------------#------------#------------
#训练模型
rf.model <- rfsrc(Surv(time, status) ~ ., train, ntree = 100, importance = TRUE)
#------------#------------#------------#------------#------------
#------------#------------#------------#------------#------------
#得到变量重要性
rf.model[["importance"]]
#------------#------------#------------#------------#------------
#------------#------------#------------#------------#------------
#在测试集检验
survival.results <- predict(rf.model, newdata = test)
survival.results
模型在测试集的表现如下:
Sample size of test (predict) data: 37 Number of deaths in test data: 36 Number of grow trees: 100 Average no. of grow terminal nodes: 5.16 Total no. of grow variables: 6 Resampling used to grow trees: swor Resample size used to grow trees: 23 Analysis: RSF Family: surv Test set error rate: 35.02%
变量重要性排序:
rf.model[["importance"]] trt karno diagtime age prior AG -0.0024655662 0.1351268124 -0.0033284381 -0.0006348997 -0.0011347950 0.0176878213