Der unterschied zwischen glm und lm in r


Die Programmiersprache R stellt die folgenden Funktionen zum Anpassen linearer Modelle bereit:

1. lm – Wird zur Anpassung linearer Modelle verwendet

Diese Funktion verwendet die folgende Syntax:

lm(Formel, Daten, …)

Gold:

  • Formel: Die lineare Modellformel (z. B. y ~ x1 + x2)
  • Daten: Der Name des Datenblocks, der die Daten enthält

2. glm – Wird zur Anpassung verallgemeinerter linearer Modelle verwendet

Diese Funktion verwendet die folgende Syntax:

glm(Formel, Familie=Gaußsche Funktion, Daten, …)

Gold:

  • Formel: Die lineare Modellformel (z. B. y ~ x1 + x2)
  • Familie: Die statistische Familie, die zur Anpassung des Modells verwendet werden soll. Der Standardwert ist Gauß, aber andere Optionen umfassen unter anderem Binomial, Gamma und Poisson.
  • Daten: Der Name des Datenblocks, der die Daten enthält

Beachten Sie, dass der einzige Unterschied zwischen diesen beiden Funktionen das in der glm() -Funktion enthaltene Familienargument ist.

Wenn Sie lm() oder glm() verwenden, um ein lineares Regressionsmodell anzupassen, liefern sie genau die gleichen Ergebnisse .

Die glm()-Funktion kann jedoch auch verwendet werden, um komplexere Modelle anzupassen, wie zum Beispiel:

Die folgenden Beispiele zeigen, wie Sie die Funktionen lm() und glm() in der Praxis nutzen.

Beispiel für die Verwendung der Funktion lm()

Der folgende Code zeigt, wie man ein lineares Regressionsmodell mit der Funktion lm() anpasst:

 #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

Beispiele für die Verwendung der glm()-Funktion

Der folgende Code zeigt, wie man mit der glm()-Funktion genau dasselbe lineare Regressionsmodell anpasst:

 #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

Beachten Sie, dass die Koeffizientenschätzungen und die Standardfehler der Koeffizientenschätzungen genau mit denen übereinstimmen, die von der Funktion lm() erzeugt werden.

Beachten Sie, dass wir die glm()-Funktion auch verwenden können, um ein logistisches Regressionsmodell anzupassen, indem wir „family=binomial“ wie folgt angeben:

 #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

Wir können auch die Funktion glm() verwenden, um ein Poisson-Regressionsmodell anzupassen, indem wir „family=poisson“ wie folgt angeben:

 #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

Zusätzliche Ressourcen

So führen Sie eine einfache lineare Regression in R durch
So führen Sie eine multiple lineare Regression in R durch
So verwenden Sie die Vorhersagefunktion mit glm in R

Einen Kommentar hinzufügen

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