The problem posed was the following:
        > fit <- coxph(....
        > zp  <- cox.zph(fit)
        > plot(zp[1])
     Error in plot.window(xlim, ylim, log, asp, ...) :
        need finite 'ylim' values

There were 21 covariates, but over 7000 events, so the Cox model fits ok.
After sending me the data, the problem, which I haven't seen before, is thus:

  In order to put a smooth curve onto the plot, cox.zph calls lm essentially 
thus
                lm( resid ~ ns(x, df=4)
where x is the set of death times, and resid is a scaled Schoenfeld residual.  
For the data set in question x is of length 7109, and the lm call fails due to 
a 
singular fit!   This leads to a missing value and then eventually to the error 
message reported above.   Further exploration reveals that 4022 of the x values 
are log(.01), with the other 3087 spread out from 0 to log(365) in an 
approximately Gaussian shape.  The residuals are in two clumps from -4 to 0 and 
2 to 5, each clump dense, the histogram has two unimodal humps.

  I don't see why lm is failing.
  
  I have fixed plot.cox.zph so that it now prints an error message
     "Spline fit is singular, try a smaller degrees of freedom"
when the fit is singular.  This will at least be less confusing.  For the
data in hand
        plot(zp[1], df=2)
works fine.  

The repair will migrate to the R code in due course.  (I am currently working 
on 
some other updates to the survival package).

        Terry Therneau

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to