R:按组绘制flexsurvspline对象和颜色

时间:2014-02-13 16:38:04

标签: r

我正在使用flexsurvspline来分析五个不同年龄组的患者数据事件的时间。是否可以按年龄组对五个不同的回归线进行着色,以便识别这些组? 我唯一能做的就是使用包含不同颜色的矢量为观察颜色着色,这就足够了但是我的问题是我不知道如何设置顺序,从而设置颜色,这样我知道哪个年龄组属于哪个曲线。 从运行摘要(样条)我知道老年人群的危害增加,但年龄组的颜色不一致,这是因为我不知道如何订购它们。

我执行以下操作:

指定年龄组

dia$agecat[dia$age2 > 29 & dia$age2 <= 49] <- "30-49"
dia$agecat[dia$age2 > 49 & dia$age2 <= 59] <- "50-59"
dia$agecat[dia$age2 > 59 & dia$age2 <= 69] <- "60-69"
dia$agecat[dia$age2 > 69 & dia$age2 <= 79] <- "70-79"
dia$agecat[dia$age2 > 79] <- "80+"
dia$agecat2 <- as.factor(dia$agecat)

运行样条函数

diaspline25 <- flexsurvspline(Surv(months_to_event, censor) ~ agecat2, data=dia, knots=c(log50), log(100), log(150), log(200), log(250)), scale="hazard")

制作颜色矢量

cols <- divPalette(n=5, name= "RdYlBu")
dia$col[dia$agecat2=="30-49"] <- cols[1]
dia$col[dia$agecat2=="50-59"] <- cols[2]
dia$col[dia$agecat2=="60-69"] <- cols[3]
dia$col[dia$agecat2=="70-79"] <-  cols[4]
dia$col[dia$agecat2=="80+"] <- cols[5]
ages <- c("30-49", "50-59", "60-69", "70-79", "80+")

绘图

plot(diaspline25, ci=TRUE, lwd=3, lwd.ci=1, col.obs=cols, col = "black", col.ci="grey", xlab="Months from diagnosis", ylab="Proportion")
legend("bottomleft", legend=ages, col = cols, pch=19, cex = 1, title = "Age category")

你可能已经注意到我实际上并没有使用dia $ col来为观察着色,因为这只是给了组中矢量的前五种颜色,而不是唯一的颜色。 此外,无法将颜色矢量传递给“col =”,它只是绘制了所有五行中矢量中的第一种颜色。

是否有某种方法可以通过颜色区分组,并知道哪些颜色属于哪些组?当然,我可以根据summary()的输出对颜色进行硬编码,但是可能有更好的方法吗?如果你能给我一些建议,我将非常感激!

提前谢谢!

0 个答案:

没有答案