[lm] Pour une regression polynomiale ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

[lm] Pour une regression polynomiale ?

Messagepar Thomas Galtier » 23 Juin 2007, 19:36

Bonjour,

Avec la fonction lm on peut faire une regression polynomiale ... mais dans mon cas j'aimerai savoir .... j'ai des données TEMPERATURE, et des coordonnées LON et LAT.

Je dois donc faire un TEMP~LON+LAT et LON et LAT et j'aurai bien un plan ?

Là en testant j'ai pas réussi à faire de graphe, et les coeff que j'avais trouvé ont l'air bon mais en le faisant à la main, ma surface ne ressemble à rien ... aucun possibilité de comprendre pourquoi ça fait ça ...

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Juin 2007, 20:47

Je vous met mon code :

Code : Tout sélectionner

> test<-data.frame(LONG=mydata_temp$V1,LAT=mydata_temp$V2,TEMP=mydata_temp$V3)
> names(test)
[1] "LONG" "LAT"  "TEMP"

> toto<-lm(TEMP~LONG+LAT,data=test)
> toto

Call:
lm(formula = TEMP ~ LONG + LAT, data = test)

Coefficients:
(Intercept)         LONG          LAT 
    3128.13       -54.71       -18.50 

> summary(toto)

Call:
lm(formula = TEMP ~ LONG + LAT, data = test)

Residuals:
    Min      1Q  Median      3Q     Max
-492.54  -15.18   32.83   57.70  131.53

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 3128.126    196.264  15.938  < 2e-16 ***
LONG         -54.712      4.816 -11.361  < 2e-16 ***
LAT          -18.496      4.423  -4.182 2.97e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 97.91 on 3293 degrees of freedom
Multiple R-Squared: 0.04433,    Adjusted R-squared: 0.04375
F-statistic: 76.37 on 2 and 3293 DF,  p-value: < 2.2e-16


J'ai un peu de mal à voir après comment ça marche ... enfin comment analyser tout ça ... j'pensais pouvoir récupérer le test R de la variance.
(par exemple en prenant un jeu test et en regardant la différence sur les vraies valeurs par la prediction polynomiale)

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Re: [lm] Pour une regression polynomiale ?

Messagepar Renaud Lancelot » 23 Juin 2007, 22:01

Thomas Galtier a écrit :Bonjour,
Je dois donc faire un TEMP~LON+LAT et LON et LAT et j'aurai bien un plan ?


Où est le polynôme ???

Je pense que vous voulez faire un lissage bivarié - ou une simple interpolation - de la température en fonction de la latitude et de la longitude. Il y a de nombreux outils pour faire ça mais je ne prendrais pas lm.

Voir par exemple la fonction interp dans le package akima.

Renaud

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 24 Juin 2007, 10:32

En fait j'aimerai bien faire une surface de tendance pour la temperature en fonction de la logitude et de la latitude.

J'ai vu cet outil sur internet pour un TP.

Une surface de tendance c'est pareil qu'une regression polynomiale non ?

En fait ici, avec lm je recupere b(1) b(2) b(3) qui me font donc :
TEMP=b(1)+b(2)*LON+b(3)*LAT

C'est pas ça ?

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 24 Juin 2007, 10:46

Thomas Galtier a écrit :En fait j'aimerai bien faire une surface de tendance pour la temperature en fonction de la logitude et de la latitude.

J'ai vu cet outil sur internet pour un TP.

Une surface de tendance c'est pareil qu'une regression polynomiale non ?


Non. Une régression polynomiale est de la forme y = poly(x) + e

En fait ici, avec lm je recupere b(1) b(2) b(3) qui me font donc :
TEMP=b(1)+b(2)*LON+b(3)*LAT

C'est pas ça ?


Je pense qu'il faut que vous lisiez des références sur ce sujet qui est très vaste. Pour une vue d'ensemble, voir par exemple:

Venables, W.N., Ripley, B.D., 2002. Modern applied statistics with S., 4th Edition. Springer, New York, 495 p.

Les méthodes décrites dans le livre sont mises en oeuvre dans le package "spatial" (livré avec la distribition de base de R). Vous y trouverez des fonctions comme surf.ls ou surf.gls qui permettent effectivement d'ajuster des modèles de tendance reposant sur des polynômes. Je ne suis pas spécialiste de ce domaine, mais je pense que l'intérêt est surtout pédagogique (support du bouquin). Je ne suis pas sûr que les spécialistes des geostats en restent là.

Renaud

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 24 Juin 2007, 10:53

Merci Renaud,

En fait je disais ça car j'avais vu dans un livre que trend srface = regression polynomiale ... et qu'apres on prenait comme exemple qqchose de la forme que j'ai ecrite au dessus.

Mais est-ce que la formule, via lm est bonne ?

Dire que TEMP=b1 + b2*LON + b3*LAT ?

Sinon effectivement dans le package spatial, la fonction surf.ls fait une surfce de tendance.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 24 Juin 2007, 20:49

Thomas Galtier a écrit :Merci Renaud,

En fait je disais ça car j'avais vu dans un livre que trend srface = regression polynomiale ... et qu'apres on prenait comme exemple qqchose de la forme que j'ai ecrite au dessus.

Mais est-ce que la formule, via lm est bonne ?

Dire que TEMP=b1 + b2*LON + b3*LAT ?


Non.

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 25 Juin 2007, 08:00

Ok cette formule correspond à quoi alors ?

Car avec surf.ls, on fait des moindres carrés et on trouve un polynome de degre 2 ou 1 ou 3 en x et y et ça nous fait la surface ...

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 25 Juin 2007, 08:29

Pas à ce qui est fait par une recherche de tendance, même linéaire. Voir la référence que j'ai indiquée, ou des bouquins spécialisés en géostats. Venables et Ripley disent (p. 420):

Trend surfaces
One of the earliest methods was fitting trend surfaces, polynomial regression surfaces of the form
f((x, y)) = \sum_{r + s \leq p} a_{r + s} x^{r} y^{s} (15.1)
where the parameter p is the order of the surface. There are P = (p+1)(p+2)/2 coefficients. Originally (15.1) was fitted by least squares, and could for example be fitted using lm with poly which will give polynomials in one or more variables. However, there will be difficulties in prediction, and this is rather inefficient in applications such as ours in which the number of points at which prediction is needed may far exceed n. Our function surf.ls implicitly rescales x and y to [−1, 1], which ensures that the first few polynomials are far from collinear.

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 25 Juin 2007, 15:36

Je n'ai pas réussi à trouver à quoi correspondait les variables que nous renvois surf.ls ... surtout le "r" "rx" "ry" ... beta c'est bon mais je ne vois pas.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité