随机生存森林算法在生存数据中的应用

对于生存数据的分析,除传统的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)

随机生存森林算法在生存数据中的应用_第1张图片

 为了分析两个变量或多个对生存预测的影响,可以绘制偏相关图

将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)

随机生存森林算法在生存数据中的应用_第2张图片

随机生存森林算法在生存数据中的应用_第3张图片 

随机生存森林算法在生存数据中的应用_第4张图片 

 随机生存森林算法在生存数据中的应用_第5张图片

 

你可能感兴趣的:(机器学习,r语言)