簡體   English   中英

RandomForestSRC:如何獲得任何時間點的生存概率?

[英]RandomForestSRC: how to get survival probabilities for any time point?

我正在使用randomForestSRC package 到 model 一些生存數據。 我使用rfsrc function 訓練 model。 我的火車數據受到嚴格審查,該事件僅在 1% 的情況下發生。 觀察時間從 3 個月到 13 年不等,但是,所有事件都發生在前 2 年內,rest 是右刪失數據。 我想使用 model 來預測測試數據集上的生存概率,我對不同時間點的預測概率(患者參加研究后 1 年、3 年、5 年)感興趣。 這是否可能使用隨機生存森林,因為預測 function 返回的生存概率僅指觀察到的事件時間?

例子
我在老兵數據集上演示了我的程序,我們可以看到生成的預測矩陣的維度為 37x63(測試數據集中的個體數量x訓練數據集中唯一事件時間的數量),並且預測的生存概率對應於事件訓練數據集中的時間。 我的問題是:如何預測最大觀察事件時間后的生存概率? 更具體地說:在退伍軍人的情況下,如何預測時間 = 500?

data(veteran, package = "randomForestSRC")

# order dataset by time and take first 100/137 rows as train data
# just for the sake of demonstrating the problem
veteran <- veteran[order(veteran$time), ]
train_dat <- veteran[1:100, ]
test_dat <- veteran[101:nrow(veteran), ]

# train model
veteran.grow <- rfsrc(Surv(time, status) ~ ., train_dat, ntree = 100)

# make predictions 
veteran.pred <- predict(veteran.grow, test_dat)

# Check dimensions of the matrix that predicts survival probabilities
dim(veteran.pred$survival)
[1] 37 63

# Check maximum survival time corresponding to the predicted probabilities
max(veteran.grow$time.interest)
[1] 139

# how to do predictions for time = 500?

您要求的功能未在randomForestSRC package 中實現,也就是說,您只能預測訓練數據集中有時存在的生存 function。

但是,主要用於解釋生存模型的survex package也提供了統一界面的功能進行預測。 可以如示例中所示完成:

library(randomForestSRC)
library(survex)

data(veteran, package = "randomForestSRC")

veteran <- veteran[order(veteran$time), ]
train_dat <- veteran[1:100, ]
test_dat <- veteran[101:nrow(veteran), ]

veteran.grow <- rfsrc(Surv(time, status) ~ ., train_dat, ntree = 100)

explainer <- explain(veteran.grow)

pred <- predict(explainer, test_dat, output_type="survival", times=500)
dim(pred)
[1] 37  1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM