Pregunta

Im not sure... this cant be that difficult i think, but i cant work it out. If you run:

library(survival)    
leukemia.surv <- survfit(Surv(time, status) ~ 1, data = aml) 
plot(leukemia.surv, lty = 2:3) 

you see the survival curve and its 95% confidence interval. Instead of showing two lines that show the upper and lower 95% CI, id like to shade the area between the upper and lower 95% boundries.

Does this have to be done by something like polygon()? All coordinates can be found in the summary...

> summary(leukemia.surv)
Call: survfit(formula = Surv(time, status) ~ 1, data = aml)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
5     23       2   0.9130  0.0588       0.8049        1.000
8     21       2   0.8261  0.0790       0.6848        0.996
9     19       1   0.7826  0.0860       0.6310        0.971
12     18       1   0.7391  0.0916       0.5798        0.942
13     17       1   0.6957  0.0959       0.5309        0.912
18     14       1   0.6460  0.1011       0.4753        0.878
23     13       2   0.5466  0.1073       0.3721        0.803
27     11       1   0.4969  0.1084       0.3240        0.762
30      9       1   0.4417  0.1095       0.2717        0.718
31      8       1   0.3865  0.1089       0.2225        0.671
33      7       1   0.3313  0.1064       0.1765        0.622
34      6       1   0.2761  0.1020       0.1338        0.569
43      5       1   0.2208  0.0954       0.0947        0.515
45      4       1   0.1656  0.0860       0.0598        0.458
48      2       1   0.0828  0.0727       0.0148        0.462

Is there an existing function to shade the 95% CI area?

¿Fue útil?

Solución

You can use data from the summary() to make your own plot with the confidence interval as polygon.

First, save the summary() as an object. Data for plotting are located in variables time, surv, upper and lower.

mod<-summary(leukemia.surv)

Now you can use function plot() to define the plotting region. Then with polygon() plot confidence interval. Here you have to provide x values and x values in reverse order, and for y values use lower values and revere upper values. With function lines() add survival line. By adding argument type="s" to lines() you will get line as steps.

with(mod,plot(time,surv,type="n",xlim=c(5,50),ylim=c(0,1)))
with(mod,polygon(c(time,rev(time)),c(lower,rev(upper)),
                 col = "grey75", border = FALSE))
with(mod,lines(time,surv,type="s"))

Otros consejos

I've developed a function to plot shaded confidence intervals in survival curves. You can find it here: Plotting survival curves in R with ggplot2

Maybe you can find it useful.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top