[R] use of lm() and poly()
Daniel Malter
daniel at umd.edu
Tue Dec 22 18:22:27 CET 2009
Hi, if I see it correctly, the nls you run is a linear model. It will
probably give you the same (or virtually identical) result as
lm(dP~U0+I(U0^2)+I(U0^3)+I(U0^4)).
Your lm model, by contrast, creates orthogonal polynomials such that all
orders of the polynomials are uncorrelated with the others. That is, there
is some transformation involved to orthogonalize the polynomials. This is
the likely reason why you see differences in your nls and your lm
specification.
Daniel
-------------------------
cuncta stricte discussurus
-------------------------
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Benoit Boulinguiez
Sent: Tuesday, December 22, 2009 12:10 PM
To: r-help at r-project.org
Subject: [R] use of lm() and poly()
Hi all,
I want to fit data called "metal" with a polynominal function as dP ~ a.0 +
a.1 * U0 + a.2 * U0^2 + a.3 * U0^3 + a.4 * U0^4 The data set includes, the
independant variable U0 and the dependant variable dP.
I've seen that the combination of lm() and poly() can do that instead of
using the nls() function.
But I don't get how to interpret the results from the linear regression, as
the coefficients do not match the ones from the nonlinear regression
#data
metal
U0 dP
1 0.00 0
2 0.76 10
3 1.43 20
4 2.56 40
5 3.05 50
6 3.52 60
7 3.76 70
8 4.05 80
9 4.24 90
10 4.47 100
#linear
d <- seq(0, 4, length.out = 200)
for(degree in 1:4) {
fm <- lm(dP ~ poly(U0, degree), data = metal)
assign(paste("metal", degree, sep="."), fm)
lines(d, predict(fm, data.frame(U0=d)), col = degree)
}
metal.4
Call:
lm(formula = dP ~ poly(U0, degree), data = metal)
Coefficients:
(Intercept) poly(U0, degree)1 poly(U0, degree)2 poly(U0, degree)3
poly(U0, degree)4
52.000 100.612 19.340 7.101
2.628
#nonlinear
fm<-nls (dP~ a.0 + a.1*U0 + a.2*U0^2 + a.3*U0^3 + a.4*U0^4, data=metal)
Nonlinear regression model
model: dP ~ a.0 + a.1 * U0 + a.2 * U0^2 + a.3 * U0^3 + a.4 * U0^4
data: metal
a.0 a.1 a.2 a.3 a.4
0.02408 9.81452 5.54269 -2.24657 0.36737 residual sum-of-squares: 5.843
Number of iterations to convergence: 2
Achieved convergence tolerance: 1.378e-06
Regards/Cordialement
-------------
Benoit Boulinguiez
Ph.D student
Ecole de Chimie de Rennes (ENSCR) Bureau 1.20 Equipe CIP UMR CNRS 6226
"Sciences Chimiques de Rennes"
Avenue du Giniral Leclerc
CS 50837
35708 Rennes CEDEX 7
Tel 33 (0)2 23 23 80 83
Fax 33 (0)2 23 23 81 20
<http://www.ensc-rennes.fr/> http://www.ensc-rennes.fr/
[[alternative HTML version deleted]]
More information about the R-help
mailing list