Marc Schwartz
2009-Mar-30 22:55 UTC
[Rd] Possible bug in summary.survfit - 'scale' argument ignored?
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.
Regards,
Marc Schwartz
Marc Schwartz
2009-Mar-31 12:48 UTC
[Rd] Possible bug in summary.survfit - 'scale' argument ignored?
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