การถดถอยสู่ค่าเฉลี่ย

การถดถอยใน R เบื้องต้น

Richie Cotton

Data Evangelist

แนวคิด

  • ค่าตอบสนอง = ค่าที่ฟิต + ส่วนเหลือ
  • "สิ่งที่อธิบายได้" + "สิ่งที่อธิบายไม่ได้"
  • ส่วนเหลือเกิดจากปัญหาของโมเดล และ ความสุ่มโดยธรรมชาติ
  • กรณีสุดขั้วมักเกิดจากความสุ่ม
  • การถดถอยสู่ค่าเฉลี่ย หมายความว่ากรณีสุดขั้วไม่คงอยู่ตลอดเวลา
การถดถอยใน R เบื้องต้น

ชุดข้อมูลพ่อ-ลูกชายของ Pearson

  • คู่พ่อ/ลูกชาย 1,078 คู่
  • พ่อที่สูงมีลูกชายที่สูงด้วยหรือไม่?
father_height_cm son_height_cm
165.2 151.8
160.7 160.6
165.0 160.9
167.0 159.5
155.3 163.3
... ...
1 ดัดแปลงจาก https://www.rdocumentation.org/packages/UsingR/topics/father.son
การถดถอยใน R เบื้องต้น

กราฟกระจาย

plt_son_vs_father <- ggplot(
  father_son, 
  aes(father_height_cm, son_height_cm)
) +
  geom_point() +
  geom_abline(color = "green", size = 1) +
  coord_fixed()

กราฟกระจายของความสูงลูกชายเทียบกับความสูงพ่อ พร้อมเส้นที่แสดงจุดที่พ่อและลูกชายมีความสูงเท่ากัน เมื่อพ่อสูงขึ้น ลูกชายก็สูงขึ้นด้วย

การถดถอยใน R เบื้องต้น

เพิ่มเส้นการถดถอย

plt_son_vs_father +
  geom_smooth(method = "lm", se = FALSE)

กราฟกระจายของความสูงลูกชายเทียบกับความสูงพ่อ พร้อมเส้นแนวโน้มเชิงเส้น เส้นแนวโน้มมีความชันน้อยกว่าเส้นที่พ่อและลูกชายมีความสูงเท่ากัน

การถดถอยใน R เบื้องต้น

รันการถดถอย

mdl_son_vs_father <- lm(
  son_height_cm ~ father_height_cm, 
  data = father_son
)
Call:
lm(formula = son_height_cm ~ father_height_cm, data = father_son)

Coefficients:
     (Intercept)  father_height_cm  
          86.072             0.514
การถดถอยใน R เบื้องต้น

การพยากรณ์

really_tall_father <- tibble(
  father_height_cm = 190
)
predict(mdl_son_vs_father, really_tall_father)
183.7
really_short_father <- tibble(
  father_height_cm = 150
)
predict(mdl_son_vs_father, really_short_father)
163.2
การถดถอยใน R เบื้องต้น

มาฝึกกันเถอะ!

การถดถอยใน R เบื้องต้น

Preparing Video For Download...