ความแตกต่างระหว่าง glm และ lm ใน r
ภาษาการเขียนโปรแกรม R มีฟังก์ชันต่อไปนี้สำหรับการปรับโมเดลเชิงเส้นให้เหมาะสม:
1. lm – ใช้เพื่อปรับให้เข้ากับโมเดลเชิงเส้น
ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:
lm(สูตร ข้อมูล …)
ทอง:
- สูตร: สูตรโมเดลเชิงเส้น (เช่น y ~ x1 + x2)
- data: ชื่อของบล็อกข้อมูลที่มีข้อมูล
2. glm – ใช้เพื่อให้เหมาะกับโมเดลเชิงเส้นทั่วไป
ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:
glm(สูตร, ตระกูล=เกาส์เซียน, ข้อมูล, …)
ทอง:
- สูตร: สูตรโมเดลเชิงเส้น (เช่น y ~ x1 + x2)
- family: กลุ่มทางสถิติที่จะใช้เพื่อให้เหมาะกับโมเดล ค่าเริ่มต้นคือ Gaussian แต่ตัวเลือกอื่นๆ ได้แก่ Binomial, Gamma และ Poisson และอื่นๆ
- data: ชื่อของบล็อกข้อมูลที่มีข้อมูล
โปรดทราบว่าข้อแตกต่างเพียงอย่างเดียวระหว่างสองฟังก์ชันนี้คืออาร์กิวเมนต์ family ที่รวมอยู่ในฟังก์ชัน 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 < 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() ทุกประการ
โปรดทราบว่าเรายังสามารถใช้ฟังก์ชัน 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 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
นอกจากนี้เรายังสามารถใช้ฟังก์ชัน glm() เพื่อให้พอดีกับ โมเดลการถดถอยปัวซอง โดยระบุ family=poisson ดังนี้:
#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
วิธีใช้ฟังก์ชันทำนายด้วย glm ใน R