Het verschil tussen glm en lm in r


De programmeertaal R biedt de volgende functies voor het aanpassen van lineaire modellen:

1. lm – Wordt gebruikt voor lineaire modellen

Deze functie gebruikt de volgende syntaxis:

lm(formule, gegevens, …)

Goud:

  • formule: De lineaire modelformule (bijv. y ~ x1 + x2)
  • data: de naam van het datablok dat de gegevens bevat

2. glm – Wordt gebruikt om gegeneraliseerde lineaire modellen aan te passen

Deze functie gebruikt de volgende syntaxis:

glm(formule, familie=Gaussiaans, data, …)

Goud:

  • formule: De lineaire modelformule (bijv. y ~ x1 + x2)
  • familie: de statistische familie die moet worden gebruikt om in het model te passen. De standaardinstelling is Gaussiaans, maar andere opties zijn onder meer Binomial, Gamma en Poisson.
  • data: de naam van het datablok dat de gegevens bevat

Merk op dat het enige verschil tussen deze twee functies het familieargument is dat is opgenomen in de functie glm() .

Als u lm() of glm() gebruikt om een lineair regressiemodel aan te passen, zullen deze exact dezelfde resultaten opleveren .

De functie glm() kan echter ook worden gebruikt om in complexere modellen te passen, zoals:

De volgende voorbeelden laten zien hoe u de functies lm() en glm() in de praktijk kunt gebruiken.

Voorbeeld van het gebruik van de functie lm().

De volgende code laat zien hoe u een lineair regressiemodel kunt aanpassen met behulp van de functie 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 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. 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

Voorbeelden van het gebruik van de glm()-functie

De volgende code laat zien hoe u exact hetzelfde lineaire regressiemodel kunt aanpassen met behulp van de glm()-functie:

 #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 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. 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

Merk op dat de coëfficiëntschattingen en de standaardfouten van de coëfficiëntschattingen exact dezelfde zijn als die geproduceerd door de functie lm().

Merk op dat we de functie glm() ook kunnen gebruiken om een logistisch regressiemodel aan te passen door family=binomial als volgt op te geven:

 #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  
available -0.09518 0.04800 -1.983 0.0474 *
hp 0.12170 0.06777 1.796 0.0725 .
---
Significant. 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

We kunnen ook de functie glm() gebruiken om een Poisson-regressiemodel aan te passen door family=poisson als volgt op te geven:

 #fit Poisson regression model
model <- glm(am ~ disp + hp, data=mtcars, family=fish)

#view model summary
summary(model)

Call:
glm(formula = am ~ disp + hp, family = fish, 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   
available -0.018915 0.007072 -2.674 0.00749 **
hp 0.016522 0.007163 2.307 0.02107 * 
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for fish 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

Aanvullende bronnen

Hoe eenvoudige lineaire regressie uit te voeren in R
Hoe meervoudige lineaire regressie uit te voeren in R
Hoe de voorspellingsfunctie met glm in R te gebruiken

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert