Institut National des Télécommunications et des Technologies de l'Information et
de la Communication INT-TIC d'Oran Algérie
Analyse de Données
3ème année ingénieur
Fiche de TP N° 5
Méthodes Inductives
Régression Linéaire Multiple
Nous avons vu que l’analyse linéaire discriminante permet, sur la base d’un ensemble de
variables quantitatives, de discriminer au mieux entre les individus appartenant à différentes
classes (modalités différentes de la variable qualitative). Ainsi, il est possible de déterminer (de
prédire) la classe d’un nouvel individu à partir des valeurs des variables quantitatives. Ceci
peut être vu comme sorte de une mise en relation entre l’ensemble des variables quantitatives
d’une part, et la variable qualitative d’autre part.
La régression linéaire multiple permet, quant à elle, de mettre en relation un ensemble (d’où
le mot « multiple ») de variables quantitatives d’une part, et une variable quantitative d’autre
part. Cette dernière est appelée variable expliquée ; les autres variables quantitatives étant
appelées variables explicatives.
La relation entre les variables explicatives et la variable expliquée est donnée par la relation
linéaire suivante :
𝑌 = 𝑋𝛽 + 𝜖
𝑦1 1 𝑥11 … 𝑥1𝑝 𝛽0 𝜀1
𝑦2 1 𝑥21 … 𝑥2𝑝 𝛽 𝜀2
𝑌= ( ) 𝑋= ( ⋱ ) 𝛽 = ( 1) 𝜖= ( )
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
𝑦𝑛 1 𝑥𝑛1 … 𝑥𝑛𝑝 𝛽𝑝 𝜀𝑛
Où :
𝑦𝑖 : la valeur de la variable expliquée pour l’individu 𝑖.
𝑥𝑖𝑗 : la valeur de la variable explicative 𝑗 pour l’individu 𝑖.
𝛽 : vecteur des paramètres du modèle (à estimer).
𝜖 : erreur générée par le modèle (par la régression).
𝑛 et 𝑝 sont respectivement le nombre d’individus et le nombre de variables explicatives.
Il s’agit donc d’estimer les paramètres 𝛽𝑗 qui minimisent l’erreur de la régression (erreur des
moindres carrés). Sous certaines conditions (𝑛 > 𝑝 + 1 et 𝑟𝑎𝑛𝑔(𝑋) = 𝑝 + 1), l’estimation de 𝛽
est donnée par la formule suivante :
𝛽̂ = (𝑋 𝑇 𝑋)−1 𝑋 𝑇 𝑌
1
Nous allons appliquer ce modèle sur un jeu de données contenant des informations sur les
pourcentages de personnes atteintes de maladies cardiaques dans différentes régions. Le
fichier de données [Link] contient les 3 variables quantitatives suivantes, pour un
échantillon de 498 individus (498 régions) :
biking Pourcentage de personnes qui utilisent le vélo pour aller au travail
smoking Pourcentage de personnes qui fument
[Link] Pourcentage de personnes atteintes de maladies cardiaques
Dans ce cas de figure, nous recherchons à mettre en relation les variables biking et smoking
(les variables explicatives) d’une part, et la variable [Link] (la variable expliquée)
d’autre part.
Les modules utilisés sont les mêmes utilisés dans les TPs précédents : numpy, pandas et
matplotlib.
>>> import numpy as np
>>> import pandas as pd
>>> import [Link] as plt
>>> import os
Importation et préparation des données
>>> [Link]('C:\\...\\...\\DataExamples')
>>> data = pd.read_csv('[Link]', sep=',')
>>> [Link]()
Unnamed: 0 biking smoking [Link]
0 1 30.801246 10.896608 11.769423
1 2 65.129215 2.219563 2.854081
2 3 1.959665 17.588331 17.177803
3 4 44.800196 2.802559 6.816647
4 5 69.428454 15.974505 4.062224
>>> Y = [Link](data['[Link]']) # Extraction de la variable expliquée
# Extraction des variables explicatives
>>> X = [Link]([data['biking'],data['smoking']]).T
>>> X[:5,:]
array([[30.80124571, 10.89660802],
[65.12921517, 2.21956318],
[ 1.95966453, 17.58833051],
[44.80019562, 2.80255888],
[69.42845368, 15.9745046 ]]
>>> n = [Link][0] # Nombre d’individus
>>> n
498
>>> p = [Link][1] # Nombre de variables (explicatives)
>>> p
2
>>> X = [Link](X, 0, [Link](n), axis=1) # Ajout du vecteur colonnes (contenant
>>> X[:5,:] # des 1 partout) à la 1ère position
array([[ 1. , 30.80124571, 10.89660802],
[ 1. , 65.12921517, 2.21956318],
[ 1. , 1.95966453, 17.58833051],
[ 1. , 44.80019562, 2.80255888],
[ 1. , 69.42845368, 15.9745046 ]])
2
Calcul des paramètres du modèle (vecteur 𝜷) et utilisation
Après avoir préparé le vecteur 𝑌 et la matrice 𝑋, il est à présent possible de calculer
l’estimation du vecteur 𝛽. Mais il faut s’assurer avant que la matrice 𝑋 𝑇 𝑋 est inversible
(déterminant différent de 0), et que les deux variables explicatives ne représentent pas la
même information (en d’autres termes, que le rang de la matrice est égal à p=2) :
>>> [Link].matrix_rank(X[:,1:]) # Le rang de la matrice des variables
2 # explicatives est bien égal à p=2
>>> [Link]([Link](X)) # Le déterminant est bien différent de 0
3900114699799.9175
Nous calculons l’estimation du vecteur 𝛽 :
>>> beta = [Link]([Link](X)).dot(X.T).dot(Y)
>>> beta
array([14.98465799, -0.20013305, 0.17833391])
Autrement dit :
[Link] = 14.985 – 0.2 * biking + 0.178 * smoking
𝑌̂ le vecteur estimé (ou l’approximation par la régression) de 𝑌 se calcule ainsi :
𝑌̂ = 𝑋𝛽̂
>>> Ye = [Link](beta) # Ye est le vecteur estimé de Y
Supposons que nous voulions estimer le pourcentage de personnes atteintes de maladies
cardiaques d’une nouvelle région dont on connaît seulement le pourcentage de personnes qui
fument (25% par exemple) et le pourcentage de personnes utilisant le vélo pour aller au travail
(2% par exemple). L’estimation se fait comme suit :
>>> [Link]([1, 2, 25], beta)
19.042739729263246
Le pourcentage de personnes atteintes de maladies cardiaques de cette région serait donc de
19.04%.
Coefficient de détermination
Le coefficient de détermination permet de mesurer la qualité d’ajustement du modèle (la
régression) aux données initiales. Il se repose sur le calcul des statistiques suivantes :
𝑆𝐶𝑇 = ∑𝑛𝑖=1(𝑦𝑖 − 𝑦̅)2 Somme des Carrés Totaux
Traduit la variabilité totale.
𝑆𝐶𝐸 = ∑𝑛𝑖=1(𝑦̂𝑖 − 𝑦̅)2 Somme des Carrés Expliqués
Traduit la variabilité expliquée par le modèle.
𝑆𝐶𝑅 = ∑𝑛𝑖=1(𝑦𝑖 − 𝑦̂𝑖 )2 Sommes des Carrés Résiduels
Traduit la variabilité non expliqué par le modèle
3
Le coefficient de détermination 𝑅 2 est donné par :
𝑆𝐶𝐸
𝑅2 =
𝑆𝐶𝑇
>>> SCE = pow([Link](),2).sum(
>>> SCE
10176.571092319944
>>>
>>> SCR = pow(Ye-Y,2).sum()
>>> SCR
211.74025108752582
>>>
>>> SCT = pow([Link](),2).sum()
>>> SCT
10388.311343407451
>>>
>>> R2 = SCE/SCT
>>> R2
0.9796174523377296
Nous avons un coefficient proche de 1 (donc SCE et proche de SCT), ce qui veut dire la
variabilité expliquée par la régression (le modèle) est proche de la variabilité totale. On en
déduit que la régression s’ajuste bien aux données initiales.
Test de significativité du modèle
L’étude de la régression linéaire est souvent complétée par le test d’hypothèse suivant :
- H0 : 𝛽1 = ⋯ = 𝛽𝑝 = 0 (indépendance linéaire entre Y et X)
- H1 : ∃𝑗 / 𝛽 ≠ 0
La statistique 𝐹 suivante suit une loi de Fisher à (𝑝, 𝑛 − 𝑝 − 1) degrés de liberté:
𝑆𝐶𝐸⁄
𝑝
𝐹=
𝑆𝐶𝑅⁄
(𝑛 − 𝑝 − 1)
>>> import [Link] as stat
>>>
>>> F = (SCE/p)/(SCR/(n-p-1))
>>> F
11895.241138200245
>>>
>>> p_value = 1 - [Link](F, p, n-p-1)
>>> p_value
1.1102230246251565e-16
>>>
>>> if p_value <= 0.05:
... print ('Rejet de H0 : Dépendance linéaire')
... else:
... print ('Pas de rejet de H0 : Indépendance linéaire')
...
Rejet de H0 : Dépendance linéaire
R. HACHEMI