2017-05-24 16 views
-1

我所試圖做的是寫一個函數,將在迴歸擬合模型計算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) 

回答

1

你可以簡單地調整你的函數:

rmse <- function(mod) { 
      sqrt(mean (mod$residuals^2)) 
     } 
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)