2012-03-02 77 views
1

我正試圖在特定時間獲得不同人的生存評估。獲取R中的生存估計值

我的代碼如下:

s = Surv(outcome.[,1], outcome.[,2])   
survplot= (survfit(s ~ person.list[,1])) 
plot(survplot, mark.time=FALSE)    

summary(survplot[1], times=4)[1]   

此代碼創建的生存目標,爲人們創造的每11生存曲線,繪製每條曲線,並與彙總功能,我可以得到人1的生存估計值爲time = 4

我想創建一個在特定時間(time = 4)每個人的生存估計清單。

任何幫助,將不勝感激。

謝謝, 馬特

回答

1

如果所有你說的是真的,那麼這是一個使用指數作爲參數,生成一個列表的典型方式:

t4list <- lapply(1:11, function(x) summary(survplot[x], times=4)[1]) 
t4list 

如果你真正的意思,你想要一個當時的生存估計矢量,然後sapply將嘗試簡單地將結果轉換爲原子形式,例如數字矢量或矩陣,其中結果是「多維的」。我本來以爲你本來可以只用一個有用的結果:(存在假設這樣的時代)

summary(survplot, times=4)[1] 

這應該已經成功地給你的預測存活時間的載體。如果你太貪婪和推出「時間」的價值超過估計的地方,那麼你會拋出一個錯誤。具有諷刺意味的是,如果至少有一次所有級別的協變量都有估計值,那麼就不會拋出錯誤。使用在幫助頁面爲出發點的例子:

fit <- survfit(Surv(time, status) ~ x, data = aml) 
summary(fit, times=c(10, 20, 60))[1] 
#$surv 
#[1] 0.9090909 0.7159091 0.1840909 0.6666667 0.5833333 
# not very informative about which times and covariates were estimated 
# and which are missing 

# this is more informative 
as.data.frame(summary(fit, times=c(10, 20, 60))[c("surv", "time", "strata")]) 
     surv time   strata 
1 0.9090909 10 x=Maintained 
2 0.7159091 20 x=Maintained 
3 0.1840909 60 x=Maintained 
4 0.6666667 10 x=Nonmaintained 
5 0.5833333 20 x=Nonmaintained 

而如果你只是用60你會得到一個錯誤信息:

> summary(fit, times=c(60))[1] 
Error in factor(rep(1:nstrat, scount), labels = names(fit$strata)) : 
    invalid labels; length 2 should be 1 or 1 
+1

非常感謝你。 as.data.frame代碼很棒! – Matt 2012-03-02 21:03:35

+1

用'str()'查看'summary(fit)'對象是非常有用的' – 2012-03-02 21:30:38