คำนวณค่า R-squared
หลังจากที่คำนวณค่า RMSE ของการพยากรณ์จากโมเดลแล้ว คราวนี้จะมาดูว่าโมเดลอธิบายข้อมูลได้ดีเพียงใด กล่าวคือ โมเดลอธิบายความแปรปรวนในข้อมูลได้มากแค่ไหน ซึ่งทำได้โดยใช้ \(R^2\)
กำหนดให้ \(y\) คือผลลัพธ์จริง, \(p\) คือค่าพยากรณ์จากโมเดล และ \(res = y - p\) คือค่าส่วนเหลือ (residuals) ของการพยากรณ์
ผลรวมกำลังสองรวม \(tss\) ("ความแปรปรวนรวม") ของข้อมูลคือ:
$$ tss = \sum{(y - \overline{y})^2} $$
โดยที่ \(\overline{y}\) คือค่าเฉลี่ยของ \(y\)
ผลรวมกำลังสองของค่าส่วนเหลือ \(rss\) คือ: $$ rss = \sum{res^2} $$
\(R^2\) (R-squared) หรือ "ความแปรปรวนที่อธิบายได้" โดยโมเดล คำนวณได้จาก:
$$ 1 - \frac{rss}{tss} $$
หลังจากคำนวณ \(R^2\) แล้ว ให้เปรียบเทียบผลที่ได้กับค่า \(R^2\) ที่รายงานโดย glance() (docs) glance() จะคืนค่า data frame ที่มีหนึ่งแถว สำหรับโมเดล linear regression จะมีคอลัมน์ที่แสดงค่า \(R^2\) ของโมเดลบนข้อมูลฝึก
ข้อมูล data frame ชื่อ unemployment ถูกโหลดไว้ให้แล้ว และมีคอลัมน์ predictions กับ residuals ที่คำนวณไว้ในแบบฝึกหัดก่อนหน้า นอกจากนี้ยังมี unemployment_model พร้อมให้ใช้งานด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- คำนวณค่าเฉลี่ยของ
female_unemploymentแล้วกำหนดให้กับตัวแปรfe_mean - คำนวณผลรวมกำลังสองรวม แล้วกำหนดให้กับตัวแปร
tss - คำนวณผลรวมกำลังสองของค่าส่วนเหลือ แล้วกำหนดให้กับตัวแปร
rss - คำนวณค่า \(R^2\) โมเดลมีความเหมาะสมดีหรือไม่ (ค่า \(R^2\) ใกล้ 1)?
- ใช้
glance()เพื่อดึงค่า \(R^2\) จากโมเดล ผลที่ได้ตรงกับที่คำนวณเองหรือไม่?
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# unemployment is available
summary(unemployment)
# unemployment_model is available
summary(unemployment_model)
# Calculate and print the mean female_unemployment: fe_mean
(fe_mean <- ___)
# Calculate and print the total sum of squares: tss
(tss <- ___((___ - ___)^2))
# Calculate and print residual sum of squares: rss
(rss <- ___)
# Calculate and print the R-squared: rsq
(rsq <- ___)
# Get R-squared from glance and print it
(rsq_glance <- ___(___)$___)