วิธีใช้ฟังก์ชัน predict() กับ lm() ใน r
สามารถใช้ฟังก์ชัน lm() ใน R เพื่อให้พอดีกับโมเดลการถดถอยเชิงเส้น
เมื่อเราติดตั้งแบบจำลองแล้ว เราสามารถใช้ฟังก์ชัน คาดการณ์() เพื่อทำนายค่าการตอบสนองของ การสังเกต ใหม่
ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:
ทำนาย (วัตถุ, ข้อมูลใหม่, ประเภท = “การตอบสนอง”)
ทอง:
- object: ชื่อของการปรับโมเดลโดยใช้ฟังก์ชัน glm()
- newdata: ชื่อของกรอบข้อมูลใหม่ที่จะทำการคาดการณ์
- type: ประเภทของการคาดการณ์ที่จะทำ
ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชัน lm() เพื่อให้พอดีกับโมเดลการถดถอยเชิงเส้นใน R และจากนั้นจะใช้ฟังก์ชัน Predict() เพื่อทำนายค่าตอบสนองของการสังเกตแบบใหม่ที่โมเดลไม่เคยเห็นมาก่อน
ตัวอย่าง: การใช้ฟังก์ชัน Predict() กับ lm() ใน R
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
#create data frame df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40), fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1), points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30)) #view data frame df minutes fouls points 1 5 5 6 2 10 5 8 3 13 3 8 4 14 4 7 5 20 2 14 6 22 1 10 7 26 3 22 8 34 2 24 9 38 1 28 10 40 1 30
สมมติว่าเราต้องการใช้ โมเดลการถดถอยเชิงเส้นพหุคูณ ต่อไปนี้โดยใช้จำนวนนาทีที่เล่นและฟาล์วรวมเพื่อทำนายจำนวนคะแนนที่ผู้เล่นแต่ละคนทำได้:
คะแนน = β 0 + β 1 (นาที) + β 2 (ฟาวล์)
เราสามารถใช้ฟังก์ชัน lm() เพื่อปรับเปลี่ยนโมเดลนี้ได้:
#fit multiple linear regression model fit <- lm(points ~ minutes + fouls, data=df) #view summary of model summary(fit) Call: lm(formula = points ~ minutes + fouls, data = df) Residuals: Min 1Q Median 3Q Max -3.5241 -1.4782 0.5918 1.6073 2.0889 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.8949 4.5375 -2.621 0.0343 * minutes 0.9774 0.1086 9.000 4.26e-05 *** fouls 2.1838 0.8398 2.600 0.0354 * --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.148 on 7 degrees of freedom Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05
การใช้ค่าสัมประสิทธิ์จากผลลัพธ์ของแบบจำลอง เราสามารถเขียนสมการถดถอยที่ติดตั้งได้:
คะแนน = -11.8949 + 0.9774 (นาที) + 2.1838 (ฟาวล์)
จากนั้นเราสามารถใช้ฟังก์ชัน คาดการณ์() เพื่อคาดเดาว่าผู้เล่นที่เล่นเป็นเวลา 15 นาทีและกระทำฟาล์วทั้งหมด 3 ครั้งจะได้คะแนนเท่าใด:
#define new observation
newdata = data. frame (minutes=15, fouls=3)
#use model to predict points value
predict(fit, newdata)
1
9.317731
แบบจำลองทำนายว่าผู้เล่นรายนี้จะได้คะแนน 9.317731 คะแนน
โปรดทราบว่าเราสามารถคาดการณ์ได้หลายครั้งหากเรามีกรอบข้อมูลที่มีการสังเกตใหม่หลายรายการ
ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีใช้แบบจำลองการถดถอยที่ติดตั้งเพื่อทำนายค่าคะแนนของผู้เล่นสามคน:
#define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
fouls=c(3, 2, 1))
#view data frame
newdata
minutes fouls
1 15 3
2 20 2
3 25 1
#use model to predict points for all three players
predict(model, newdata)
1 2 3
9.317731 12.021032 14.724334
ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:
- จำนวนแต้มที่คาดหวังสำหรับผู้เล่นในนาทีที่ 15 และฟาล์ว 3 ครั้งคือ 9.32
- จำนวนแต้มที่คาดหวังสำหรับผู้เล่นในนาทีที่ 20 และฟาล์ว 2 ครั้งคือ 12.02
- แต้มที่คาดหวังของนักเตะในนาทีที่ 25 และฟาวล์ 1 ครั้งคือ 14.72 แต้ม
หมายเหตุเกี่ยวกับการใช้การทำนาย()
ชื่อคอลัมน์ในกรอบข้อมูลใหม่จะต้องตรงกับชื่อคอลัมน์ในกรอบข้อมูลที่ใช้ในการสร้างแบบจำลองทุกประการ
โปรดทราบว่าในตัวอย่างก่อนหน้านี้ กรอบข้อมูลที่เราใช้ในการสร้างแบบจำลองมีชื่อคอลัมน์ต่อไปนี้สำหรับตัวแปรทำนายของเรา:
- นาที
- ความผิดพลาด
ดังนั้นเมื่อเราสร้าง data frame ใหม่ที่เรียกว่า newdata เราจึงต้องตั้งชื่อคอลัมน์ด้วย:
- นาที
- ความผิดพลาด
หากชื่อคอลัมน์ไม่ตรงกัน คุณจะได้รับ ข้อความแสดงข้อผิดพลาด ต่อไปนี้:
Error in eval(predvars, data, env)
โปรดคำนึงถึงสิ่งนี้เมื่อใช้ฟังก์ชัน ทำนาย ()
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีดำเนินการถดถอยพหุนามใน R
วิธีสร้างช่วงเวลาการทำนายใน R