![](/img/trans.png)
[英]probability of survival at particular time points using 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.