เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

คำนวณค่า 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 <- ___(___)$___)
แก้ไขและรันโค้ด