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)}}}\)
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.
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\]
où \(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).
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 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} \]
où \(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\)
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.
##
## 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é.
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.
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}\)
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.