R에서 glm과 lm의 차이점
R 프로그래밍 언어는 선형 모델 피팅을 위해 다음 기능을 제공합니다.
1. lm – 선형 모델을 맞추는 데 사용됩니다.
이 함수는 다음 구문을 사용합니다.
lm(공식, 데이터, …)
금:
- 공식: 선형 모델 공식(예: y ~ x1 + x2)
- 데이터: 데이터가 포함된 데이터 블록의 이름
2. glm – 일반화 선형 모델을 피팅하는 데 사용됩니다.
이 함수는 다음 구문을 사용합니다.
glm(공식, family=가우스, 데이터, …)
금:
- 공식: 선형 모델 공식(예: y ~ x1 + x2)
- family: 모델을 적합시키는 데 사용할 통계적 패밀리입니다. 기본값은 가우스이지만 다른 옵션으로는 이항, 감마, 포아송 등이 있습니다.
- 데이터: 데이터가 포함된 데이터 블록의 이름
이 두 함수의 유일한 차이점은 glm() 함수에 포함된 family 인수입니다.
선형 회귀 모델을 맞추기 위해 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 < 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
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 < 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
계수 추정치와 계수 추정치의 표준 오차는 lm() 함수에서 생성된 것과 정확히 동일합니다.
다음과 같이 family=binomial을 지정하여 glm() 함수를 사용하여 로지스틱 회귀 모델을 맞출 수도 있습니다.
#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
또한 다음과 같이 family=poisson을 지정하여 glm() 함수를 사용하여 포아송 회귀 모델 에 맞출 수 있습니다.
#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
추가 리소스
R에서 단순 선형 회귀를 수행하는 방법
R에서 다중 선형 회귀를 수행하는 방법
R에서 glm과 함께 예측 함수를 사용하는 방법