From marc_schwartz at me.com  Tue Mar 31 14:48:11 2009
From: marc_schwartz at me.com (Marc Schwartz)
Date: Tue, 31 Mar 2009 07:48:11 -0500
Subject: [Rd] Possible bug in summary.survfit - 'scale' argument ignored?
In-Reply-To: <7F6A2326-6959-458F-9F50-DA3910CB16A5@me.com>
References: <7F6A2326-6959-458F-9F50-DA3910CB16A5@me.com>
Message-ID: <D9757384-E63D-462A-8FBE-A30B3C533310@me.com>

On Mar 30, 2009, at 5:55 PM, Marc Schwartz wrote:

> Hi all,
>
> Using:
>
>  R version 2.8.1 Patched (2009-03-07 r48068)
>
> on OSX (10.5.6) with survival version:
>
>  Version:            2.35-3
>  Date:               2009-02-10
>
>
> I get the following using the first example in ?summary.survfit:
>
> > summary( survfit( Surv(futime, fustat)~1, data=ovarian))
> Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)
>
> time n.risk n.event survival std.err lower 95% CI upper 95% CI
>   59     26       1    0.962  0.0377        0.890        1.000
>  115     25       1    0.923  0.0523        0.826        1.000
>  156     24       1    0.885  0.0627        0.770        1.000
>  268     23       1    0.846  0.0708        0.718        0.997
>  329     22       1    0.808  0.0773        0.670        0.974
>  353     21       1    0.769  0.0826        0.623        0.949
>  365     20       1    0.731  0.0870        0.579        0.923
>  431     17       1    0.688  0.0919        0.529        0.894
>  464     15       1    0.642  0.0965        0.478        0.862
>  475     14       1    0.596  0.0999        0.429        0.828
>  563     12       1    0.546  0.1032        0.377        0.791
>  638     11       1    0.497  0.1051        0.328        0.752
>
>
> > summary( survfit( Surv(futime, fustat)~1, data=ovarian), scale =  
> 365.25)
> Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)
>
> time n.risk n.event survival std.err lower 95% CI upper 95% CI
>   59     26       1    0.962  0.0377        0.890        1.000
>  115     25       1    0.923  0.0523        0.826        1.000
>  156     24       1    0.885  0.0627        0.770        1.000
>  268     23       1    0.846  0.0708        0.718        0.997
>  329     22       1    0.808  0.0773        0.670        0.974
>  353     21       1    0.769  0.0826        0.623        0.949
>  365     20       1    0.731  0.0870        0.579        0.923
>  431     17       1    0.688  0.0919        0.529        0.894
>  464     15       1    0.642  0.0965        0.478        0.862
>  475     14       1    0.596  0.0999        0.429        0.828
>  563     12       1    0.546  0.1032        0.377        0.791
>  638     11       1    0.497  0.1051        0.328        0.752
>
> Of course the time periods in the second output should be scaled to  
> years, that is (time / 365.25).
>
> I noted this today running some Sweave code, but not sure when the  
> actual change in behavior occurred.  I can replicate the same  
> behavior on a Windows machine here as well, so this is not OSX  
> specific.


A quick follow up here. I reverted to:

   R version 2.8.1 (2008-12-22)

which includes survival version:

Version:       2.34-1
Date:          2008-03-31


In that version, I get:

 > summary( survfit( Surv(futime, fustat)~1, data=ovarian), scale =  
365.25)
Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)

   time n.risk n.event survival std.err lower 95% CI upper 95% CI
  0.162     26       1    0.962  0.0377        0.890        1.000
  0.315     25       1    0.923  0.0523        0.826        1.000
  0.427     24       1    0.885  0.0627        0.770        1.000
  0.734     23       1    0.846  0.0708        0.718        0.997
  0.901     22       1    0.808  0.0773        0.670        0.974
  0.966     21       1    0.769  0.0826        0.623        0.949
  0.999     20       1    0.731  0.0870        0.579        0.923
  1.180     17       1    0.688  0.0919        0.529        0.894
  1.270     15       1    0.642  0.0965        0.478        0.862
  1.300     14       1    0.596  0.0999        0.429        0.828
  1.541     12       1    0.546  0.1032        0.377        0.791
  1.747     11       1    0.497  0.1051        0.328        0.752


So the functional loss of the 'scale' argument took place subsequent  
to that release. From a review of the code in both versions, it would  
appear that substantive changes took place to the function in the  
intervening time frame, including the addition of the 'rmean' and  
'extend' arguments. One of the changes appears to be the setting of:

   stime <- fit$time/scale

in the old version and I do not see a parallel adjustment in the time  
scale in the new version and the subsequent use of fit$time later in  
the new function.

Given the substantive changes to the function code, I am hesitant to  
propose patches for fear of introducing breakage elsewhere. I also  
need to get some work done for a client today, before I leave for  
vacation tomorrow for a week, otherwise I would spend more time  
evaluating possible patches.

I hope that the above is enough to give Terry and Thomas some narrowed  
focus.

Regards,

Marc



[Rd] Possible bug in summary.survfit - 'scale' argument ignored?
Marc Schwartz