[R] Catching NaNs from pweibull()

Ben Bolker
Fri, 08 Feb 2008 16:46:06 -0000

That's odd, it works just fine for me
(R 2.6.1, i486-pc-linux-gnu)

  Can you send the results of sessionInfo() ?

# Observed data
Prepens.caughtintraps = c(94,45,71,64,71,31,16,19,27,16,113)

# Numbers of seeds released
Prepens.released = 1250

distances = c(2,3,4,5,7.5,10,12.5,15,17.5,20,25)
totalseedscaught = sum(Prepens.caughtintraps)
Pcatch = totalseedscaught/Prepens.released

## minor tweak: this is more efficient, gives same answer
cumsumcaught <- rev(cumsum(rev(Prepens.caughtintraps)))

res.nls <- nls(cumsumcaught ~
               Pcatch*Prepens.released*(1-pweibull(distances,k,l)),
               start = list(k=1,l=12), trace=TRUE)

## slightly more accurate -- use lower.tail instead of 1-pweibull()
## but makes no difference in this case
res.nls <- nls(cumsumcaught ~
               Pcatch*Prepens.released*
               pweibull(distances,k,l,lower.tail=FALSE),
               start = list(k=1,l=12), trace=TRUE)


13122.82 :   1 12
11783.76 :   1.045207 12.668148
11774.70 :   1.035480 12.676250
11774.54 :   1.036564 12.679938
11774.54 :   1.036398 12.679737
11774.54 :   1.036420 12.679783
11774.54 :   1.036417 12.679778

Nonlinear regression model
  model:  cumsumcaught ~ Pcatch * Prepens.released * pweibull(distances,      k,
l, lower.tail = FALSE)
   data:  parent.frame()
     k      l
 1.036 12.680
 residual sum-of-squares: 11775

Number of iterations to convergence: 6
Achieved convergence tolerance: 1.388e-06