Oh yes! raw=T did the trick. I even tried raw=T while i was still trying to dig up the coeffs directly from poly. It didn't cross my mind after i learned about "fit<- lm( y ~ poly( x, k))" from Gerrit, and i jumped into my own false conclusions. Good of you to "guess" that was my problem. Now the approximation looks absolutely beautiful.

Thank you very much Berry and Gerrit for helping me out on this! I really really like using R, and i'm so happy for not needing any other tool for this.

Matti

09.07.2011 16:25, Berry Boessenkool kirjoitti:


Hey Matti,

lm() _is_ a least square approximation.
Did you notivce in the poly-help you'll probably need to set raw=TRUE ?
Helped me a lot once I figured that one out...
check this:

a<- c(-5:10)  ;  b<- 5*a^3 + 2*a^2 - 7*a + 3  + rnorm(15, 0, 100)
data.frame(a,b)
modell<- lm(b ~  poly(a,3, raw=T))     ;    modell
plot(a,b)  ; lines(a, predict(modell))

now try this with raw=FALSE. The graph will look the same, but the coefficients 
are normalized and centered.
Notice that the value estimated for the intercept is quite different form the 
"real" intercept (3), as the random numbers added have great variation (sd=100).
The other coefficents are closer to the "real" ones. Note also, that they are 
printed in reverse order than specified in b<- ...

A way to avoid the whole polyfunction altogether is:

lm(b ~ I(a^3) + I(a^2) + a)

You decide what's more elegant...

Hope this helps,
Berry

-------------------------------------
Berry Boessenkool
Potsdam
-------------------------------------


Date: Fri, 8 Jul 2011 21:12:46 +0300
From: matti.joki...@gmail.com
To: gerrit.eich...@math.uni-giessen.de
CC: r-help@r-project.org
Subject: Re: [R] Polynomial fitting

Thank you Gerrit for the quick reply! And yes, i'm Matti.

I can get the coeffs now, though i'm not sure whether i'm doing
something wrong or whether poly is just not the right method for what
i'm trying to find. I will look into this more closely and give it
another try.

Is poly best for fitting on noisy data that's been generated by a
polynomial and not that good for approximating an arbitrary function? I
tried a least squares fitting with a web applet and got all exited
because the approximation looked quite promising. I understand that R is
designed mainly for statistical computing and may not be the best tool
for my purposes. Before i look elsewhere i would like to ask if there is
some other R method i should try, perhaps a least squares approximation?

Thank you for your help!

Matti Jokipii

08.07.2011 08:25, Gerrit Eichner kirjoitti:
Hello, mfa (Matti?),

if x and y contain the coordinates of your data points and k is the
wanted polynomial degree, then

fit<- lm( y ~ poly( x, k))

fits orthonormal polynomials up to degree k to your data. Using

dummy.coef( fit)

should give the coefficients you are interested in.

Hth -- Gerrit

On Thu, 7 Jul 2011, mfa wrote:

Hello,

i'm fairly familiar with R and use it every now and then for math related
tasks.

I have a simple non polynomial function that i would like to approximate
with a polynomial. I already looked into poly, but was unable to
understand
what to do with it. So my problem is this. I can generate virtually any
number of datapoints and would like to find the coeffs a1, a2, ... up
to a
given degree for a polynomial a1x^1 + a2x^2 + ... that approximates my
simple function. How can i do this with R?

Your help will be highly appreciated!

--
View this message in context:
http://r.789695.n4.nabble.com/Polynomial-fitting-tp3652816p3652816.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.

---------------------------------------------------------------------
Dr. Gerrit Eichner Mathematical Institute, Room 212
gerrit.eich...@math.uni-giessen.de Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany
Fax: +49-(0)641-99-32109 http://www.uni-giessen.de/cms/eichner
---------------------------------------------------------------------


______________________________________________
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.


______________________________________________
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