Comment effectuer une régression linéaire multiple dans R



Ce guide présente un exemple de la manière d’effectuer une régression linéaire multiple dans R, notamment :

  • Examiner les données avant d’ajuster le modèle
  • Ajustement du modèle
  • Vérification des hypothèses du modèle
  • Interprétation de la sortie du modèle
  • Évaluation de la qualité de l’ajustement du modèle
  • Utiliser le modèle pour faire des prédictions

Allons-y !

Installation

Pour cet exemple, nous utiliserons l’ensemble de données R intégré mtcars , qui contient des informations sur divers attributs de 32 voitures différentes :

#view first six lines of mtcars
head(mtcars)

#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Dans cet exemple, nous allons construire un modèle de régression linéaire multiple qui utilise mpg comme variable de réponse et disp , hp et drat comme variables prédictives.

#create new data frame that contains only the variables we would like to use to
data <- mtcars[ , c("mpg", "disp", "hp", "drat")]

#view first six rows of new data frame
head(data)

#                   mpg disp  hp drat
#Mazda RX4         21.0  160 110 3.90
#Mazda RX4 Wag     21.0  160 110 3.90
#Datsun 710        22.8  108  93 3.85
#Hornet 4 Drive    21.4  258 110 3.08
#Hornet Sportabout 18.7  360 175 3.15
#Valiant           18.1  225 105 2.76

Examen des données

Avant d’ajuster le modèle, nous pouvons examiner les données pour mieux les comprendre et également évaluer visuellement si la régression linéaire multiple pourrait ou non être un bon modèle pour s’adapter à ces données.

En particulier, nous devons vérifier si les variables prédictives ont une association linéaire avec la variable de réponse, ce qui indiquerait qu’un modèle de régression linéaire multiple peut convenir.

Pour ce faire, nous pouvons utiliser la fonction pairs() pour créer un nuage de points de chaque paire de variables possible :

pairs(data, pch = 18, col = "steelblue")

De ce graphique de paires, nous pouvons voir ce qui suit :

  • mpg et disp semblent avoir une forte corrélation linéaire négative
  • mpg et hp semblent avoir une forte corrélation linéaire positive
  • mpg et drat semblent avoir une modeste corrélation linéaire négative

Notez que nous pourrions également utiliser la fonction ggpairs() de la bibliothèque GGally pour créer un tracé similaire contenant les coefficients de corrélation linéaire réels pour chaque paire de variables :

#install and load the GGally library
install.packages("GGally")
library(GGally)

#generate the pairs plot
ggpairs(data)

Chacune des variables prédictives semble avoir une corrélation linéaire notable avec la variable de réponse mpg , nous allons donc procéder à l’ajustement du modèle de régression linéaire aux données.

Ajustement du modèle

La syntaxe de base pour ajuster un modèle de régression linéaire multiple dans R est la suivante :

lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)

En utilisant nos données, nous pouvons ajuster le modèle en utilisant le code suivant :

model <- lm(mpg ~ disp + hp + drat, data = data)

Vérification des hypothèses du modèle

Avant de procéder à la vérification des résultats du modèle, nous devons d’abord vérifier que les hypothèses du modèle sont respectées. À savoir, nous devons vérifier les éléments suivants :

1. La distribution des résidus du modèle doit être approximativement normale.

Nous pouvons vérifier si cette hypothèse est remplie en créant un simple histogramme de résidus :

hist(residuals(model), col = "steelblue")

Bien que la distribution soit légèrement asymétrique à droite , elle n’est pas suffisamment anormale pour susciter des inquiétudes majeures.

2. La variance des résidus doit être cohérente pour toutes les observations.

Cette condition préférée est connue sous le nom d’homoscédasticité. La violation de cette hypothèse est connue sous le nom d’ hétéroscédasticité .

Pour vérifier si cette hypothèse est remplie, nous pouvons créer un graphique valeur ajustée/résiduelle :

#create fitted value vs residual plot
plot(fitted(model), residuals(model))

#add horizontal line at 0
abline(h = 0, lty = 2)

Idéalement, nous aimerions que les résidus soient également dispersés à chaque valeur ajustée. Nous pouvons voir sur le graphique que la dispersion a tendance à devenir un peu plus grande pour des valeurs ajustées plus grandes, mais cette tendance n’est pas suffisamment extrême pour susciter trop d’inquiétudes.

Interprétation de la sortie du modèle

Une fois que nous avons vérifié que les hypothèses du modèle sont suffisamment respectées, nous pouvons examiner le résultat du modèle à l’aide de la fonction summary() :

summary(model)

#Call:
#lm(formula = mpg ~ disp + hp + drat, data = data)
#
#Residuals:
#    Min      1Q  Median      3Q     Max 
#-5.1225 -1.8454 -0.4456  1.1342  6.4958 
#
#Coefficients:
#             Estimate Std. Error t value Pr(>|t|)   
#(Intercept) 19.344293   6.370882   3.036  0.00513 **
#disp        -0.019232   0.009371  -2.052  0.04960 * 
#hp          -0.031229   0.013345  -2.340  0.02663 * 
#drat         2.714975   1.487366   1.825  0.07863 . 
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.008 on 28 degrees of freedom
#Multiple R-squared:  0.775,	Adjusted R-squared:  0.7509 
#F-statistic: 32.15 on 3 and 28 DF,  p-value: 3.28e-09

À partir du résultat, nous pouvons voir ce qui suit :

  • La statistique F globale du modèle est de 32,15 et la valeur p correspondante est de 3,28e-09 . Cela indique que le modèle global est statistiquement significatif. En d’autres termes, le modèle de régression dans son ensemble est utile.
  • disp est statistiquement significatif au niveau de signification de 0,10. En particulier, le coefficient issu des résultats du modèle indique qu’une augmentation d’une unité du disp est associée à une diminution de -0,019 unité, en moyenne, en mpg , en supposant que la puissance et la consommation d’essence restent constantes.
  • hp est statistiquement significatif au niveau de signification de 0,10. En particulier, le coefficient issu des résultats du modèle indique qu’une augmentation d’une unité de puissance en chevaux est associée à une diminution de -0,031 unité, en moyenne, en mpg , en supposant que disp et drat restent constants.
  • drat est statistiquement significatif au niveau de signification de 0,10. En particulier, le coefficient issu des résultats du modèle indique qu’une augmentation d’une unité de consommation d’essence est associée à une augmentation moyenne de 2,715 unités de mpg , en supposant que le débit et la puissance en chevaux restent constants.

Évaluation de la qualité de l’ajustement du modèle

Pour évaluer dans quelle mesure le modèle de régression s’adapte aux données, nous pouvons examiner quelques mesures différentes :

1. Plusieurs R-carrés

Cela mesure la force de la relation linéaire entre les variables prédictives et la variable de réponse. Un multiple R au carré de 1 indique une relation linéaire parfaite tandis qu’un multiple R au carré de 0 n’indique aucune relation linéaire.

Multiple R est également la racine carrée de R au carré, qui est la proportion de la variance de la variable de réponse qui peut être expliquée par les variables prédictives. Dans cet exemple, le multiple R au carré est de 0,775 . Ainsi, le R au carré est 0,775 2 = 0,601 . Cela indique que 60,1 % de la variance en mpg peut être expliquée par les prédicteurs du modèle.

Connexes : Qu’est-ce qu’une bonne valeur R au carré ?

2. Erreur type résiduelle

Cela mesure la distance moyenne entre les valeurs observées et la ligne de régression. Dans cet exemple, les valeurs observées s’éloignent en moyenne de 3,008 unités de la droite de régression .

En rapport:   Comprendre l’erreur type de la régression

Utiliser le modèle pour faire des prédictions

D’après les résultats du modèle, nous savons que l’équation de régression linéaire multiple ajustée est la suivante :

chapeau mpg = -19,343 – 0,019*disp – 0,031*hp + 2,715*drat

Nous pouvons utiliser cette équation pour faire des prédictions sur ce que seront les mpg pour de nouvelles observations . Par exemple, nous pouvons trouver la valeur prédite de mpg pour une voiture qui possède les attributs suivants :

  • affichage = 220
  • ch = 150
  • drat = 3
#define the coefficients from the model output
intercept <- coef(summary(model))["(Intercept)", "Estimate"]
disp <- coef(summary(model))["disp", "Estimate"]
hp <- coef(summary(model))["hp", "Estimate"]
drat <- coef(summary(model))["drat", "Estimate"]

#use the model coefficients to predict the value for mpg
intercept + disp*220 + hp*150 + drat*3

#[1] 18.57373

Pour une voiture avec disp = 220, hp = 150 et drat = 3, le modèle prédit que la voiture aurait une consommation de 18,57373 mpg .

Vous pouvez trouver le code R complet utilisé dans ce tutoriel ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment adapter d’autres types de modèles de régression dans R :

Comment effectuer une régression quadratique dans R
Comment effectuer une régression polynomiale dans R
Comment effectuer une régression exponentielle dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *