ตามที่ร้องขอฉันแสดงการใช้การถดถอยแบบง่ายโดยใช้mtcars
ข้อมูล:
fit <- lm(mpg~hp, data=mtcars)
summary(fit)
Call:
lm(formula = mpg ~ hp, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-5.7121 -2.1122 -0.8854 1.5819 8.2360
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.09886 1.63392 18.421 < 2e-16 ***
hp -0.06823 0.01012 -6.742 1.79e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.863 on 30 degrees of freedom
Multiple R-squared: 0.6024, Adjusted R-squared: 0.5892
F-statistic: 45.46 on 1 and 30 DF, p-value: 1.788e-07
คลาดเคลื่อนกำลังสองเฉลี่ย (MSE) เป็นค่าเฉลี่ยของตารางของเศษที่:
# Mean squared error
mse <- mean(residuals(fit)^2)
mse
[1] 13.98982
Root Mean squared error (RMSE) เป็นค่ารากที่สองของ MSE:
# Root mean squared error
rmse <- sqrt(mse)
rmse
[1] 3.740297
ผลรวมที่เหลือของกำลังสอง (RSS) คือผลรวมของค่าตกค้างกำลังสอง:
# Residual sum of squares
rss <- sum(residuals(fit)^2)
rss
[1] 447.6743
ข้อผิดพลาดมาตรฐานที่เหลือ (RSE) คือรากที่สองของ (RSS / องศาอิสระ):
# Residual standard error
rse <- sqrt( sum(residuals(fit)^2) / fit$df.residual )
rse
[1] 3.862962
การคำนวณเดียวกันง่ายขึ้นเพราะเราได้คำนวณมาก่อนหน้านี้rss
:
sqrt(rss / fit$df.residual)
[1] 3.862962
ข้อผิดพลาดการทดสอบคำศัพท์ในบริบทของการถดถอย (และเทคนิคการวิเคราะห์เชิงพยากรณ์อื่น ๆ ) มักจะหมายถึงการคำนวณสถิติการทดสอบข้อมูลการทดสอบแตกต่างจากข้อมูลการฝึกอบรมของคุณ
กล่าวอีกนัยหนึ่งคุณประเมินโมเดลโดยใช้ส่วนหนึ่งของข้อมูลของคุณ (มักเป็นตัวอย่าง 80%) จากนั้นคำนวณข้อผิดพลาดโดยใช้ตัวอย่างที่ระงับ อีกครั้งฉันแสดงการใช้mtcars
คราวนี้กับตัวอย่าง 80%
set.seed(42)
train <- sample.int(nrow(mtcars), 26)
train
[1] 30 32 9 25 18 15 20 4 16 17 11 24 19 5 31 21 23 2 7 8 22 27 10 28 1 29
ประเมินโมเดลจากนั้นทำนายด้วยข้อมูลที่ระงับไว้:
fit <- lm(mpg~hp, data=mtcars[train, ])
pred <- predict(fit, newdata=mtcars[-train, ])
pred
Datsun 710 Valiant Merc 450SE Merc 450SL Merc 450SLC Fiat X1-9
24.08103 23.26331 18.15257 18.15257 18.15257 25.92090
รวมข้อมูลดั้งเดิมและการทำนายไว้ในกรอบข้อมูล
test <- data.frame(actual=mtcars$mpg[-train], pred)
test$error <- with(test, pred-actual)
test
actual pred error
Datsun 710 22.8 24.08103 1.2810309
Valiant 18.1 23.26331 5.1633124
Merc 450SE 16.4 18.15257 1.7525717
Merc 450SL 17.3 18.15257 0.8525717
Merc 450SLC 15.2 18.15257 2.9525717
Fiat X1-9 27.3 25.92090 -1.3791024
ตอนนี้คำนวณสถิติการทดสอบของคุณในวิธีปกติ ฉันแสดง MSE และ RMSE:
test.mse <- with(test, mean(error^2))
test.mse
[1] 7.119804
test.rmse <- sqrt(test.mse)
test.rmse
[1] 2.668296
โปรดทราบว่าคำตอบนี้ไม่ต้องคำนึงถึงน้ำหนักของข้อสังเกต