Quelques rappels pour comprendre les sorties de R :

 

Variance totale :
 

\(SCT = \frac 1n \sum^n_{i=1}(Y_i - \bar Y)^2\)
 

Variance expliquée :
 

\(SCE = \frac 1n \sum^n_{i=1}(\widehat Y_i - \bar{\widehat Y}), \qquad avec \; \bar{\widehat Y} = \frac 1n \sum_{i=1}^{n}\widehat Y_i\)
 

Variance des résidus :
 

\(SCR = \frac 1n\sum^n_{i=1}(\widehat u - \bar{\widehat u}), \qquad avec \; \bar{\widehat u}= \frac 1n \sum_{i=1}^{n}\widehat u_i\)
 

Équation d’analyse de la variance :
 

\(\frac 1n \sum^n_{i=1}Y_i^2 = \frac 1n \sum^n_{i=1}\widehat Y_i^2 + \frac 1n\sum^n_{i=1}\widehat u^2\)
 

\(\underbrace{\frac 1n \sum^n_{i=1}(Y_i - \bar Y)^2}_{SCT} = \underbrace{\frac 1n \sum^n_{i=1}(\widehat Y_i - \bar{\widehat Y})}_{SCE} + \underbrace{\frac 1n\sum^n_{i=1}(\widehat u - \bar{\widehat u})}_{SCR}\)
 
 

\(SCT = SCE + SCR\)
 

\(1 = \frac{SCE}{SCT} + \frac{SCR}{SCT}\)
 

\(\mathcal R^2 = \frac{SCE}{SCT} \Rightarrow\) % de variance expliquée
 

\(F = \frac{(\mathcal R^2)/1}{(1-\mathcal R^2)/DF} \; , \qquad avec \; DF\) (degrés de liberté) \(= n-p\)
 

\(\mathcal T = \frac{\widehat b}{\sqrt{\widehat{Var(\widehat b)}}}\)

Présentation du jeu de données

Le jeu de données que nous allons étudier provient de la plateforme web “Kaggle”. J’ai pris le soin de sélectionner au préalable les variables qui étaient utiles pour le projet (quantitatives) et de supprimer les lignes aux données manquantes. Dans un soucis de meilleure lisibilité du rapport (tout en étant conscient de l’importance du nom des variables dans le monde du travail), j’ai préféré travailler en partie avec une nomenclature théorique et donc renommer les variables du jeu de données.

 

Audit rapide du jeu de données :
 

## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 126 obs. of  15 variables:
##  $ X^{1} : num  164 164 158 98 81 118 118 118 148 148 ...
##  $ X^{2} : num  99.8 99.4 105.8 94.5 94.5 ...
##  $ X^{3} : num  177 177 193 156 159 ...
##  $ X^{4} : num  66.2 66.4 71.4 63.6 63.6 63.8 63.8 63.8 63.8 63.8 ...
##  $ X^{5} : num  54.3 54.3 55.7 52 52 50.8 50.8 50.8 50.6 50.6 ...
##  $ X^{6} : num  2337 2824 2844 1874 1909 ...
##  $ X^{7} : num  109 136 136 90 90 90 90 98 90 90 ...
##  $ X^{8} : num  3.19 3.19 3.19 3.03 3.03 2.97 2.97 3.03 2.97 2.97 ...
##  $ X^{9} : num  3.4 3.4 3.4 3.11 3.11 3.23 3.23 3.39 3.23 3.23 ...
##  $ X^{10}: num  10 8 8.5 9.6 9.6 9.41 9.4 7.6 9.4 9.4 ...
##  $ X^{11}: num  102 115 110 70 70 68 68 102 68 68 ...
##  $ X^{12}: num  5500 5500 5500 5400 5400 5500 5500 5500 5500 5500 ...
##  $ X^{13}: num  24 18 19 38 38 37 31 24 31 31 ...
##  $ X^{14}: num  30 22 25 43 43 41 38 30 38 38 ...
##  $ Y     : num  13950 17450 17710 6295 6575 ...

 

Ce jeu de données rassemble donc 126 observations sur 15 variables en lien avec les voitures.

Soit \(n=\) nombre d’observations. (Ici \(n=126\))
Soit \(p=\) nombre de variables explicatives. (Ici \(p=14\))

Soit un seuil d’erreur de niveau \(\alpha = 0.05\). (Nous garderons celui-ci tout au long de l’étude)
 


 

Objectif : établir le meilleur modèle de régression linéaire possible sur notre jeu de données pour prédire le prix des voitures, en tenant compte du seuil d’erreur fixé.
 

Ici, notre variable cible est : \(Y\) (le prix)

et nos variables explicatives (features) sont : \(X^{1}, \; X^{2}, \; X^{3}, \; X^{4}, \; X^{5}, \; X^{6}, \; X^{7}, \; X^{8}, \; X^{9}, \; X^{10}, \; X^{11}, \; X^{12}, \; X^{13}\) et \(X^{14}\).

Description des variables :
 

\(X^1\) : “normalized-losses” (continuous from 65 to 256). {Pertes normalisées} - Indice de pollution -

\(X^2\) : “wheel-base” (continuous from 86.6 to 110). {Empattement} - Distance entre les axes d’essieux extrêmes d’un véhicule -

\(X^3\) : “length” (continuous from 144.6 to 192.7). {Longueur}

\(X^4\) : “width” (continuous from 63.4 to 71.4). {Largeur}

\(X^5\) : “height” (continuous from 49.4 to 59.8). {Hauteur}

\(X^6\) : “curb-weight” (continuous from 1819 to 3515). {Poids à vide}

\(X^7\) : “engine-size” (continuous from 79 to 183). {Taille du moteur}

\(X^8\) : “bore” (continuous from 2.91 to 3.78). {Alésage} - Taille du diamètre du cylindre dans lequel se déplace le piston -

\(X^9\) : “stroke” (continuous from 2.36 to 3.9). {Course du moteur} - Distance parcourue par le piston à chaque cycle -

\(X^{10}\) : “compression-ratio” (continuous from 7 to 23). {Taux de compression}

\(X^{11}\) : “horsepower” (continuous from 52 to 162). {Puissance}

\(X^{12}\) : “peak-rpm” (continuous from 4150 to 6600). {Régime maximal}

\(X^{13}\) : “city-mpg” (continuous from 17 to 45). {Consommation en ville}

\(X^{14}\) : “highway-mpg” (continuous from 22 to 50). {Consommation autoroute}

\(Y\) : “price” (continuous from 5118 to 25552). {Prix}
 
 

Analyse numérique de chacune des variables du jeu de données :
 

##      X^{1}           X^{2}            X^{3}           X^{4}     
##  Min.   : 65.0   Min.   : 86.60   Min.   :144.6   Min.   :63.4  
##  1st Qu.: 91.5   1st Qu.: 94.50   1st Qu.:163.9   1st Qu.:63.8  
##  Median :106.0   Median : 96.30   Median :171.7   Median :65.2  
##  Mean   :114.8   Mean   : 97.37   Mean   :170.1   Mean   :65.2  
##  3rd Qu.:134.0   3rd Qu.: 98.70   3rd Qu.:175.6   3rd Qu.:65.9  
##  Max.   :256.0   Max.   :110.00   Max.   :192.7   Max.   :71.4  
##      X^{5}           X^{6}          X^{7}           X^{8}      
##  Min.   :49.40   Min.   :1819   Min.   : 79.0   Min.   :2.910  
##  1st Qu.:52.00   1st Qu.:2019   1st Qu.: 97.0   1st Qu.:3.030  
##  Median :53.90   Median :2275   Median :108.0   Median :3.190  
##  Mean   :53.77   Mean   :2321   Mean   :110.3   Mean   :3.268  
##  3rd Qu.:55.50   3rd Qu.:2457   3rd Qu.:122.0   3rd Qu.:3.540  
##  Max.   :59.80   Max.   :3515   Max.   :183.0   Max.   :3.780  
##      X^{9}           X^{10}           X^{11}           X^{12}    
##  Min.   :2.360   Min.   : 7.000   Min.   : 52.00   Min.   :4150  
##  1st Qu.:3.110   1st Qu.: 8.700   1st Qu.: 69.00   1st Qu.:4800  
##  Median :3.290   Median : 9.000   Median : 84.00   Median :5200  
##  Mean   :3.239   Mean   : 9.987   Mean   : 87.64   Mean   :5142  
##  3rd Qu.:3.410   3rd Qu.: 9.400   3rd Qu.:102.00   3rd Qu.:5500  
##  Max.   :3.900   Max.   :23.000   Max.   :162.00   Max.   :6600  
##      X^{13}          X^{14}           Y        
##  Min.   :17.00   Min.   :22.0   Min.   : 5118  
##  1st Qu.:24.00   1st Qu.:30.0   1st Qu.: 7127  
##  Median :27.00   Median :33.0   Median : 8244  
##  Mean   :27.68   Mean   :33.3   Mean   : 9589  
##  3rd Qu.:31.00   3rd Qu.:37.0   3rd Qu.:10320  
##  Max.   :45.00   Max.   :50.0   Max.   :25552

 

Pour comprendre le fonctionnement d’une régression linéaire, nous effectuerons tout d’abord une régression linéaire simple, avant de procéder à la modélisation de notre régression linéaire multiple en rajoutant toutes les features disponibles du jeu de données, afin de pouvoir réaliser une prédiction satisfaisante sur le prix des voitures.


Régression linéaire simple

 

Soit \(Y\) la cible.

Soit \(X \in\) {\(X^{1}, X^{2}, X^{3}, X^{4}, X^{5}, X^{6}, X^{7}, X^{8}, X^{9}, X^{10}, X^{11}, X^{12}, X^{13}, X^{14}\)}

Ici \(X = X^{11}\) (on regarde si la puissance explique le prix d’une voiture)
 

Modèle théorique : (Régression linéaire simple)

\[Y_i = a.1 + b.X_i + u_i\]

\(u\) est l’erreur telle que :

\[ \left\{ \begin{aligned} &\mathbb E[u_i] = 0 \; \forall i \; (centrees)\\ & Var(u_i) = \sigma^2 \; (homoscedastiques)\\ & \mathbb E[u_i.u_j] = 0 \; \forall i \ne j \; (decorrelees)\\ \end{aligned} \right. \] et \(a\), \(b\), \(\sigma^2\) sont les paramètres réels du modèle.
 

Modèle estimé :

\[Y = \underbrace{\widehat{a}.1 + \widehat{b}.X}_{\widehat Y} + \widehat u\]

(\(\widehat u = Y - \widehat Y\) est donc calculable)
 

On a donc 3 paramètres à estimer : \[ \left\{ \begin{aligned} &\mathbb (a,b) \in \mathbb R^2\\ & \sigma^2 > 0\\ \end{aligned} \right. \]

\(u_i = Y_i - a - b.X_i\)
 

On utilise la méthode des moindres carrés pour trouver a et b.
 

\(S(a,b) = \sum_{i=1}^n u_i^2\)
 

\(S(a,b) = \sum_{i=1}^n (Y_i - a - b.X_i)^2\) à minimiser en (a,b)
 

\(\Leftrightarrow \;\;\;\;\) trouver \((\widehat{a}, \widehat{b})\) tq :
 

\(\frac {\partial S}{\partial a} (\widehat a, \widehat b) = 0\)
 

De plus, le point moyen est sur la droite des moindres carrés.
 

\(\Rightarrow\)

\[ \left\{ \begin{aligned} &\widehat a=Y-X.\widehat b\\ & \\ &\bar Y = \widehat a + \bar X.\widehat b\\ \end{aligned} \right. \]
 

\[ \Leftrightarrow \left\{ \begin{aligned} & \widehat a = Y - X.\widehat {b} \\ & \\ & \widehat {b} = \frac{\sum^n_{i=1} (X_i-\bar X)(Y_i-\bar Y)}{\sum_{i=1}^n (X_i - \bar X)^2}\\ \end{aligned} \right. \]
 

Sous R, tous les résultats dont nous aurons besoin s’obtiennent très simplement grâce aux fonctionnalités du logiciel.
 

Pour faire de la statistique inférentielle et avant de procéder aux tests, il faut introduire une notion de loi :

\(\Rightarrow\) on ajoute une hypothèse sur les erreurs : u vecteur gaussien (\(u \sim \mathcal N(0, \sigma^2)\))

\(\Rightarrow\) \(\widehat a, \; \widehat b\) et \(\widehat u\) doivent être gaussiens car combinaison linéaire des coordonnées de u.

 

## 
## Call:
## lm(formula = cars$Y ~ cars$`X^{11}`)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4770.2 -1227.8  -398.3   745.7 11436.6 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -1632.219    877.194  -1.861   0.0652 .  
## cars$`X^{11}`   128.029      9.676  13.231   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2517 on 124 degrees of freedom
## Multiple R-squared:  0.5854, Adjusted R-squared:  0.582 
## F-statistic: 175.1 on 1 and 124 DF,  p-value: < 2.2e-16

 

Graphiquement c’est plutôt clair : les variables \(Y\)(le prix) et \(X^{11}\)(la puissance) semblent être liées linéairement, et ce de manière positive : plus la puissance du moteur d’une voiture est grande, plus le prix semble élevé (bien que certaines observations semblent se distinguer des autres).

Tests nécessaires à la validation du modèle :

 

Test de Fisher : (La régression est-elle signficative ?)

\[ \left\{ \begin{aligned} & H_0 : la \; regression \; est \; non \; significative \Leftrightarrow b = 0 \\ & H_1 : la \; regression \; est \; significative \Leftrightarrow b \ne 0 \end{aligned} \right. \]

Indicateurs : on regarde \(\mathcal R^2\) (test du \(\mathcal R^2\)) / \(F\)-statistic / p-value

Une règle de décision :

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) La régression est significative.

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) La régression n’est pas significative.
 
 

Test de Student : (La variable est-elle significative ?)

\[ \left\{ \begin{aligned} & H_0 : la \; variable \; est \; non \; significative \Leftrightarrow b = 0 \\ & H_1 : la \; variable \; est \; significative \Leftrightarrow b \ne 0 \end{aligned} \right. \]

Indicateurs : on regarde \(\mathcal T\) / p-value

Une règle de décision :

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) La variable est significative.

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) La variable n’est pas significative.
 

En régression simple, il est inutile de procéder au test de Student si on a déjà réalisé un test de Fisher et inversement, dans la mesure où il n’y a qu’une seule feature.
 
 

Test de Shapiro : (Les résidus sont-ils gaussiens ?)

\[ \left\{ \begin{aligned} & H_0 : les \; residus \; sont \; gaussiens \\ & H_1 : les \; residus \; ne \; sont \; pas \; gaussiens \end{aligned} \right. \]

Indicateur : on regarde la p-value

Règle de décision :

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) Les résidus sont gaussiens.

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) Les résidus ne sont pas gaussiens.

Test de Fisher :

\(\mathcal R^2 = 0.5854\), F-statistic \(= 175.1\), p-value \(= 2.2e-16\)

Le test du \(\mathcal R^2\) nous révèle que la puissance explique à elle seule 59% de la variance du prix d’une voiture.

Le résultat du test de Fisher indique que la régression est significative : p-value \(<\alpha\), on peut donc rejeter l’hypothèse nulle, et être sûr à quasiment 100% (1-2.2e-16) que les deux variables sont liées linéairement.

 

Étude des résidus :

Les résidus sont relativement bien regroupés autour de 0 (peu de valeurs de \(Y\) mal expliquées par \(X^{11}\)), le lien linéaire explique plutôt bien la dépendance entre le prix et la puissance. De plus, la dispersion des résidus semble homogène eu égard aux variations de la puissance ; graphiquement, les résidus sont homoscédastiques (bien que quelques observations se distingue du reste, on décide de ne pas les retirer car leur influence sur le modèle reste négligeable dans l’absolu).

Comme il y a plus de 50 individus et que les résidus sont homoscédastiques, le test de Fisher est valide : il existe bel et bien un lien linéaire entre puissance et prix.

Test de Shapiro :

## 
##  Shapiro-Wilk normality test
## 
## data:  res11
## W = 0.8711, p-value = 4.492e-09

Le test de Shapiro ne peut pas totalement valider notre modèle car la règle de décision du test est de rejeter l’hypothèse que les résidus sont gaussiens si la p-value est inférieure au seuil \(\alpha\). Néanmoins, si on observe les graphiques des résiduss, “QQ-plot” et “Distance de Cook”, on se rend compte que les quelques observations se distinguant de la majorité faussent le résultat du test, et on peut considérer que les résidus sont issus d’observations distribuées normalement.

 


Passons maintenant au modèle de régression linéaire multiple (qui permettra une prévision plus précise); celui-ci prend cette fois en compte toutes les variables explicatives pour expliquer notre cible Y. Nous sélectionnerons le mieux possible les variables qui nous donnerons le meilleur modèle.

Modèle de régression linéaire multiple

 

Modèle théorique : (Régression linéaire multiple)

Idem qu’en régression simple mais utilisation du langage matriciel.

\[ Y_i = b_1.X_i^1 + b_2.X_i^2 + ... + b_{p}.X_i^{p} + u_i \\ \]

\[ \underbrace{Y}_{(n \times 1)} = \underbrace{X}_{(n\times p)}.\underbrace{b}_{(p \times 1)} + \underbrace{u}_{(n \times 1)} \\ \]

\[ \begin{pmatrix} Y_1 \\ \vdots \\ Y_n \end{pmatrix} = \begin{pmatrix} X^1_1 & \cdots & X_1^{p} \\ \vdots & \ddots & \vdots \\ X_1^{n} & \cdots & X_n^{p} \end{pmatrix} \times \begin{pmatrix} b_1 \\ \vdots \\ b_{p} \end{pmatrix} + \begin{pmatrix} u_1 \\ \vdots \\ u_{n} \end{pmatrix} \]

\(u\) est l’erreur telle que :

\[ \left\{ \begin{aligned} &\mathbb E[u] = 0_n \; (centrees)\\\\ & Var(u) = \begin{pmatrix} Var(u_1) & & Cov(u_i,u_j) \\ & \ddots \\ & & Var(u_n) \end{pmatrix} = \underbrace{\sigma^2}_{homoscedasticite} \times \underbrace{Id_n}_{decorrelation} \end{aligned} \right. \]

\(b \in \mathbb R^{p}\)

\(\sigma^2>0\)

\(u \sim \mathcal N(0_n, \sigma^2.Id_n)\)
 

Modèle estimé :

\[Y = \underbrace{\widehat{b}.X}_{\widehat Y} + \widehat u\]
 

On a : \(u = Y-X.b\)

\[ (u_1,...,u_n) \begin{pmatrix} u_1 \\ \vdots \\ u_{n} \end{pmatrix} = \sum u_i^2 = \mathstrut^tu.u \]

On pose \(S(b) = \sum u_i^2 = \mathstrut^tu_i.u_i = \mathstrut^t(Y-X.b).(Y-X.b)\)
 

\(S(b) = \mathstrut^tY.Y - 2.\mathstrut^tYX.b + \mathstrut^tb.\mathstrut^tXX.b\)
 

\(\widehat b = \min{S(b)}\) (Si définie positive)
 

\(\widehat b\) vérifie donc \(\mathstrut^tXX.\widehat b = \mathstrut^tXY\)
 

\(\widehat b = \underbrace{(\mathstrut^tXX)^{-1}}_{\mathstrut^tXX \; doit \; être \; inversible} \times \mathstrut^tXY\)
 

Tests nécessaires à la validation du modèle :

On retrouve les mêmes tests qu’en régression simple.

Test de Fisher : (La régression est-elle signficative ?)

\[ \left\{ \begin{aligned} &H_0 : la \; regression \; est \; non \; significative \Leftrightarrow b_i = 0 \; \forall i\in [1,p]\\ & H_1 : la \; regression \; est \; significative \Leftrightarrow \exists i\in [1,p] \; tq \; b_i \ne 0 \end{aligned} \right. \]

Indicateurs : on regarde \(\mathcal R^2\) (test du \(\mathcal R^2\)) / F-statistic et p-value (test de Fisher)

Une règle de décision :

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) La régression est significative.

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) La régression n’est pas significative.
 
 

Test de Student : (La variable est-elle significative ?)

\[ \left\{ \begin{aligned} &H_0 : la \; variable \; X^j \; est \; non \; significative \Leftrightarrow b_j = 0 \; \forall j\in [1,p]\\ & H_1 : la \; variable\; X^j \; est \; significative \Leftrightarrow \exists j\in [1,p] \; tq \; b_j \ne 0 \end{aligned} \right. \]

Indicateurs : on regarde \(\mathcal T\)-statistic / p-value

Une règle de décision :

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) La variable est significative.

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) La variable n’est pas significative.
 
 

Test de Shapiro : (Les résidus sont-ils gaussiens ?)

\[ \left\{ \begin{aligned} & H_0 : les \; residus \; sont \; gaussiens \\ & H_1 : les \; residus \; ne \; sont \; pas \; gaussiens \end{aligned} \right. \]

Indicateur : on regarde la p-value

Règle de décision :

Si p-value \(>\alpha\) \(\Rightarrow\) On ne rejette pas \(H_0\) / On rejette \(H_1\) \(\Rightarrow\) Les résidus sont gaussiens.

Si p-value \(<\alpha\) \(\Rightarrow\) On rejette \(H_0\) / On accepte \(H_1\) \(\Rightarrow\) Les résidus ne sont pas gaussiens.

Pour réaliser le modèle de régression linéaire multiple le plus juste possible, il est nécessaire de “sélectionner” les variables qui sont “indispensables”, et prêter attention aux observations susceptibles de “fausser” le modèle.

1ère régression :

## 
## Call:
## lm(formula = cars$Y ~ ., data = X)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2417.6  -716.9  -128.2   701.4  2587.6 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -2.879e+04  1.096e+04  -2.627 0.009833 ** 
## cars..X..1..   5.505e+00  4.135e+00   1.332 0.185726    
## cars..X..2..   9.124e+01  7.226e+01   1.263 0.209388    
## cars..X..3..   3.378e+00  2.746e+01   0.123 0.902323    
## cars..X..4..   5.180e+02  1.845e+02   2.808 0.005899 ** 
## cars..X..5..   6.807e+01  7.439e+01   0.915 0.362157    
## cars..X..6..   5.401e+00  1.255e+00   4.302 3.65e-05 ***
## cars..X..7..   5.254e+01  1.722e+01   3.052 0.002846 ** 
## cars..X..8..  -6.469e+03  1.046e+03  -6.185 1.06e-08 ***
## cars..X..9..  -3.389e+03  6.528e+02  -5.191 9.55e-07 ***
## cars..X..10..  8.887e+01  4.792e+01   1.855 0.066306 .  
## cars..X..11..  4.091e+01  1.174e+01   3.485 0.000705 ***
## cars..X..12..  2.354e-01  3.074e-01   0.766 0.445542    
## cars..X..13..  5.079e+01  8.698e+01   0.584 0.560422    
## cars..X..14.. -7.353e+01  7.184e+01  -1.023 0.308322    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1103 on 111 degrees of freedom
## Multiple R-squared:  0.9287, Adjusted R-squared:  0.9197 
## F-statistic: 103.3 on 14 and 111 DF,  p-value: < 2.2e-16

## 
##  Shapiro-Wilk normality test
## 
## data:  res
## W = 0.98558, p-value = 0.2035

press function :

## [1] 178807709

 

\(\mathcal R^2 = 0.9287\), ce qui est très élevé. De plus le test de Fisher indique une p-value \(< 2.2e-16 < 0.05 \; (= \alpha)\). On ne rejette pas \(H_0\) et la régression est donc significative.

Le test de Student nous révèle que les variables \(X^{1}, \; X^{2}, \; X^{3}, \; X^{5}, \; X^{10}, \; X^{12}, \; X^{13}\) et \(X^{14}\) ne sont pas significatives dans le modèle à 14 features, car leur p-value associée est supérieure au seuil \(\alpha\) fixé (on ne rejette pas \(H_0\) dans chacun des cas).
 

Le test de Shapiro indique une p-value supérieure au seuil \(\alpha\) fixé (0.2035 > 0.05). On ne rejette pas \(H_0\) et on conclue que les résidus sont gaussiens.


Notre premier modèle de régression linéaire multiple est satisfaisant mais peut être amélioré.
 

2ème régression :

Il faut maintenant réduire le plus possible la taille du modèle \(Y_i = b_1.X_i^1 + b_2.X_i^2 + ... + b_{14}.X_i^{14} + u_i\) car une bonne prédiction nécessite un modèle avec le moins de variables explicatives possible.

En plus du résultat du test de Student, nous utilisons la fonction leaps pour visualiser le meilleur modèle (avec les variables adéquates) selon les différentes tailles possibles.

Voici le tableau récapitulatif des différents modèles possibles (on utilise le Cp de Mallow ou le \(\mathcal R^2 \; ajust\)é comme critères de sélection) :
 

Nous obtenons le modèle : \(Y_i = b_{4}.X_i^{4} + b_{6}.X_i^{6} + b_{7}.X_i^{7} + b_{8}.X_i^{8} + b_{9}.X_i^{9} + b_{10}.X_i^{10} + b_{11}.X_i^{11} + u_i\)

## 
## Call:
## lm(formula = cars$Y ~ ., data = X_bis)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2406.1  -707.9  -140.4   578.0  3117.5 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -2.293e+04  9.173e+03  -2.500  0.01381 *  
## cars..X..4..   6.235e+02  1.403e+02   4.444 2.00e-05 ***
## cars..X..6..   6.990e+00  9.069e-01   7.708 4.44e-12 ***
## cars..X..7..   4.831e+01  1.630e+01   2.963  0.00368 ** 
## cars..X..8..  -6.954e+03  9.305e+02  -7.474 1.49e-11 ***
## cars..X..9..  -3.420e+03  6.177e+02  -5.537 1.90e-07 ***
## cars..X..10..  5.905e+01  3.634e+01   1.625  0.10686    
## cars..X..11..  4.027e+01  9.239e+00   4.359 2.81e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1103 on 118 degrees of freedom
## Multiple R-squared:  0.9243, Adjusted R-squared:  0.9198 
## F-statistic: 205.7 on 7 and 118 DF,  p-value: < 2.2e-16

 

## 
##  Shapiro-Wilk normality test
## 
## data:  res_bis
## W = 0.98342, p-value = 0.1266

Test Fisher : ok / Test Student : (cf. “limite du modèle”) / Test Shapiro : ok

En effectuant une 2ème régression multiple mais cette fois sans \(X^{10}\), on se rend compte que tous les tests sont satisfaits mais que :

\[ \left\{ \begin{aligned} & PRESS \; (avec \; X^{10}) = 166\;737\;332 \\ & PRESS \; (sans \; X^{10}) = 169\;139\;042 \end{aligned} \right. \]

Limite du modèle : En effectuant une régression avec notre nouveau modèle, on s’apperçoit que la variable \(X^{10}\) ne satisfait pas la règle de décision du test de Student, elle n’est plus significative. Pourtant, la fonction leaps et la somme des carrés de l’erreur de prédiction donnée par la fonction press nous dévoile qu’il faut choisir le modèle avec \(X^{10}\) compris.


On peut maintenant se servir de ce modèle soigneusement construit pour prédire le prix des voitures.

Construction de l’intervalle de confiance (théorie) :

On introduit \(X_0 = (X^{4}_0, \;X^{6}_0, \;X^{7}_0, \;X^{8}_0, \;X^{9}_0, \;X^{10}_0, \;X^{11}_0)\)

On voudrait \(\widehat {Y_0}\)

Modèle : \(\widehat {Y_0} = \widehat b.X_0 + \epsilon_0 = \widehat b_4.X^{4}_0 + \widehat b_6.X^{6}_0 + \widehat b_7.X^{7}_0 + \widehat b_8.X^{8}_0 + \widehat b_9.X^{9}_0 + \widehat b_{10}.X^{10}_0 + \widehat b_{11}.X^{11}_0 + \epsilon_0\)

avec \(\epsilon_0 = Y_0 - \widehat {Y_0}\), l’erreur de prédiction

\(Y_0 - \widehat {Y_0} = (b.X_0 + u_0) - \widehat b.X_0 = (b - \widehat b)X_0 + u_0\)

Loi de \(\epsilon_0\) :

\(\epsilon_0\) est combinaison linéaire du vecteur gaussien \(u\) \(\rightarrow \epsilon_0\) est gaussienne.

\(•\) \(\mathbb E[\epsilon_0] = \mathbb E[(b - \widehat b)X_0 + u_0] \underbrace{=}_{linéarité} X_0 \underbrace{\mathbb E[(b -\widehat b]}_{=0} + \underbrace{\mathbb E[u_0]}_{=0} = \boxed 0\)

\(•\) \(Var[\epsilon_0] = Var[(b - \widehat b)X_0 + u_0]\)

\(\underbrace{=}_{\perp} Var[(b - \widehat b)X_0] + Var[u_0]\)

\(= X_0.Var(b- \widehat b).\mathstrut^tX_0 + Var[u_0]\)

\(= X_0.\sigma ^2.(\mathstrut^tXX)^{-1}.\mathstrut^tX_0 + \sigma^2\)

\(=\boxed{\sigma^2(1 + X_0(\mathstrut^tXX)^{-1})\mathstrut^tX_0}\)
 

\(\epsilon_0 \sim \mathcal N(0,\;\sigma^2(1 + X_0(\mathstrut^tXX)^{-1})\mathstrut^tX_0)\)

On a alors un intervalle de confiance construit de la manière suivante :

\(\frac{Y_0 - \widehat {Y_0}}{\sqrt{\widehat{\sigma^2}(1 + X_0(\mathstrut^tXX)^{-1}) \mathstrut^tX_0}} \sim t_{n-p}\)

(p change selon la taille du modèle sélectionné, ici \(p=7\), \(n=126\) donc \(DF=119\)).

Soit \(q=qt(0.975,n-p)\)

\(IC = \left[ \widehat{Y_0} \pm q \sqrt{\widehat{\sigma^2}(1 + X_0(\mathstrut^tXX)^{-1})\mathstrut^tX_0} \; \right]\)

avec \(\widehat {\sigma^2} = \frac{SCR}{n-p}\)

Prédiction

Toute cette partie se passe sur le logicel R, où l’on code notre prédiction selon les critères que nous souhaitons.

# On supprime les variables (colonnes) inutiles
cars_new = cars[,-c(1,2,3,5,12,13,14)] 
# On sélectionne au hasard 96 observations du jeu de données pour apprendre d'elles et établir une prédiction de 30 autres
index = sample(1:126, 96) 
# Table contenant 30 observations sur nos 8 variables
carstest = cars_new[-index,] 
# Table contenant 96 observations sur nos 8 variables
carspredict = cars_new[index,] 
# Régresseurs de la table à 96 observations
carspredreg = data.frame(carspredict$`X^{4}`, carspredict$`X^{6}`, carspredict$`X^{7}`, carspredict$`X^{8}`, carspredict$`X^{9}`, carspredict$`X^{10}`, carspredict$`X^{11}`) 
# Régression entre Y (à 96 obs) et X (à 96 obs)
regpredict = lm(carspredict$Y ~., carspredreg) 

prediction = predict(regpredict, data.frame(carspredict..X..4.. = carstest$`X^{4}`, carspredict..X..6.. = carstest$`X^{6}`, carspredict..X..7.. = carstest$`X^{7}`, carspredict..X..8.. = carstest$`X^{8}`, carspredict..X..9.. = carstest$`X^{9}`, carspredict..X..10.. = carstest$`X^{10}`, carspredict..X..11.. = carstest$`X^{11}`), level = 0.95, interval = "prediction")

Voici un aperçu de la prédiction du prix (encadré par un intervalle de confiance de niveau 95%) de 30 voitures aux caractéristiques générées aléatoirement depuis la table :

##    prédiction       inf       sup
## 1   16179.162 13833.753 18524.571
## 2    6101.202  3878.919  8323.484
## 3    6716.834  4498.261  8935.407
## 4   10093.798  7802.895 12384.701
## 5    5831.673  3577.797  8085.550
## 6    6750.299  4519.746  8980.852
## 7    6232.654  4006.792  8458.516
## 8    6216.759  3999.636  8433.882
## 9    9887.640  7641.754 12133.526
## 10  10171.455  7928.238 12414.673
## 11   6661.433  4430.560  8892.306
## 12   6845.913  4619.028  9072.798
## 13  11176.871  8924.077 13429.666
## 14   9301.216  7074.448 11527.984
## 15  11411.019  9160.515 13661.523
## 16  11411.019  9160.515 13661.523
## 17   4963.080  2736.030  7190.129
## 18   5544.901  3329.679  7760.123
## 19   9139.186  6915.188 11363.185
## 20   8527.782  6268.163 10787.401
## 21   6560.735  4342.752  8778.719
## 22   9608.513  7349.866 11867.160
## 23   6466.313  4233.743  8698.883
## 24   7300.199  5087.239  9513.159
## 25   7591.110  5377.902  9804.317
## 26  12025.494  9731.164 14319.823
## 27  12273.832  9978.733 14568.932
## 28   8841.065  6624.750 11057.379
## 29   8862.351  6646.443 11078.259
## 30  10191.034  7968.113 12413.955

 

Stats relatives à notre prédiction :

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4963    6586    8684    8629   10152   16179

 

On vérifie la qualité de notre prédiction :
 

Notre prédiction semble bonne car le nuage de points est concentré autour de la droite \(y=x\) et ce en recommençant avec différents échantillons d’observations à chaque fois (on peut “run” le programme plusieurs fois et en changeant les paramètres pour générer le nombre de prédictions que l’on veut ainsi que la taille souhaitée de celles-ci).

Nous sommes désormais en mesure de connaitre (avec une bonne précision) quel doit être le prix d’une voiture en ayant des données quantitatives sur différentes variables qui la caractérise.