Régression linéaire
Bonjour, j'ai cherché à réaliser un régression linéaire sur un ensemble de valeurs (xi,yi) sous la forme d'une droite passant par l'origine (Y = a X).
La méthode des moindres carrés donne pour valeur du coefficient a :
a = Sum(xi yi)/Sum(xi^^2)
Afin de vérifier la qualité du 'fit', j'aurais aimé calculer le coefficient de régression linéaire. r Si je suis bien mon cours, la valeur de r^2 est :
r^2 = SSE/SST
où SSE représente la somme des carrés des écarts de a*xi par rapport à la moyenne des yi ( <yi> ) et SST la somme des carrés des écarts de yi par rapport à <yi>. On obtiendrait alors :
r^2 = Sum( (a*xi - <yi>)^2 )/Sum( (yi - <yi>)^2 )
Or, cela ne semble pas fonctionner dans ce cas. J'obtient toujours des valeurs de r^2 supérieur à 1, dans les cas que j'étudie, malgré un calcul correct de a.
L'utilisation de Mathematica donne d'ailleurs une expression du coefficient différente. Pour la corrélation que j'utilise, il préfère utiliser l'expression :
r^2 = Sum( (a*xi )^2 )/Sum( (yi )^2 )
et donne une valeur toujours comprise entre 0 et 1.
Ma question est donc de savoir si la formule que j'utilise originellement pour le calcul de r^2 est valable, où est seulement limité aux régressions linéaires de type Y = a X + b.
Est ce que la formule de Mathematica est, dans mon cas, justifié ?
D'avance merci de vos réponses.
La méthode des moindres carrés donne pour valeur du coefficient a :
a = Sum(xi yi)/Sum(xi^^2)
Afin de vérifier la qualité du 'fit', j'aurais aimé calculer le coefficient de régression linéaire. r Si je suis bien mon cours, la valeur de r^2 est :
r^2 = SSE/SST
où SSE représente la somme des carrés des écarts de a*xi par rapport à la moyenne des yi ( <yi> ) et SST la somme des carrés des écarts de yi par rapport à <yi>. On obtiendrait alors :
r^2 = Sum( (a*xi - <yi>)^2 )/Sum( (yi - <yi>)^2 )
Or, cela ne semble pas fonctionner dans ce cas. J'obtient toujours des valeurs de r^2 supérieur à 1, dans les cas que j'étudie, malgré un calcul correct de a.
L'utilisation de Mathematica donne d'ailleurs une expression du coefficient différente. Pour la corrélation que j'utilise, il préfère utiliser l'expression :
r^2 = Sum( (a*xi )^2 )/Sum( (yi )^2 )
et donne une valeur toujours comprise entre 0 et 1.
Ma question est donc de savoir si la formule que j'utilise originellement pour le calcul de r^2 est valable, où est seulement limité aux régressions linéaires de type Y = a X + b.
Est ce que la formule de Mathematica est, dans mon cas, justifié ?
D'avance merci de vos réponses.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le peu de souvenir que j'ai vis à vis de R² c'est qu'il représente un pourcentage d'écart à la courbe que tu veux "fitter". Donc, il ne prend ses valeurs que dans l'intervalle [0,1] (1 étant le fit parfait).
Si tu obtiens des valeurs supérieures à 1 c'est que ta formule est erronée (I believe!).
Petite remarque; EXCEL fait ça vachement bien!!!
Traces ton graphe
Clic droit sur le graphe --> ajouter courbe de tendance --> Choix + options
r^2=cov(x,y)^2/(V(x)*V(y)). Vous pouvez le calculer directement à partir de vos données (x,y).
année quantité
1 10,5
2 14,5
3 19,2
4 24,8
5 28,9
6 35,9
7 41
8 44,2
9 44,1
10 56,1
Dans le cas d'une régression y=ax+b, Excel donne a=4,838 et b=5,313, avec r²=0,982 (dans ce cas, r² est bien le carré du coeff de corr.). Par contre, pour la régression y=ax, Excel donne a=5.5966 et r²=0,9513. Dans ce cas, il semblerait que r² ne soit pas défini à partir du coeff de corr.
année 1 2 3 4 5 6 7 8 9 10
quantité10,5 14,5 19,2 24,8 28,9 35,9 41 44,2 44,1 56,1
Si la corrélation se fait correctement, le coefficient de régression linéaire doit prendre une expression différente entre Mathematica et Excel (mais reste compris entre 0 et 1).
Si cela peut aider à s'y retrouver dans les diverses formules de régressions linéaires et méthodes des moindres carrés, le document joint en donne un récapitulatif et application à l'exemple des données de Richard André-Jeannin :
Seule la formule de Rxy donnée au début est valable dans tous les cas.
Les formules de Rxy qui contiennent des coefficients relatifs à une droite de régression ne sont valables que pour le type de régression correspondant et changent donc d'un cas à l'autre.
Remarque : danc ce cas, la formule à utiliser pour le calcul du coefficient de corrélation est celle donnée au début : les formules avec le coefficient (a) de la droite ne sont pas valides.
Personnellement j'ai écrit un petit programme qui à partir des couples x et y détermine pa les moindres carrés les équations de la droite et des courbes avec pour chacune le coefficient d'adéquation qui est = à la somme des carrés des différences y(data) et y(théorique) divisé par n. La courbe qui possède le coeff le plus petit est la courbe qui rend compte au mieux du nuage de points.
A-t-on le droit d'imposer à la droite de passer par l'origine ? Je ne crois pas qu'on peut dans tous les cas.
Bravo pour les calculs et croquis ci-dessus.
Cordialement.
Pour répondre à Koniev, à savoir si on peut où non imposer à une droite de passer par l'origine, la réponse est "oui".
On peut le faire selon le sujet que tu traite. Une droite de corrélation sert essentiellement à voir la relation qu'il peut exister entre deux variables. Et elle est très souvent utilisée dans des domaines biologiques. Il arrive qu'on impose à la droite de régression de passer par l'origine pour des raisons évidentes lorsqu'on compare des données expérimentales et théoriques.
Mickaël
J'ai trouvé les mêmes résultats pour les coeficient directeurs de la droite, mais il reste quand même quelquechose que je ne comprends pas : dans les deux formulaires, la formule du coefficient de corrélation $r_{xy}$ est la même.
Quelqu'un peut m'expliquer pourquoi ?
Merci,
Mickaël
En fait, je voulais surtout relancer la question. Mais personne ne pourrait clairement m'expliquer quelle est la formule qui permet de calculer le coefficient de corrélation (ou de détermination) lorsque l'on force la droite de régression à passer par zéro ?
Merci par avance,
Mickaël
Juste une idée...
Dans le cas classique, le coefficient de corrélation $r$ vérifie : $$r^2=a\cdot a'$$ où $a$ et $a'$ sont respectivement les coefficients directeurs des droites d'ajustement de $Y$ en $X$ et de $X$ en $Y$.
On peut prendre la même approche dans le cas où on force les droites à passer par l'origine. Dans ce cas, reste à voir quelle droite de régression on choisit dans celles proposées par $\mathbf{JJ}$. Si on prend par exemple la droite minimisant $\sum h_k^2$, on peut peut-être avancer :
$$r^2=\frac{\overline{XY}}{\overline{X^2}}\cdot\frac{\overline{XY}}{\overline{Y^2}}=\frac{\left(\overline{XY}\right)^2}{\overline{X^2}\overline{Y^2}}$$
Nicolas
Pour le modèle avec la constante, considère le triangle rectangle qui passe par ybarre, ychap et epsilonchap. Le R² est l'angle entre les vecteurs ychap - ybarre et y - ybarre.
Lorsque la constante n'est pas dans le modèle, alors tu ne peut pas obtenir le vecteur ybarre dans l'espace de tes variables. Le R² mesure alors un angle différent (celui entre y et ychap).
Dis comme ça ça n'est pas très clair, mais en faisant un dessin (y chap est la projection orthogonale sur l'espace des variables explicatives), ça l'est plus.
Pour citer mon poly : "le R² mesure le cosinus carré de l'angle entre les vecteurs y et ychap, pris à l'origine ou pris en ybarre".
Je pourrai scanner un dessin si il faut, c'est très clair.
Cordialement
Merci beaucoup pour votre aide.
Pour Nicolas : Qu'appelles-tu exactement la droite minimisant les $h_k^2$ ?
S'agirait-il des distances entre un point et la sroite de régression de sorte que tout vecteur appartenant à cette distance soit parallèle à l'axe $y$ ?
Pour Yves : Je vois "à peu près" ce que tu veux dire. Mais lorsque l'on calcule le rapport des variances SSe/SSt, comme tu dis, celà fonctionne très bien quand on s'intéresse à un modèle avec une constante.
1. Mais pourquoi est-ce que ça ne marche plus si on refait tous les calculs avec le modèle sans constante ?
2. D'après la démonstration que tu donnes, quelle formule finale obtient-on pour calculer ce $r^2$ ?
Merci,
Mickaël
Le R² est une mesure d'adéquation du modèle. En gros, tu veux voir si ta droite de régression est "loin" de la vraie droite. Pour cela, il est intéressant de regarder un angle. C'est ce que le R² fait.
Dans le cas sans constante, le vecteur ychap-ybarre1 n'est plus dans l'espace engendré par les variables explicatives. Ainsi si on l'utilise, on a peu de chance d'avoir une mesure d'adéquation correcte.
Le R² possède donc deux formules différentes. Dans le cas sans la constante, la formule est ||ychap||/||y||
Pour faire un dessin :
Dessine un plan qui représente l'espace engendré par les X, et un vecteur qui n'est pas dans ce plan (y). Ychap est la projection orthogonale de Y sur cet espace.
Dessine la projection orthogonale de y sur le vecteur constante (qui fait partie de l'espace des variables lorsque la constante est dans le modèle) : tu récupères ybarre.
Dessine aussi le vecteur epsilonchap (y-ychap), qui doit être orthogonal à ton plan.
Une fois tout ces vecteurs obtenus, tu devrais avoir deux triangles rectangles. L'un est utilisé avec constante, l'autre sans constante (car sans constante, le premier triangle rectangle dessiné est faux).
Voilà, j'imagine que ce n'est pas simple de suivre un dessin par écrit, mais je pourrai le scanner lundi quand je retournerai à la fac.
Bon courage
Merci beaucoup Yves. C'est vrai qu'avec un dessin ce serait plus simple, mais je vais quand même faire l'effort de le faire pour moi-même.
Je verrai bien si j'obtiens la même chose que le dessin que tu scanneras.
Dans tous les cas, j'y vois beaucoup plus clair avec tes explications.
Encore merci,
Mickaël
Le coefficient directeur de la droite de régression linéaire est:
$a = \frac{\sum_{i=1}^{n}x_{i}y_{i}}{\sum_{i=1}^{n}x_{i}^{2}}$
$n$ etant le nombre de valeurs a corréler.
Donc, la droite de régression linéaire a pour équation: $\hat{y}_k = ax_{k}$
Et nous avons : $r^{2} = \frac{\sum_{k=1}^{n} |\hat{y}_{k}|}{\sum_{k=1}^{n}|y_{k}|}$
Or, je trouve des valeurs assez abhérantes, c'est-a-dire supérieures a 1 ou encore très proches de 1 pour des valeurs qui sont loin d'être corrélées. Ai-je fait une erreur quelquepart ou ai-je raté quelquechose ?
Merci,
Mickaël
Il faut donc utiliser comme formule
$$r^{2} = \frac{\sum_{k=1}^{n} {\hat{y}_{k}}^{2}}{\sum_{k=1}^{n}{y_{k}}^{2}}$$\\
Effectivement, je trouve cette fois-ci des valeurs comprises dans l'intervalle [0;1].
Néanmoins, il y a quelquechose pour le moins étrange: Quand je calcule le coefficient de détermination a partir du modèle avec constante pour un ensemble de données, j'obtiens une valeur proche de 0,4 (on montre clairement avec une telle valeur dans ce cas, sans même faire le test de Fisher, qu'il n'y a pas de corrélation entre les deux séries de valeurs).
Or, quand j'ajuste la droite de régression de sorte à la faire passer par l'origine et que je calcule le coefficient de détermination avec la formule que tu m'as donnée, j'ai une valeur un peu supérieure a 0.991 (Et là non plus, je ne pense pas qu'un test de Fisher soit nécessaire pour montrer la forte corrélation entre les deux series de valeur).
En toute logique, sachant que j'ai ajusté la droite de régression, elle devrait "fitter" moins bien les points et donc le coefficient de détermination (ou de corrélation) devrait lui tendre "plus" vers 0. Tu es d'accord avec moi là ?
D'où ma question: Comment expliquer de tels resultats ?
Merci,
Mickaël
Souviens toi que le R² ne mesure pas le même angle en fonction de si la constante est ou n'est pas dans le modèle (cf le dessin que je mettrai lundi). Donc il peut être délicat de comparer les deux types de R².
Il est d'ailleurs possible de montrer que le R² dans le cas avec la constante est {\bf toujours} plus petit que le R² dans le cas sans constante (apparament il suffit de comparer les deux angles en question, mais je ne me suis pas trop penché sur la question.)
De là à expliquer une si forte différence, je ne sais pas trop.
Quelques petites remarques :
La regression linéaire, comme son nom l'indique, ne met en évidence que des liens linéaires. Un faible R² ne veut donc pas dire qu'il n'y a pas de corrélation entre tes deux variables.
Dans la pratique, je ne sais pas quelle importance il faut donner au R² (celà dépend sans doute du contexte). Je sais qu'en économétrie, des R² de 0.4 sont considérés comme bons. Le but n'est en effet pas de trouver le fit parfait, mais plus de mesurer les effets de certaines variables. Ainsi, tu peux avoir un modèle incomplet, mais un effet significatif des variables d'intérêt.
Je t'avoue ne pas avoir une très grande expérience pratique, et je pense qu'une bonne interpretation des données comme le R² passe plus par l'expérience que par la théorie.
Yves
En fait, je travaille sur des modélisations de données biologiques. Le fait que je veuille que ma régression passe par zéro est primordiale en ce sens que je compare des données expérimentales et théoriques d'un même système. Donc, les systèmes devraient être totalement identiques dans un sens.
Il se peut que la pente de la droite de régression ne soit pas de 1 car les deux expériences peuvent avoir été effectuées dans des conditions différentes. Ainsi, les valeurs obtenues dans une expérience peuvent être "biaisées". Mais dans ce cas, toutes les valeurs du même système ont été biaisées dans le même sens. Et en régression, on peut multiplier toutes les valeurs par un même coefficient sans que celà ne change la valeur du coefficient de corrélation. En revanche, si tu as une droite passant par l'origine, tu peux toujours biaiser un des systèmes, la droite passera toujours par l'origine (même si elle n'a pas la même pente).
Enfin, il n'y a pas spécialement de limite pour une bonne corrélation, mais le but est de comparer plusieurs modèles prédits avec un système de référence pour savoir lequel a la meilleure corrélation et est donc plus proche de la réalité (Ce n'est pas plus compliqué que ça). On pourrait faire des tonnes de tests (Fisher par exemple) pour savoir si la corrélation est significative, mais vu que les données sont toujours du même type, ces tests ne deviennent nécessaires que pour le système ayant la meilleure corrélation.
Le problème, c'est que si je ne peux pas faire confiance à une corrélation utilisée, il m'est difficile de savoir si le modèle choisi est vraiment proche du modèle de référence.
J'espère que ça a été plus ou moins clair...
Mickaël
Justement, ce biais dont tu parles ne pourrait il pas "decaler" ton experience par rapport au vrai modele, ce qui necessiterait l'utilisation de la constante?
Lorsque tu fais le modele avec la constante, cette derniere est elle significativement differente de 0?
Sinon je joins le dessin sur le R2, qui je pense donne une bonne intuition de ce qu'il se passe dans un regression lineaire.
Yves
[Voilà les documents de taille plus lisible sur le forum AD]
Yves
[A ton service AD]
{\bf JJ}, dans le cas de l'approche $\displaystyle\sum d_k^2$ et dans le cas général (on n'impose pas à la droite de passer par l'origine)...
(1) Êtes-vous sûr de ne pas avoir oublié un 2 au dénominateur ?
Je trouve de mon coté $C=\displaystyle\frac{V(X)-V(Y)}{2\mathrm{cov}(X,Y)}$
Mais j'ai pu me tromper, bien sûr !
(2) Puis $a=-C\pm\sqrt{1+C^2}$
Dans votre tableau, vous ne retenez que la solution $a=-C+\sqrt{1+C^2}$ mais il me semble que la solution $a=-C-\sqrt{1+C^2}$ s'impose quand la droite est manifestement décroissante. Il faudrait dans ce cas trouver un critère pour choisir le bon.
Qu'en pensez-vous ?
Cordialement,
Nicolas
et merci pour votre intervention.
En effet, vous avez raison : il manque bien un facteur (1/2) à la formule de C, cas n°3, régression à deux paramètres).
Je suis surpris que cela n'ait pas été signalé depuis tout ce temps !
En tout cas, ce coefficient est bien là dans mon programme de calcul : c'est un oubli à la recopie de la formule
.
En ce qui concerne le choix entre le + ou le - de la racine carrée, mon programme calcule les deux cas et les écarts quadratiques moyens respectifs. Le choix est sans ambiguité en les comparant.
Il est regrétable que j'aie oublié d'en parler. Maintenant, c'est fait grâce à vous.
Cordialement,
JJ
\begin{itemize}
\item si $cov(X,Y)0$, on choisit $a=-C+\sqrt{1+C^2}\ge 0$.
\end{itemize}
En effet, si on note $f(a,b)$ la distance (classique) entre la droite et le nuage de points, on obtient (avec les notations habituelles) :
$$s^2-rt=-\frac{16\cdot\mathrm{cov}(X,Y)\cdot a\cdot(1+C^2)}{(1+a^2)^4}$$
Pour avoir $s^2-rt0$$
On a bien un minimum.
Nicolas
Mickaël
je n'ai pas encore vérifié, mais à première vue cela semble plausible. En tout cas, c'est plus élégant que de choisir la bonne détermination après avoir fait les calculs dans les deux cas (quoi que, pour un ordinateur, le temps de calcul est tellement faible qu'il passe inaperçu).
Très bien, je retiens le résultat.