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.

Réponses

  • Salut!

    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
  • C'est justement parceque cette valeur est supérieure à 1 avec la formule initiale que je m'inquiète. J'aurais voulu avoir confirmation que cette expression n'est pas générale et que dans mon cas, la seconde expression pour r^2 est préférable.
  • Le coefficient de détermination r^2 est le carré du coefficient de corrélation r, on peut donc écrire:
    r^2=cov(x,y)^2/(V(x)*V(y)). Vous pouvez le calculer directement à partir de vos données (x,y).
  • Je viens de regarder l'exemple suivant, avec Excel :

    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.
  • Ecriture plus lisible du tableau:

    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
  • C'est étonnant, avec Mathematica ou l'expression que je donne précédemment, je trouve la même valeur que toi pour a (a=5.596) mais r^2 est égal à 0.992. Cette valeur est celle donée également par mon expression donnée précédemment.

    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).
  • Est ce que quelqu'un a d'autres renseignements à ce sujet et notamment une expression du coefficient de régression dans ce cas particulier de corrélation ?
  • Bonjour,

    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 :895
  • Remarque importante :
    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.
  • En complément du formulaire précédent, le document joint traite le même exemple en imposant que la droite de régression passe par l'origine.
    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.896
  • La régression donne l'équation de la droite qui rend compte au mieux du nuage de points donnés. A vrai dire on ne sait pas si c'est une droite y=ax+b ou y=ax ou une courbe "puissance" ou "logarit", ou "exponentielle".
    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.
  • Salut à tous!

    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
  • Il était temps que Mickael réagisse. On commencait à s'impatienter.
  • Bah en fait, je me posais la même question que Nathan et en recherchant dans le forum, je suis tombé sur cette discussion...

    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
  • Salut à toutes et à tous,

    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
  • Bonjour,

    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
  • Le R² peut s'interpréter comme le cosinus carré d'un angle entre deux vecteurs. Mais sa formule diffère entre la modèle avec constante et le modèle sans constante.

    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
  • remarque : dans le modèle avec la constante, le R² s'interprette aussi comme un rapport de variances : variance expliqué par le modèle sur variance totale.
  • Salut,

    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
  • Salut.

    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
  • Salut,

    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
  • J'ai fait un premier essai... Tres simple en soi.

    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
  • Excuse moi, j'ai commis une erreur dans la formule du R² sans la constante. Les normes doivent etre élevées au carré.

    Il faut donc utiliser comme formule
    $$r^{2} = \frac{\sum_{k=1}^{n} {\hat{y}_{k}}^{2}}{\sum_{k=1}^{n}{y_{k}}^{2}}$$\\
  • Merci Yves pour cette précision (En fait, je me posais la meme question a propos d'élever les valeurs au carré). J'ai essayé de nouveau avec la nouvelle formule.

    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
  • Salut

    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 effet Yves, comme tu dis si bien : "De là à expliquer une si forte différence".

    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
  • "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"

    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

    File00191.jpg
    File00211.jpg

    [Voilà les documents de taille plus lisible sur le forum :) AD]
  • Je sios vraiment confus, je ne pensais pas que les dessins seraient si volumineux.

    Yves
  • Merci AD

    [A ton service :) AD]
  • Bonjour,

    {\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
  • Bonjour Nicolas_75

    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
  • {\bf JJ}, j'ai approfondi le problème, et ai vérifié (après 5 pages de calculs bien bourrins !) que le choix du signe pour $a$ répond à une règle qui correspond à l'intuition :
    \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
  • Euh... Là, je dis: "Impressionnant!"

    ;)
    Mickaël
  • Bonjour Nicolas_75

    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.
  • sil vous plaie si vous avez une base de donnée met le :)
  • je veux une base de donnée svp
  • Pour le père Noël, ce n'est pas le bon endroit !
Connectez-vous ou Inscrivez-vous pour répondre.