Adloun

Statistiques bivariées et régression linéaire

Cours complet · mathématiques appliquées (ECG 2e année), chapitre 7 · prépa ECG, 2e année

Travailler ce chapitre sur Adloun Exercices corrigés de ce chapitre

La première année a décrit une série de nombres : moyenne, variance, médiane. On dispose ici de deux mesures faites sur les mêmes individus — la croissance et le chômage d'un pays, le revenu et la consommation d'un ménage, la publicité et les ventes d'une entreprise — et la question change de nature : ces deux grandeurs varient-elles ensemble, et si oui, comment ?

Ce chapitre y répond par trois nombres : la covariance, qui mesure la tendance commune ; le coefficient de corrélation, qui la ramène à une échelle universelle ; et la droite de régression, qui résume le nuage par une relation affine.

AttentionCorrélation n'est pas causalité, et la droite n'est pas la vérité

Un coefficient de corrélation proche de dit que les points s'alignent, rien de plus. Il ne dit ni que l'une des grandeurs cause l'autre, ni que la relation est linéaire en dehors des données observées. Le programme insiste : « on discutera de la pertinence d'une régression linéaire selon les données observées ».

7.1 Le nuage de points

7.1.1 Le jeu de données du chapitre

Exemple 7.1Croissance et chômage

On dispose de huit observations. La variable est la croissance annuelle du PIB, en pourcentage ; la variable est la variation du taux de chômage sur la même année, en points.

(croissance, %)
(chômage, points)

Ces valeurs sont fictives, mais elles illustrent une régularité empirique bien réelle, la loi d'Okun : plus la croissance est forte, plus le chômage recule.

Définition 7.2Nuage de points, point moyen

Le nuage est l'ensemble des points du plan. Le point moyen est , où

7.2 Covariance et corrélation

Définition 7.3Covariance empirique

Lorsque , on retrouve la variance empirique .

◆Théorème 7.4Formule de Koenig-Huygens

Démonstration

En développant le produit dans la définition :

et les trois derniers termes valent .

ImportantLe signe de la covariance se lit sur les quadrants

Découpons le plan en quatre quadrants centrés en . Un point situé en haut à droite ou en bas à gauche donne un produit positif ; un point en haut à gauche ou en bas à droite donne un produit négatif. La covariance est la moyenne de ces produits : elle est positive si le nuage penche à droite, négative s'il penche à gauche.

Définition 7.5Coefficient de corrélation linéaire empirique

Si et ,

◆Théorème 7.6Propriétés

, et si et seulement si tous les points du nuage sont alignés.

ImportantComment lire
  • proche de : les points s'alignent sur une droite montante ;
  • proche de : ils s'alignent sur une droite descendante ;
  • proche de : aucune tendance linéaire — ce qui ne veut pas dire aucune relation.

Le coefficient est sans unité : il ne change pas si l'on convertit des euros en milliers d'euros. C'est ce qui le rend comparable d'une étude à l'autre.

Exemple 7.7Les trois nombres de notre jeu de données

On calcule, sur les huit observations :

Le coefficient est très proche de : les points sont presque parfaitement alignés sur une droite descendante.

7.3 Ajustement des moindres carrés

Définition 7.8Droite de régression de en

C'est la droite qui minimise la somme des carrés des résidus

◆Théorème 7.9Les coefficients

En particulier, la droite passe toujours par le point moyen .

AttentionDeux droites, pas une

En échangeant les rôles, on obtient la droite de en , de coefficient directeur . Les deux droites passent par mais ne coïncident pas, sauf si . Il faut donc choisir laquelle des deux variables on explique, et le dire.

◆Théorème 7.10Le lien entre les deux pentes

ImportantPré-transformer pour se ramener au linéaire

Si le nuage suit visiblement une courbe exponentielle, on n'ajuste pas une droite sur : on ajuste une droite sur . Une relation devient , qui est affine. On revient ensuite à par l'exponentielle.

Python : Tout le chapitre, en dix lignes


import numpy as np

x = np.array([0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0])
y = np.array([0.9, 0.6, 0.5, 0.2, 0.0, -0.2, -0.5, -0.7])

xb, yb = x.mean(), y.mean()
sxy = ((x - xb)*(y - yb)).mean()
a = sxy / ((x - xb)**2).mean()
b = yb - a*xb
r = sxy / (x.std() * y.std())

print(round(xb,4), round(yb,4), round(sxy,5))   # 2.25 0.1 -0.59375
# -0.452381 1.117857 -0.997406
print(round(a,6), round(b,6), round(r,6))

x.std() calcule bien au sens de ce chapitre, avec le diviseur . Attention : d'autres bibliothèques divisent par et donneraient un autre nombre.

Continuer sur Adloun : animation, QCM, fiches, exercices