2016-07-01 90 views
-1

使用ranger包我運行下面的腳本:如何從predict.ranger的預測輸出讀出的索引,R

rf <- ranger(Surv(time, Y) ~ ., data = train_frame[1:50000, ], write.forest = TRUE, num.trees = 100) 

test_frame <- train_frame[50001:100000, ] 
preds <- predict(rf, test_frame) 
chfs <- preds$chf 
plot(chfs[1, ]) 

的累積危險函數具有索引1 - 在X軸36。顯然這與時間一致,但我不知道如何:我的觀察時間變量範圍從最小值0到最大值399.原始數據與預測輸出predict.ranger之間的映射是什麼?我怎樣才能在一段給定的時間之後,操作這個來量化給定主體的風險程度?

這裏是什麼我的時間/事件數據看起來像一個示例:

 Y time 
    <int> <dbl> 
1  1 358 
2  0 90 
3  0 162 
4  0 35 
5  0 307 
6  0 69 
7  0 184 
8  0 24 
9  0 366 
10  0 33 

這裏就是第一個主題的瑞郎看起來像: enter image description here 誰能幫我連接點? "matrix"對象上沒有行或列名稱,即preds$chf

+0

'str(preds)'看起來像什麼?當我用'rf < - ranger(Surv(time,status)〜。,data = veteran,write.forest = TRUE,num.trees = 100)'運行你的代碼時,''chfs'有行和列。我很驚訝你可以用生存的重要性''雜質''。另外,。無論如何,你可以使這種重現?我很驚訝你可以使用重要性''雜質'與生存 – Jota

+0

這是一箇舊的代碼行。 「重要性='雜質'確實會引發錯誤。我不在我的工作區前面,但是'str(preds)'是類'ranger.predict'的命名列表。我的CHF和生存函數也是矩陣。 @ mnwright在下面的答案擊中了頭部。 – Aaron

回答

3

在預測對象中是包含計算CHF和生存估計值的時間點的名爲unique.death.times的載體。 chf矩陣在列中的行和這些時間點中具有觀察值,對於survival也是如此。

重複的例子:

library(survival) 
library(ranger) 

## Split the data 
n <- nrow(veteran) 
idx <- sample(n, 2/3*n) 
train <- veteran[idx, ] 
test <- veteran[-idx, ] 

## Grow RF and predict 
rf <- ranger(Surv(time, status) ~ ., train, write.forest = TRUE) 
preds <- predict(rf, test) 

## Example CHF plot 
plot(preds$unique.death.times, preds$chf[1, ]) 

## Example survival plot 
plot(preds$unique.death.times, preds$survival[1, ]) 

設置importance = "impurity"生存的森林應該拋出一個錯誤。

+0

釘了它,謝謝!而且,重要='雜質'確實是通過一個錯誤。這是來自一個較舊的腳本。 – Aaron