[R] Problem with locfit( ... , family="hazard")

Martin Maechler maechler at stat.math.ethz.ch
Fri Sep 4 10:33:05 CEST 2009


>>>>> David Winsemius <dwinsemius at comcast.net>
>>>>>     on Thu, 3 Sep 2009 22:34:05 -0400 writes:

    > I'm having difficulties with plot.locfit.3d, at least I think that is  
    > the problem. I have a large dataframe (about 4 MM cases) and was  
    > hoping to see a non-parametric estimate of the hazard plotted against  
    > two variables:

    >> fit <- locfit(~surv.yr+ ur_protein + ur_creatinine, data=TRdta,  
    > cens = 1-death, family = "hazard", xlim=c(0,10))
    > # it took somewhere between 1 and 2 hours to complete, but it did  
    > complete and reported no errors or warnings.

    >> plot(fit, pv=c("ur_protein", "ur_creatinine"))
    > Error in if (from == to) rep.int(from, length.out) else  
    > as.vector(c(from,  :
    > missing value where TRUE/FALSE needed

well, either 'from' or 'to'  will be NaN or NA ..
[probably because some part of the locfit code was not written
 with so many observations in mind .. ]

Why don't you repeat the plot() call 
*after* saying

  options(error=recover)

and then inspect 'from' and 'to' ?

maybe also

  debug(plot.locfit.3d)

  plot(.........)

and evaluate stepwisely,
using
 
   ls.str()  

to quickly get a picture of the function's local variables?


    >> plot(fit, type="persp")
    > Error in if (from == to) rep.int(from, length.out) else  
    > as.vector(c(from,  :
    > missing value where TRUE/FALSE needed
    >> plot(fit, pv=c("ur_protein", "ur_creatinine"), type="persp",  
    > xlim=c(0,400), ylim=c(0,400))
    > Error in if (from == to) rep.int(from, length.out) else  
    > as.vector(c(from,  :
    > missing value where TRUE/FALSE needed

    > I am guessing this may be a missing parameter needed by persp() but I  
    > cannot figure out what to offer.

well, it should give a better error message, if it really needs
another argument .

A reproducible example *would* be very useful here, indeed,
I see you tried .. but still.

Hoping the above helps,
Martin Maechler, ETH Zurich

    > My efforts to construct a minimal example are also hitting a dead end:
    > # From first of Harrell's cph() examples
    >> n <- 1000
    >> set.seed(731)
    >> age <- 50 + 12*rnorm(n)
    >> label(age) <- "Age"
    >> sex <- factor(sample(c('Male','Female'), n,
    > +               rep=TRUE, prob=c(.6, .4)))
    >> cens <- 15*runif(n)
    >> h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
    >> dt <- -log(runif(n))/h
    >> label(dt) <- 'Follow-up Time'
    >> e <- ifelse(dt <= cens,1,0)
    >> dt <- pmin(dt, cens)
    >> cfit <- locfit( ~ dt + age + sex, cens=cens, family = "hazard",  
    > xlim=c(0, max(dt)) )
    > Error in lfproc(x, y, weights = weights, cens = e, base = base, geth =  
    > geth,  :
    > NA/NaN/Inf in foreign function call (arg 1)
    > In addition: Warning message:
    > In lfproc(x, y, weights = weights, cens = cens, base = base, geth =  
    > geth,  :
    > NAs introduced by coercion

    > Running the example on the locfit help page works fine,  .... just  
    > like Loader's book, which I have been trying to follow in chapter 7.


    > David Winsemius, MD
    > Heritage Laboratories
    > West Hartford, CT

    > ______________________________________________
    > R-help at r-project.org 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.




More information about the R-help mailing list