La différence entre glm et lm dans R
Le langage de programmation R offre les fonctions suivantes pour ajuster des modèles linéaires :
1. lm – Utilisé pour s’adapter aux modèles linéaires
Cette fonction utilise la syntaxe suivante :
lm(formule, données, …)
où:
- formule : La formule du modèle linéaire (par exemple y ~ x1 + x2)
- data : Le nom du bloc de données qui contient les données
2. glm – Utilisé pour adapter des modèles linéaires généralisés
Cette fonction utilise la syntaxe suivante :
glm(formule, famille=gaussienne, données, …)
où:
- formule : La formule du modèle linéaire (par exemple y ~ x1 + x2)
- family : la famille statistique à utiliser pour ajuster le modèle. La valeur par défaut est gaussienne, mais d’autres options incluent binomial, Gamma et poisson, entre autres.
- data : Le nom du bloc de données qui contient les données
Notez que la seule différence entre ces deux fonctions est l’argument famille inclus dans la fonction glm() .
Si vous utilisez lm() ou glm() pour ajuster un modèle de régression linéaire, ils produiront exactement les mêmes résultats .
Cependant, la fonction glm() peut également être utilisée pour adapter des modèles plus complexes tels que :
- Régression logistique (famille=binôme)
- Régression de Poisson (famille=poisson)
Les exemples suivants montrent comment utiliser les fonctions lm() et glm() dans la pratique.
Exemple d’utilisation de la fonction lm()
Le code suivant montre comment ajuster un modèle de régression linéaire à l’aide de la fonction lm() :
#fit multiple linear regression model model <- lm(mpg ~ disp + hp, data=mtcars) #view model summary summary(model) Call: lm(formula = mpg ~ disp + hp, data = mtcars) Residuals: Min 1Q Median 3Q Max -4.7945 -2.3036 -0.8246 1.8582 6.9363 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 30.735904 1.331566 23.083 < 2e-16 *** disp -0.030346 0.007405 -4.098 0.000306 *** hp -0.024840 0.013385 -1.856 0.073679 . --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.127 on 29 degrees of freedom Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309 F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09
Exemples d’utilisation de la fonction glm()
Le code suivant montre comment ajuster exactement le même modèle de régression linéaire à l’aide de la fonction glm() :
#fit multiple linear regression model model <- glm(mpg ~ disp + hp, data=mtcars) #view model summary summary(model) Call: glm(formula = mpg ~ disp + hp, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -4.7945 -2.3036 -0.8246 1.8582 6.9363 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 30.735904 1.331566 23.083 < 2e-16 *** disp -0.030346 0.007405 -4.098 0.000306 *** hp -0.024840 0.013385 -1.856 0.073679 . --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for gaussian family taken to be 9.775636) Null deviance: 1126.05 on 31 degrees of freedom Residual deviance: 283.49 on 29 degrees of freedom AIC: 168.62 Number of Fisher Scoring iterations: 2
Notez que les estimations des coefficients et les erreurs types des estimations des coefficients sont exactement les mêmes que celles produites par la fonction lm().
Notez que nous pouvons également utiliser la fonction glm() pour ajuster un modèle de régression logistique en spécifiant family=binomial comme suit :
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 disp -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43.230 on 31 degrees of freedom Residual deviance: 16.713 on 29 degrees of freedom AIC: 22.713 Number of Fisher Scoring iterations: 8
Nous pouvons également utiliser la fonction glm() pour ajuster un modèle de régression de Poisson en spécifiant family=poisson comme suit :
#fit Poisson regression model model <- glm(am ~ disp + hp, data=mtcars, family=poisson) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = poisson, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.1266 -0.4629 -0.2453 0.1797 1.5428 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.214255 0.593463 0.361 0.71808 disp -0.018915 0.007072 -2.674 0.00749 ** hp 0.016522 0.007163 2.307 0.02107 * --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for poisson family taken to be 1) Null deviance: 23.420 on 31 degrees of freedom Residual deviance: 10.526 on 29 degrees of freedom AIC: 42.526 Number of Fisher Scoring iterations: 6
Ressources additionnelles
Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Comment utiliser la fonction de prédiction avec glm dans R