วิธีดำเนินการถดถอยเชิงเส้นด้วยตัวแปรหมวดหมู่ใน 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

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

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