Comment calculer les coefficients de régression standardisés dans R



Généralement, lorsque nous effectuons une régression linéaire multiple , les coefficients de régression résultants dans la sortie du modèle ne sont pas standardisés , ce qui signifie qu’ils utilisent les données brutes pour trouver la droite la mieux ajustée.

model <- lm(price ~ age + sqfeet, data=df)

Cependant, il est possible de standardiser chaque variable prédictive et la variable de réponse (en soustrayant la valeur moyenne de chaque variable des valeurs d’origine, puis en la divisant par l’écart type des variables), puis d’effectuer une régression, ce qui aboutit à des coefficients de régression standardisés .

Le moyen le plus simple de calculer des coefficients de régression standardisés dans R consiste à utiliser la fonction scale() pour standardiser chaque variable du modèle :

model <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

L’exemple suivant montre comment calculer des coefficients de régression standardisés dans la pratique.

Exemple : Comment calculer les coefficients de régression standardisés dans R

Supposons que nous disposions de l’ensemble de données suivant contenant des informations sur l’âge, la superficie en pieds carrés et le prix de vente de 12 maisons :

#create data frame
df <- data.frame(age=c(4, 7, 10, 15, 16, 18, 24, 28, 30, 35, 40, 44),
                 sqfeet=c(2600, 2800, 1700, 1300, 1500, 1800,
                          1200, 2200, 1800, 1900, 2100, 1300),
                 price=c(280000, 340000, 195000, 180000, 150000, 200000,
                         180000, 240000, 200000, 180000, 260000, 140000))

#view data frame
df

   age sqfeet  price
1    4   2600 280000
2    7   2800 340000
3   10   1700 195000
4   15   1300 180000
5   16   1500 150000
6   18   1800 200000
7   24   1200 180000
8   28   2200 240000
9   30   1800 200000
10  35   1900 180000
11  40   2100 260000
12  44   1300 140000

Supposons que nous effectuions ensuite une régression linéaire multiple en utilisant l’âge et la superficie en pieds carrés comme variables prédictives et le prix comme variable de réponse :

#fit regression model
model <- lm(price ~ age + sqfeet, data=df)

#view model summary
summary(model)

Call:
lm(formula = price ~ age + sqfeet, data = df)

Residuals:
   Min     1Q Median     3Q    Max 
-32038 -10526  -6139  21641  34060 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34736.54   37184.32   0.934 0.374599    
age          -409.83     612.46  -0.669 0.520187    
sqfeet        100.87      15.75   6.405 0.000125 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 24690 on 9 degrees of freedom
Multiple R-squared:  0.8508,	Adjusted R-squared:  0.8176 
F-statistic: 25.65 on 2 and 9 DF,  p-value: 0.0001916

À partir des résultats du modèle, nous pouvons voir les coefficients de régression non standardisés :

  • Interception : 34736.54
  • Âge : -409,83
  • Pieds carrés : 100,87

À première vue, il semble que l’âge ait un effet beaucoup plus important sur le prix de l’immobilier puisque son coefficient dans le tableau de régression est de -409,833 , contre seulement 100,866 pour la variable prédictive superficie en pieds carrés.

Cependant, l’erreur type est beaucoup plus grande pour l’âge que pour la superficie en pieds carrés, c’est pourquoi la valeur p correspondante est en réalité grande pour l’âge (p = 0,520) et petite pour la superficie en pieds carrés (p = 0,000).

La raison des différences extrêmes dans les coefficients de régression est due aux différences extrêmes dans les échelles pour les deux variables :

  • Les valeurs pour l’âge vont de 4 à 44 ans.
  • Les valeurs de superficie en pieds carrés varient de 1 200 à 2 800.

Supposons que nous normalisions plutôt les données brutes et ajustions un nouveau modèle de régression :

#standardize each variable and fit regression model
model_std <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

#turn off scientific notation
options(scipen=999)

#view model summary
summary(model_std)

Call:
lm(formula = scale(price) ~ scale(age) + scale(sqfeet), data = df)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.5541 -0.1820 -0.1062  0.3743  0.5891 

Coefficients:
                            Estimate             Std. Error t value Pr(>|t|)
(Intercept)   -0.0000000000000002253  0.1232881457926768426   0.000 1.000000
scale(age)    -0.0924421263946849786  0.1381464029075653854  -0.669 0.520187
scale(sqfeet)  0.8848591938302141635  0.1381464029075653577   6.405 0.000125
                 
(Intercept)      
scale(age)       
scale(sqfeet) ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4271 on 9 degrees of freedom
Multiple R-squared:  0.8508,	Adjusted R-squared:  0.8176 
F-statistic: 25.65 on 2 and 9 DF,  p-value: 0.0001916

Les coefficients de régression de ce tableau sont standardisés , ce qui signifie qu’ils ont utilisé des données standardisées pour s’adapter à ce modèle de régression.

La façon d’interpréter les coefficients du tableau est la suivante :

  • Une augmentation de l’ âge d’un écart type est associée à une diminution de 0,092 écart type du prix de l’immobilier, en supposant que la superficie en pieds carrés reste constante.
  • Une augmentation d’un écart type de la superficie en pieds carrés est associée à une augmentation de 0,885 écart type du prix de l’immobilier, en supposant que l’âge reste constant.

Nous pouvons désormais constater que la superficie en pieds carrés a un effet beaucoup plus important sur le prix de l’immobilier que l’âge.

Remarque : Les valeurs p pour chaque variable prédictive sont exactement les mêmes que celles du modèle de régression précédent.

Au moment de décider du modèle final à utiliser, nous savons désormais que la superficie en pieds carrés est beaucoup plus importante pour prédire le prix d’une maison que son âge .

Ressources additionnelles

Les didacticiels suivants fournissent des informations supplémentaires sur les modèles de régression :

Comment lire et interpréter un tableau de régression
Comment interpréter les coefficients de régression
Comment interpréter les valeurs P dans la régression linéaire

Ajouter un commentaire

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