我要做的是编写一个函数来计算拟合模型的RMSE,BIC和AIC:
fit_lm <- lm(rnorm(50) ~ rnorm(50, 4))
summary(fit_lm)
当我将拟合的模型传递给AIC()和BIC()时,我可以得到结果:
# BIC
BIC(fit_lm)
# AIC
AIC(fit_lm)
# RMSE
rmse <- function(err) {
sqrt( mean ( err^2 ) )
}
但在这里我必须通过$residual
:
rmse(fit_lm$residuals)
我应该怎么做才能让rmse结果只通过拟合的模型:
rmse(fit_lm)
答案 0 :(得分:1)
你可以简单地调整你的功能:
rmse <- function(mod) {
sqrt( mean ( mod$residuals^2 ) )
}
答案 1 :(得分:0)
这是什么(一般化版本):
rmse <- function(mod, which = NULL)
{
if (is.null(which)) which <- 1:length(residuals(mod))
sqrt(mean(residuals(mod)[which]^2, na.rm = TRUE))
}
rmse(fit_lm)