[R] Using lm coefficients in polyroot()

Dieter Menne dieter.menne at menne-biomed.de
Fri Aug 19 11:50:33 CEST 2005


Lukasz Komsta <luke <at> novum.am.lublin.pl> writes:

> I need to compute zero of polynomial function fitted by lm. For example 
> if I fit cubic equation by fit=lm(y~x+I(x^2)+i(x^3)) I can do it simply 
> by polyroot(fit$coefficients). But, if I fit polynomial of higher order 
> and optimize it by stepAIC, I get of course some coefficients removed. 
> Then, if i have model
> 
> y ~ I(x^2) + I(x^4)
> 
> i cannot call polyroot in such way, because there is a need to call 
> polyroot(c(0,0,fit$coefficients[1],0,fit$coefficients[2]).
> 
> Is there any method to do it automagically? I would like to write small 
> function solving polynomial optimized by stepAIC, regardless of missing 
> terms.

Are you really sure you want to throw away lower order terms in a fit by 
misusing stepAIC? With the rare exception of omitting a constant offset, I 
don't know any case where there are good reasons to omit lower order terms in a 
fit (willing to learn, though,...).

And if you only want to find the zeroes, it's definitively not useful 
to "optimize" this way. When factors are involved, stepAIC always keeps lower 
order terms, but it is expecting a bit too much from stepAIC to expect an "do 
you really want to do this" here.

For a more competent discussion of the matter, read Bill Venables

http://www.stats.ox.ac.uk/pub/MASS3/Exegeses.pdf

Dieter




More information about the R-help mailing list