วิธีใช้ฟังก์ชันทำนายด้วย glm ใน r (พร้อมตัวอย่าง)


สามารถใช้ฟังก์ชัน glm() ใน R เพื่อให้เหมาะกับโมเดลเชิงเส้นทั่วไป คุณลักษณะนี้มีประโยชน์อย่างยิ่งสำหรับการปรับ แบบจำลองการถดถอยโลจิสติก แบบจำลองการถดถอยปัวซอง และแบบจำลองที่ซับซ้อนอื่นๆ

เมื่อเราติดตั้งโมเดลแล้ว เราสามารถใช้ฟังก์ชัน คาดการณ์() เพื่อทำนายค่าการตอบสนองของการสังเกตใหม่ได้

ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:

ทำนาย (วัตถุ, ข้อมูลใหม่, ประเภท = “การตอบสนอง”)

ทอง:

  • object: ชื่อของการปรับโมเดลโดยใช้ฟังก์ชัน glm()
  • newdata: ชื่อของกรอบข้อมูลใหม่ที่จะทำการคาดการณ์
  • type: ประเภทของการคาดการณ์ที่จะทำ

ตัวอย่างต่อไปนี้แสดงวิธีปรับโมเดลเชิงเส้นทั่วไปใน R ให้เหมาะสม และวิธีการใช้โมเดลเพื่อทำนายค่าตอบสนองของการสังเกตแบบใหม่ที่ไม่เคยเห็นมาก่อน

ตัวอย่าง: การใช้ฟังก์ชันพยากรณ์ด้วย glm ใน R

สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูล R ในตัวที่เรียกว่า mtcars :

 #view first six rows of mtcars data frame
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

เราจะปรับโมเดลการถดถอยโลจิสติกต่อไปนี้ให้เหมาะสม ซึ่งเราใช้ตัวแปร disp และ hp เพื่อทำนายตัวแปรการตอบสนอง am (ประเภทเกียร์ของรถยนต์: 0 = อัตโนมัติ, 1 = แมนนวล)

 #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

จากนั้นเราสามารถใช้แบบจำลองนี้ทำนายความน่าจะเป็นที่รถยนต์ใหม่จะมีเกียร์อัตโนมัติ (am=0) หรือเกียร์ธรรมดา (am=1) โดยใช้รหัสต่อไปนี้

 #define new observation
newdata = data. frame (disp=200, hp=100)

#use model to predict value of am
predict(model, newdata, type=" response ")

         1 
0.00422564

แบบจำลองทำนายความน่าจะเป็นที่รถใหม่จะมีเกียร์ธรรมดา (am=1) เท่ากับ 0.004 ซึ่งหมายความว่ามีความเป็นไปได้มากที่รถคันใหม่นี้จะมาพร้อมกับระบบเกียร์อัตโนมัติ

โปรดทราบว่าเราสามารถคาดการณ์ได้หลายรายการพร้อมกันหากเรามีฐานข้อมูลที่มีรถยนต์ใหม่หลายคัน

ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีใช้โมเดลที่ติดตั้งเพื่อคาดการณ์ความน่าจะเป็นของเกียร์ธรรมดาสำหรับรถยนต์ใหม่ 3 คัน:

 #define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
                     hp=c(100, 90, 108))

#view data frame
newdata

  hp disp
1,200 100
2 180 90
3,160,108

#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")

          1 2 3 
0.004225640 0.008361069 0.335916069 

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ความน่าจะเป็นที่รถ 1 มีเกียร์ธรรมดาคือ 0.004
  • ความน่าจะเป็นที่รถ 2 มีเกียร์ธรรมดาคือ 0.008
  • ความน่าจะเป็นที่รถ 3 มีเกียร์ธรรมดาคือ 0.336

ความคิดเห็น

ชื่อคอลัมน์ในกรอบข้อมูลใหม่จะต้องตรงกับชื่อคอลัมน์ในกรอบข้อมูลที่ใช้ในการสร้างแบบจำลองทุกประการ

โปรดทราบว่าในตัวอย่างก่อนหน้านี้ กรอบข้อมูลที่เราใช้ในการสร้างแบบจำลองมีชื่อคอลัมน์ต่อไปนี้สำหรับตัวแปรทำนายของเรา:

  • แสดง
  • เอชพี

ดังนั้นเมื่อเราสร้าง data frame ใหม่ที่เรียกว่า newdata เราจึงต้องตั้งชื่อคอลัมน์ด้วย:

  • แสดง
  • เอชพี

หากชื่อคอลัมน์ไม่ตรงกัน คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

เกิดข้อผิดพลาดในการประเมิน (predvars, data, env)

โปรดคำนึงถึงสิ่งนี้เมื่อใช้ฟังก์ชัน ทำนาย ()

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีดำเนินการถดถอยพหุนามใน R
วิธีสร้างช่วงเวลาการทำนายใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *