Thank you all!  This approach, using the 'polynom' library, did the trick.

> library(polynom) # -6 + 11*x - 6*x^2 + x^3
> p0 <- polynomial(c(-6, 11, -6, 1)) # has zeros at 1, 2, and 3
> p1 <- deriv(p0); p2 <- deriv(p1) # first and second derivative
> xm <- solve(p1) # maxima and minima of p0
> xmax = xm[predict(p2, xm) < 0] # select the maxima
> xmax # [1] 1.42265

With these tweaks:

In fitting the model to the data I had to use raw=TRUE:
model <- lm( y ~ poly(x, 3, raw=TRUE) )
 
Then I could generate p0 directly from my lm:
p0 <- polynomial( coef(model) )

And I answered my second question by using the obvious:
predict(p2,xmax)

I don't know what I would have done if the optima weren't between x=0 and x=1, 
which was my constraint.  In that case the "maximum" would have been one of the 
endpoints rather than a zero of p1.  I suppose I could just have checked for it 
with some if/then code.  Fortunately it didn't turn out to be an issue with my 
data.

And no, this wasn't a homework problem.  I didn't do the math by hand because I 
needed to automate this process for several subsets of my data and several 
fitted models.                                         
______________________________________________
R-help@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.

Reply via email to