对于生存数据的分析,除传统的cox回归分析外,还有随机生存森林等机器学习算法
随机生存森林的模型构建
library(ggRandomForests)#加载随机生存的package,该package包含了"randomForestSRC"
#该包主要作用为随机生存森林模型结果的可视化
library(ggplot2)
data(pbc)#自带生存数据集
pbc_rf <- rfsrc(Surv(days, status) ~ ., data = pbc,#模型以及数据
ntree = 2000,#数的棵树
na.action = "na.impute",
fast.restore = TRUE)
通过变量重要性进行自变量的筛选
pbc_vs <- var.select(pbc_rf)
#模型结果:
#family : surv
#var. selection : Minimal Depth 变量筛选方法为最小深度法
#conservativeness : medium
#x-weighting used? : TRUE
#dimension : 17
#sample size : 418
#ntree : 2000
#nsplit : 10
#mtry : 5 可供选择的变量数
#nodesize : 15
#refitted forest : FALSE
#model size : 5
#depth threshold : 4.9574 深度阈值
#PE (true OOB) : 17.2435 袋外错误率
#变量重要性结果
#Top variables: 模型的深度阈值(4.957)为界限
depth vimp
#bili 1.819 NA
#albumin 3.729 NA
#prothrombin 3.844 NA
#copper 4.241 NA
#edema 4.339 NA
对变量的重要性进行可视化
ggMindepth <- gg_minimal_depth(pbc_vs)
plot(ggMindepth)
为了分析两个变量或多个对生存预测的影响,可以绘制偏相关图
将copper变量划分为6各组,可以得到不同组copper联合bili对生存预测的影响
copper_cts <- quantile_pts(ggvar$copper, groups = 6, intervals = TRUE) #对连续进行分组
copper_grp <- cut(ggvar$copper, breaks = copper_cts)
partial_coplot_pbc <- gg_partial_coplot(pbc_rf, xvar = "bili",
groups = copper_grp,
surv_type = "surv",
time = 364.25,
show.plots = FALSE)
plot(partial_coplot_pbc)