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 :

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

Ajouter un commentaire

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