[R] Problem plotting curve on survival curve (something silly?)
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Sun Mar 2 23:49:57 CET 2008
Calum wrote:
> OK this is bound to be something silly as I'm completely new to R -
> having started using it yesterday. However I am already warming to its
> lack of 'proper' GUI... I like being able to rerun a command by editing
> one parameter easily... try and do that in a Excel Chart Wizzard!
>
> I eventually want to use it to analyse some chemotherapy response /
> survival data. That data will not be mature and so my interest is in
> using it to deliver predictions of what mature data may produce by using
> Weibull Regression
>
> However for now I've borrowed a dataset from the BMJ (CSV tabs seperated
> version here:
> http://www.wittongilbert.free-online.co.uk/HepatitisData.csv ) and am
> trying to plot some curves.
>
> I've succeeded in plotting a Kaplan-Meier Survival Curve by using the
> following:
>
> > my_var.bygroup <- survfit(Surv (Survival, Censored==0) ~
> TreatmentGroup, data=TestData)
> > plot(my_var.bygroup, conf.int=FALSE, col=c("black","grey"), lty=1:2,
> legend.text=c("Placebo","Prednisolone"), main="dKaplan-Meier Survival
> Curve", xlab="Time (months)", ylab="Probability of Survival")
>
> That produces this: http://www.wittongilbert.free-online.co.uk/RGraph.jpg
>
> All of that is very nice so far. The I followed bits and pieces of
> other peoples posts in the past to plot on a weibull regression...
>
> > my_curve.Plac <- survreg( Surv(Survival, Censored==0)~
> TreatmentGroup, subset=TreatmentGroup=="Placebo", data=TestData,
> dist='weibull')
> > curve(pweibull(x, scale=exp(coef(my_curve.Plac)),
> shape=1/my_curve.Plac$scale, lower.tail=FALSE),from=0, col="black",
> to=max(TestData$Survival), add=TRUE)
> > my_curve.Pred <- survreg( Surv(Survival, Censored==0)~
> TreatmentGroup, subset=TreatmentGroup=="Prednisolone", data=TestData,
> dist='weibull')
> > curve(pweibull(x, scale=exp(coef(my_curve.Pred)),
> shape=1/my_curve.Pred$scale, lower.tail=FALSE),from=0, col="grey",
> to=max(TestData$Survival), add=TRUE)
>
> This is where I have my problem - and I know its going to be something
> really silly! Look at my output:
> http://www.wittongilbert.free-online.co.uk/RGraph2.jpg the trend line is
> zig-zagging between y=0 and the value it should be. If you draw a line
> along the tips of the zig-zags I guess thats a reasonable trendline...
>
> Anyone able to help me on this?
>
I'd take a hard look at the pweibull(...) bit. Is "scale" really what
you want it to be? If coef(my_curve.Pred) is not a scalar, then it gets
recycled, which could easily cause oscillations.
> Also is it possible to get an R-squared type value for the fit of this
> curve from someplace?
>
> Finally (three questions in one!) the first two censored data points (1
> in each group) are actually lost to follow-ups. Should they be marked
> differently from censored?
>
Customarily they are not. (I'm sure it is possible to speculate at
length about it, though.)
> Sorry I know thats a mamoth post - and have a horrible feeling someone's
> going to say 'You are trying to do something thats statistically wrong!'
> - feel free!
>
Nothing spectacularly incompetent this far... (I'm not happy with R^2
measures outside of linear models, or even within linear models, but
several well-reputed people do find them useful, so who am I to bicker?)
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list