[R] using survfit

David Winsemius dwinsemius at comcast.net
Tue Oct 30 01:14:49 CET 2007


raymond chiruka wrote:
> hie 
>   when i use plot.survfit to plot more than one graph why I only see the last graph how do i see the other graphs.for example
>   
>       n=20
>       n1=n/2
>       n2=n/4
>       a11=4;a12=4 ;a21=4 ;a22=4
>       t1<-array(1,c(n1))                                             
>        t2<-array(2,c(n1))
>       treatgrp=matrix(c(t1,t2))                                    
>       st11<-array(1,c(n2))
>        st12<-array(2,c(n2))
>        st21<-array(1,c(n2))
>        st22<-array(2,c(n2))
>       strata=matrix(c(st11,st12,st21,st22))                 
>       time11=array(rweibull(n2,a11,1))
>       time12=array(rweibull(n2,a11,1))
>       time21=array(rweibull(n2,a21,1))
>       time22=array(rweibull(n2,a22,1))
>       time=matrix(c(time11, time12, time21, time22))  
>       censorTime=runif(n,0,3)
>       m=cbind(treatgrp,strata,time,censorTime)                 
>       colnames(m)=c(“treat”,”strata”,”time”,”censorTime”)
>   

My version of R (2.4.1 on a WindozeXP machine) had problems with the 
"smart-quotes" when cut and pasted but I cannot be sure that was not a 
problem induced by Thunderbird.

>       
> act.surv.time<-pmin(m[,"time"],m[,"censorTime"])
>   
> m<-cbind(m,act.surv.time)
>       m<-cbind(m,0)
>          m[m[,3]<m[,4],6]<-1
>          colnames(m)[6]<-"censoring"
>       m
>       b=data.frame(m)
>       
> d2=survfit(Surv(act.surv.time,censoring)~treatgrp,data=b,type=c("fleming-harrington"),
>   
> )
>   
> plot(d2, lty=2:3, fun="cumhaz",
>   
>         xlab="Months", ylab="Cumulative Hazard")
>   

It plotted just fine. And you then over-wrote it with the second plot. 
You could save (temporarily) a screen plot with
 > surv.crv<-recordPlot()
### then make another plot, save it too.
### then use
 > replayPlot(surv.crv)

You could also save to a file and view in an external viewer. The format 
of recorded plots is not guaranteed to be the same from version to version.

Another option (which would be machine specific and assuming a Windows 
device) would be to open second screen window with:

 > win.graph(width = 7, height = 7, pointsize = 12, restoreConsole = FALSE)

>   
> d1=survfit(Surv(act.surv.time,censoring)~treatgrp,data=b,)
>   
> plot(d1, lty=2:3,
>   
>         xlab="Months", ylab="survival curves")
>
> I only see the plot of d1 what happens to d2 and how do l view it.
> thanks
>   

If you opened a new device before each plot you could paper your screen 
with plots.

-- 
David Winsemius



More information about the R-help mailing list