วิธีดำเนินการถดถอยเชิงเส้นด้วยตัวแปรหมวดหมู่ใน r
การถดถอยเชิงเส้นเป็นวิธีการที่เราสามารถใช้เพื่อหาปริมาณความสัมพันธ์ระหว่างตัวแปรทำนายตั้งแต่หนึ่งตัวขึ้นไปกับ ตัวแปรตอบสนอง
บ่อยครั้ง คุณอาจต้องการปรับโมเดลการถดถอยให้เหมาะสมโดยใช้ ตัวแปรประเภท หนึ่งหรือหลายตัวเป็นตัวแปรทำนาย
บทช่วยสอนนี้ให้ตัวอย่างทีละขั้นตอนของวิธีการถดถอยเชิงเส้นด้วยตัวแปรหมวดหมู่ใน R
ตัวอย่าง: การถดถอยเชิงเส้นพร้อมตัวแปรหมวดหมู่ใน R
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับตัวแปรสามตัวสำหรับผู้เล่นบาสเก็ตบอล 12 คน:
- คะแนนที่ได้
- ชั่วโมงที่ใช้ในการฝึกซ้อม
- โปรแกรมการฝึกอบรมที่ใช้
#create data frame df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18), hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6), program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)) #view data frame df points hours program 1 7 1 1 2 7 2 1 3 9 2 1 4 10 3 1 5 13 2 2 6 14 6 2 7 12 4 2 8 10 3 2 9 16 4 3 10 19 5 3 11 22 8 3 12 18 6 3
สมมติว่าเราต้องการปรับโมเดลการถดถอยเชิงเส้นต่อไปนี้:
คะแนน = β 0 + β 1 ชั่วโมง + โปรแกรม β 2
ในตัวอย่างนี้ ชั่วโมงเป็นตัวแปรต่อเนื่อง แต่โปรแกรมเป็น ตัวแปรหมวดหมู่ ซึ่งอาจมีสามประเภทที่เป็นไปได้: โปรแกรม 1 โปรแกรม 2 หรือโปรแกรม 3
เพื่อให้เหมาะสมกับโมเดลการถดถอยนี้และบอก R ว่าตัวแปร “โปรแกรม” เป็นตัวแปรเชิงหมวดหมู่ เราจำเป็นต้องใช้ as.factor() เพื่อแปลงให้เป็นแฟคเตอร์ จากนั้นจึงปรับโมเดลให้พอดี:
#convert 'program' to factor
df$program <- as. factor (df$program)
#fit linear regression model
fit <- lm(points ~ hours + program, data = df)
#view model summary
summary(fit)
Call:
lm(formula = points ~ hours + program, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.5192 -1.0064 -0.3590 0.8269 2.4551
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *
program2 2.2949 1.1369 2.019 0.078234 .
program3 6.8462 1.5499 4.417 0.002235 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05
จากค่าในคอลัมน์ ประมาณการ เราสามารถเขียนแบบจำลองการถดถอยที่ติดตั้งไว้ได้:
คะแนน = 6.3013 + 0.9744 (ชั่วโมง) + 2.2949 (โปรแกรม 2) + 6.8462 (โปรแกรม 3)
นี่คือวิธีตีความค่าสัมประสิทธิ์ในผลลัพธ์:
- ชั่วโมง : สำหรับแต่ละชั่วโมงที่ใช้ในการฝึกซ้อมเพิ่มเติม คะแนนจะเพิ่มขึ้นโดยเฉลี่ย 0.9744 โดยถือว่าโปรแกรมคงที่
- ค่า p คือ 0.015 ซึ่งบ่งชี้ว่าชั่วโมงที่ใช้ในการฝึกซ้อมเป็นตัวทำนายคะแนนที่มีนัยสำคัญทางสถิติที่ระดับ α = 0.05
- schedule2 : ผู้เล่นที่ใช้ตาราง 2 ทำคะแนนได้มากกว่าผู้เล่นที่ใช้ตาราง 1 โดยเฉลี่ย 2.2949 คะแนน โดยสมมติว่าชั่วโมงคงที่
- ค่า p คือ 0.078 ซึ่งบ่งชี้ว่าไม่มีความแตกต่างที่มีนัยสำคัญทางสถิติในคะแนนที่ทำได้โดยผู้เล่นที่ใช้โปรแกรม 2 เทียบกับผู้เล่นที่ใช้โปรแกรม 1 ที่ระดับ α = 0.05
- schedule3 : ผู้เล่นที่ใช้ตาราง 3 ทำคะแนนได้มากกว่าผู้เล่นที่ใช้ตาราง 1 โดยเฉลี่ย 2.2949 คะแนน โดยถือว่าชั่วโมงคงที่
- ค่า p คือ 0.002 ซึ่งบ่งชี้ว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติในคะแนนที่ทำโดยผู้เล่นที่ใช้ตารางที่ 3 เทียบกับผู้เล่นที่ใช้ตารางที่ 1 ที่ระดับ α = 0.05
เมื่อใช้แบบจำลองการถดถอยที่ติดตั้งไว้ เราสามารถทำนายจำนวนคะแนนที่ผู้เล่นทำได้ โดยพิจารณาจากจำนวนชั่วโมงทั้งหมดที่ใช้ในการฝึกฝนและโปรแกรมที่พวกเขาใช้
ตัวอย่างเช่น เราสามารถใช้โค้ดต่อไปนี้เพื่อทำนายคะแนนที่ทำได้โดยผู้เล่นที่ฝึกฝนเป็นเวลา 5 ชั่วโมง และใช้ตารางการฝึกที่ 3:
#define new player new <- data. frame (hours=c(5), program=as. factor (c(3))) #use the fitted model to predict the points for the new player predict(fit, newdata=new) 1 18.01923
แบบจำลองทำนายว่าผู้เล่นใหม่รายนี้จะได้คะแนน 18.01923 คะแนน
เราสามารถยืนยันได้ว่าสิ่งนี้ถูกต้องโดยการใส่ค่าของผู้เล่นใหม่ลงในสมการการถดถอยที่ติดตั้ง:
- คะแนน = 6.3013 + 0.9744 (ชั่วโมง) + 2.2949 (โปรแกรม 2) + 6.8462 (โปรแกรม 3)
- คะแนน = 6.3013 + 0.9744(5) + 2.2949(0) + 6.8462(1)
- คะแนน = 18,019
ซึ่งตรงกับค่าที่เราคำนวณโดยใช้ฟังก์ชัน ทำนาย () ใน R
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีสร้างพล็อตที่เหลือใน R