R中脊回归的预测

时间:2016-06-18 09:23:32

标签: r regression

我一直坚持这个,希望有人能帮助我!我有一个包含54列的数据集,我想在使用岭回归的测试集上进行预测。

nn <-nrow(longley)
index <- 1:nrow(longley)
testindex <- sample(index, trunc(length(index)/3))
testset <- longley[testindex,]
trainset <-longley[-testindex,]
trainset1 <- trainset[,-7]

# Fit the ridge regression model:

mod <- lm.ridge(y ~., data = trainset, lambda = 0.661)

# Predict and evaluate it by using MAE function:

mae <- function(model) {
  y = trainset$Employed  
  y.pred <- predict(model, trainset)
  return(mean(abs(y-y.pred)))
}

当我这样做时,我收到以下错误消息:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "ridgelm"

使用岭回归进行预测的另一种方法是什么(也可以使用rsquared和MAE等评估指标)?

1 个答案:

答案 0 :(得分:2)

predict对象确实没有ridgelm方法:你必须手工完成。顺便说一句,你可以看到summary

> methods(class = 'ridgelm')
[1] coef   plot   print  select

这是线性模型,因此拟合只是一个基本计算的问题:

y.pred <- as.matrix(cbind(const=1,trainset)) %*% coef(model)

我们需要添加常数1以与线性模式的常系数相关联。

重要提示:要使用岭回归,通常会缩放解释变量,以便减去均值。最佳实践应该是从训练中学习缩放定义,然后使用训练集方法来中心来自新数据的变量。您可能对这个相关的交叉验证帖子感兴趣:

https://stats.stackexchange.com/questions/152203/how-to-calculate-predicted-values-using-an-lm-ridge-object