Hi there, Does anyone know how I solve for x from a given y in a polynomial function? Here's some example code: ##example file a<-1:10 b<-c(1,2,2.5,3,3.5,4,6,7,7.5,8) po.lm<-lm(a~b+I(b^2)+I(b^3)+I(b^4)); summary(po.lm) (please ignore that the model is severely overfit- that's not the point). Let's say I want to solve for the value b where a = 5.5. Any thoughts? I did come across the polynom package, but I don't think that does it- I suspect the answer is simpler than I am making it out to be. Any help would be welcome. -- Michael Rennie, Research Scientist Fisheries and Oceans Canada, Freshwater Institute Winnipeg, Manitoba, CANADA
help.search("polynomial") --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. Mike Rennie <mikerennie.r at gmail.com> wrote:>Hi there, > >Does anyone know how I solve for x from a given y in a polynomial >function? Here's some example code: > >##example file > >a<-1:10 > >b<-c(1,2,2.5,3,3.5,4,6,7,7.5,8) > >po.lm<-lm(a~b+I(b^2)+I(b^3)+I(b^4)); summary(po.lm) > >(please ignore that the model is severely overfit- that's not the >point). > >Let's say I want to solve for the value b where a = 5.5. > >Any thoughts? I did come across the polynom package, but I don't think >that does it- I suspect the answer is simpler than I am making it out >to be. Any help would be welcome.
Hello, Try the following. a <- 1:10 b <- c(1, 2, 2.5, 3, 3.5, 4, 6, 7, 7.5, 8) dat <- data.frame(a = a, b = b) # for lm(), it's better to use a df po.lm <- lm(a~b+I(b^2)+I(b^3)+I(b^4), data = dat); summary(po.lm) realroots <- function(model, b){ is.zero <- function(x, tol = .Machine$double.eps^0.5) abs(x) < tol if(names(model)[1] = "(Intercept)") r <- polyroot(c(coef(model)[1] - b, coef(model)[-1])) else r <- polyroot(c(-b, coef(model))) Re(r[is.zero(Im(r))]) } r <- realroots(po.lm, 5.5) predict(po.lm, newdata = data.frame(b = r)) # confirm Hope this helps, Rui Barradas Em 01-03-2013 18:47, Mike Rennie escreveu:> Hi there, > > Does anyone know how I solve for x from a given y in a polynomial > function? Here's some example code: > > ##example file > > a<-1:10 > > b<-c(1,2,2.5,3,3.5,4,6,7,7.5,8) > > po.lm<-lm(a~b+I(b^2)+I(b^3)+I(b^4)); summary(po.lm) > > (please ignore that the model is severely overfit- that's not the point). > > Let's say I want to solve for the value b where a = 5.5. > > Any thoughts? I did come across the polynom package, but I don't think > that does it- I suspect the answer is simpler than I am making it out > to be. Any help would be welcome. >