绘制具有自信区间条的生存曲线

时间:2017-11-21 13:41:34

标签: r plot survival-analysis

嗨,我有一个问题。 我试图在同一个情节上绘制3条生存曲线。 对于每个情节,我想添加自信的间隔。

为此,我有一个数据框

          dput(df)
    structure(list(lowerA = c(4.1, 4.6, 5.5, 4.7, 5), Group1 = c(4.8, 
5.4, 6.4, 5.5, 5.7), upperA = c(5.7, 6.3, 7.3, 6.3, 6.6), lowerB = c(6.2, 
7.1, 8.7, 7.4, 8.2), Group2 = c(7.3, 8.3, 10, 8.6, 9.5), upperB = c(8.6, 
9.6, 11.4, 9.9, 10.8), lowerC = c(18.3, 19.5, 24.3, 22.9, 25.5
), Group3 = c(21.4, 22.5, 27.6, 26.3, 29), upperC = c(24.7, 25.8, 
31, 29.8, 32.7)), .Names = c("lowerA", "Group1", "upperA", "lowerB", 
"Group2", "upperB", "lowerC", "Group3", "upperC"), row.names = c("year1", 
"year2", "year3", "year4", "year5"), class = c("tbl_df", "tbl", 
"data.frame"))

我试过这个。它有效但不美观。

ya <- rownames(df)
xa <- Group1
z1a <- lowerA
z2a <- upperA


xb <- Group2
z1b <- lowerB
z2b <- upperB


xc <- Group3
z1c <- lowerC
z2c <- upperC
plot(ya, xa, ylim = c(0,40))
lines(ya, xa, c)
# now the confidence bands
lines(ya, z1a, lty = "dotted")
lines(ya, z2a, lty = "dotted")

lines(yb, xb, col="green")
# now the confidence bands
lines(yb, z1b, lty = "dotted",col="green")
lines(yb, z2b, lty = "dotted", col="green")

lines(yc, xc, col="red")
# now the confidence bands
lines(yc, z1c, lty = "dotted", col="red")
lines(yc, z2c, lty = "dotted", col="red")

有任何帮助吗?建议?

最佳, 彼得

1 个答案:

答案 0 :(得分:1)

你可以这样做:

colnames(df) <- gsub("A","1",colnames(df))
colnames(df) <- gsub("B","2",colnames(df))
colnames(df) <- gsub("C","3",colnames(df))

colors <- c("blue","green","red")

library(scales)
plot(df$Group1, type = "n",ylim = c(0,40))
for(i in 1:3){
    lines(df[,paste0("Group",i)], col = colors[i])

    polygon(x = c(1:nrow(df),nrow(df):1),
        y = c(df[,paste0("lower",i)],rev(df[,paste0("upper",i)])),
        col = alpha(colors[i], 0.1),
        border = NA)

    arrows(x0 = c(1:nrow(df)),
        x1 = c(1:nrow(df)),
        y0 = df[,paste0("lower",i)],
        y1 = df[,paste0("upper",i)],
        col = colors[i],
        angle = 90,
        length = 0.05,
        code = 3)
}

legend("topleft", legend = c("A","B","C"),
    col = c("blue","green","red"),
    lty = 1,
    bty = "n")

修改 请注意,多边形的颜色是半透明的,置信区间的重叠仍然可见。我在示例中更改了一个值来说明这一点。

编辑2: 我添加了一个图例和错误栏 Plot