İstendiği gibi, mtcars
verileri kullanarak basit bir regresyon kullanarak gösteriyorum :
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
Ortalama karesel hata (MSE) artıkların kare ortalamasıdır:
# Mean squared error
mse <- mean(residuals(fit)^2)
mse
[1] 13.98982
Kök ortalama kare hatası (RMSE) daha sonra MSE'nin kareköküdür:
# Root mean squared error
rmse <- sqrt(mse)
rmse
[1] 3.740297
Artık karelerin toplamı (RSS), kare artıkların toplamıdır:
# Residual sum of squares
rss <- sum(residuals(fit)^2)
rss
[1] 447.6743
Artık standart hata (RSE) (RSS / serbestlik derecelerinin) kareköküdür:
# Residual standard error
rse <- sqrt( sum(residuals(fit)^2) / fit$df.residual )
rse
[1] 3.862962
Aynı hesaplama, daha önce hesapladığımız için basitleştirildi rss
:
sqrt(rss / fit$df.residual)
[1] 3.862962
Regresyon bağlamındaki test hatası terimi (ve diğer öngörücü analitik teknikleri), genellikle eğitim verilerinizden farklı olarak test verileri üzerinde bir test istatistiği hesaplanmasını ifade eder.
Başka bir deyişle, verilerinizin bir bölümünü kullanarak bir model (genellikle% 80 örnek) tahmin ediyor ve sonra da bekletme örneğini kullanarak hatayı hesaplıyorsunuz. Yine, mtcars
bu sefer% 80 örneklemle kullanıldığını göstermektedir.
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
Modeli tahmin edin, daha sonra bekletilen verilerle tahmin edin:
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
Orijinal verileri ve öngörüyü bir veri çerçevesinde birleştirin
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
Şimdi test istatistiklerinizi normal şekilde hesaplayın. MSE ve RMSE'yi örneklendiririm:
test.mse <- with(test, mean(error^2))
test.mse
[1] 7.119804
test.rmse <- sqrt(test.mse)
test.rmse
[1] 2.668296
Bu cevabın gözlemlerin ağırlığını dikkate almadığını unutmayın.