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