Fit โมเดลเพื่อพยากรณ์ความน่าจะเป็นในการรอดชีวิตของนกกระจอก
ในแบบฝึกหัดนี้ จะประมาณค่าความน่าจะเป็นที่นกกระจอกจะรอดชีวิตจากพายุหิมะรุนแรง โดยอาศัยลักษณะทางกายภาพของนก ชุดข้อมูล sparrow ถูกโหลดไว้ให้แล้ว ตัวแปรผลลัพธ์ที่ต้องการพยากรณ์คือ status ("Survived", "Perished") และตัวแปรที่จะนำมาใช้ได้แก่:
total_length: ความยาวของนกจากปลายปากถึงปลายหาง (มม.)weight: น้ำหนัก (กรัม)humerus: ความยาวของกระดูกต้นแขน (กระดูกที่เชื่อมปีกกับลำตัว) (นิ้ว)
เมื่อใช้ glm() (docs) เพื่อสร้างโมเดล logistic regression ต้องระบุ family = binomial อย่างชัดเจน:
glm(formula, data = data, family = binomial)
จากนั้นจะเรียกใช้ summary() และ broom::glance() เพื่อตรวจสอบโมเดล logistic regression ในรูปแบบต่างๆ หนึ่งในตัววัดที่จะพิจารณาคือค่าที่เทียบเคียงกับ \(R^2\) ซึ่งเรียกว่า pseudo-\(R^2\)
$$ pseudoR^2 = 1 - \frac{deviance}{null.deviance} $$
ค่า deviance มีความหมายคล้ายกับ variance กล่าวคือเป็นการวัดความแปรผันในข้อมูลประเภทหมวดหมู่ ส่วน pseudo-\(R^2\) มีความหมายคล้ายกับ \(R^2\) ในการถดถอยมาตรฐาน โดย \(R^2\) วัด "ความแปรปรวนที่อธิบายได้" ของโมเดล ขณะที่ pseudo-\(R^2\) วัด "deviance ที่อธิบายได้"
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- ตามที่แนะนำในวิดีโอ จะพยากรณ์ผลลัพธ์ในรูปแบบ
TRUEและFALSEสร้างคอลัมน์ใหม่survivedใน data framesparrowโดยให้มีค่าเป็น TRUE เมื่อstatus == "Survived" - สร้าง formula
fmlaที่แสดงความสัมพันธ์ของsurvivedกับตัวแปรที่สนใจ แล้วแสดงผลลัพธ์ - Fit โมเดล logistic regression เพื่อพยากรณ์ความน่าจะเป็นในการรอดชีวิตของนกกระจอก และกำหนดโมเดลให้กับตัวแปร
sparrow_model - เรียก
summary()เพื่อดูค่าสัมประสิทธิ์ของโมเดล รวมถึงค่า deviance และ null deviance - เรียก
glance()กับโมเดลเพื่อดูค่า deviance และตัววัดอื่นๆ ในรูปแบบ data frame แล้วกำหนดผลลัพธ์จากglance()ให้กับตัวแปรperf - คำนวณค่า pseudo-\(R^2\)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# sparrow is available
summary(sparrow)
# Create the survived column
sparrow$survived <- ___
# Create the formula
(fmla <- _____)
# Fit the logistic regression model
sparrow_model <- ___
# Call summary
___
# Call glance
(perf <- ___)
# Calculate pseudo-R-squared
(pseudoR2 <- ___)