2017-07-30 103 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

检查文档中调整图表其他方面的方法,包括用图例替换图中的标签。