2017-07-30 32 views
2

我正在繪製生存函數與生存包。一切正常,但我怎麼知道哪個曲線是哪個?我該如何將它添加到圖例中?生存函數圖中哪條曲線?

url <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt" 
    Rossi <- read.table(url, header=TRUE)[,c(1:10)] 
    km <- survfit(Surv(week, arrest)~race, data=Rossi) 
    plot(km, lty=c(1 ,2)) 

回答

2

我怎麼知道哪個曲線是哪個?

使用str()你可以看到哪些元素在kmkm$strata顯示有48個和10個元素。這與第48項和公里數$監測網最後10個項目的下降格局一致

km$surv[1:48] 
km$surv[49:58] 

所以除了提示的順序print(),這個特定的數據集,我們還可以肯定的是,第48元素屬於race=black

我該如何將它添加到圖例中?

不同於其他模型輸出km不容易轉化爲data.frame。但是,我們可以自己提取元素並創建一個data.frame,然後自己繪製它。

首先,我們創建指地層的一個因素:48米的黑人和10人

race <- as.factor(c(rep("black", 48), rep("other", 10))) 
df <- data.frame(surv = km$surv, race = race, time = km$time) 

接下來我們就可以繪製它像往常一樣(在我的情況下,使用GGPLOT2)。

library(ggplot2) 
ggplot(data = df, aes(x = time, y = surv)) + 
    geom_point(aes(colour = race)) + 
    geom_line(aes(colour = race)) + 
    theme_bw() 

survival by race

2

不幸的是,plot.survival函數似乎沒有提供一個很好的選項來標記曲線。該文檔說曲線按照它們在print中出現的順序繪製,因此您可以確定在改變線條類型或顏色時哪個是哪個。但這對共享並不好。

一種替代方法是使用rms中的survplot函數,該函數爲曲線添加標籤。以下是關於您的示例和CI繪圖的外觀。 (注意:survplot不會拿survfit對象,所以你必須重做其與結果它可以讀取功能的估計 - 在這裏,npsurv

library(rms) 
survplot(npsurv(Surv(week, arrest)~race, data=Rossi), conf = "none") 

enter image description here

檢查文檔中調整圖表其他方面的方法,包括用圖例替換圖中的標籤。