使用randomForestSRC在特定时间点生存的概率

时间:2015-08-09 12:37:48

标签: r random-forest survival-analysis

我使用rfsrc来模拟生存问题,如下所示:

library(OIsurv)
library(survival)
library(randomForestSRC)

data(burn)
attach(burn)

library(randomForestSRC)

fit <- rfsrc(Surv(T1, D1) ~  ., data=burn)

# predict on the train set
pred <- predict(fit, burn, OOB=TRUE, type=response)
pred$predicted

这给了我所有患者的总体生存概率。

如何在不同的时间点(例如0-5个月或0-10个月)获得每个人的生存概率?

1 个答案:

答案 0 :(得分:6)

如果您不熟悉该软件包,那么关于此的文档并不是很明显,但这是可能的。

加载数据

pbc.trial <- pbc %>% filter(!is.na(treatment))
pbc.test <- pbc %>% filter(is.na(treatment))

创建试验和测试数据集

rfsrc_pbc <- rfsrc(Surv(days, status) ~ .,
                   data = pbc.trial,
                   na.action = "na.impute")

构建我们的模型

test.pred.rfsrc <- predict(rfsrc_pbc, 
                           pbc.test,
                           na.action="na.impute")

测试模型

$survival

所有好东西都保存在我们的预测对象中。 time.interest对象是一个包含n行(每个患者1个)和n列(每个ntime一个)的矩阵 - 这些是自动选择的,尽管您可以使用test.pred.rfsrc$survival 参数约束它们。我们的矩阵是106x122)

$time.interest

$surival对象是不同&#34; time.interests&#34;的列表。 (122,与test.pred.rfsrc$time.interest )矩阵中的列数相同

$time.interest

让我们说我们希望看到我们5年的预测状态,我们会 需要弄清楚哪个时间最接近1825天(因为我们的 测量周期是几天)当我们查看我们的$time.interest对象时,我们看到第83行= 1827天或大约5年。 $survival中的第83行对应于test.pred.rfsrc$survival[,83] 矩阵中的第83列。因此,为了看到预测的5年生存概率,我们只需看看矩阵的第83列。

$var[]=array($_POST['val1'],$_POST['val2'],$_POST['val3']);

然后,您可以针对您感兴趣的任何时间点执行此操作。