Разница между glm и lm в R


Язык программирования R предлагает следующие функции для подбора линейных моделей:

1. lm — используется для линейных моделей.

Эта функция использует следующий синтаксис:

lm(формула, данные, …)

куда:

  • формула: формула для линейной модели (например, y ~ x1 + x2)
  • data: имя фрейма данных, содержащего данные

2. glm — используется для подбора обобщенных линейных моделей.

Эта функция использует следующий синтаксис:

glm(формула, семейство=гаусс, данные, …)

куда:

  • формула: формула для линейной модели (например, y ~ x1 + x2)
  • семья: Статистическая семья, используемая для соответствия модели. По умолчанию используется гауссовская диаграмма, но другие параметры включают, среди прочего, биномиальную, гамму и пуассоновскую диаграмму.
  • data: имя фрейма данных, содержащего данные

Обратите внимание, что единственная разница между этими двумя функциями заключается в аргументе семейства , включенном в функцию glm() .

Если вы используете lm() или glm() для подбора модели линейной регрессии, они дадут точно такие же результаты .

Однако функцию glm() также можно использовать для соответствия более сложным моделям, таким как:

В следующих примерах показано, как использовать функции lm() и glm() на практике.

Пример использования функции lm()

В следующем коде показано, как подобрать модель линейной регрессии с помощью функции 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

Примеры использования функции glm()

В следующем коде показано, как подобрать точно такую же модель линейной регрессии с помощью функции 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

Обратите внимание, что оценки коэффициентов и стандартные ошибки оценок коэффициентов точно такие же, как и при использовании функции lm().

Обратите внимание, что мы также можем использовать функцию glm() для подбора модели логистической регрессии , указав family=binomial следующим образом:

#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

Мы также можем использовать функцию glm() для подбора модели регрессии Пуассона , указав family=poisson следующим образом:

#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

Дополнительные ресурсы

Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как использовать функцию прогнозирования с glm в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.