【发布时间】:2018-04-12 09:29:03
【问题描述】:
是否有一个简单的命令可以使用 R 中的 lm() 函数进行留一交叉验证?
下面的代码是否有一个简单的命令?
x <- rnorm(1000,3,2)
y <- 2*x + rnorm(1000)
pred_error_sq <- c(0)
for(i in 1:1000) {
x_i <- x[-i]
y_i <- y[-i]
mdl <- lm(y_i ~ x_i) # leave i'th observation out
y_pred <- predict(mdl, data.frame(x_i = x[i])) # predict i'th observation
pred_error_sq <- pred_error_sq + (y[i] - y_pred)^2 # cumulate squared prediction errors
}
y_squared <- sum((y-mean(y))^2)/100 # Variation of the data
R_squared <- 1 - (pred_error_sq/y_squared) # Measure for goodness of fit
【问题讨论】:
标签: r cross-validation lm