首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算套索回归的交叉验证R2?

如何计算套索回归的交叉验证R2?
EN

Stack Overflow用户
提问于 2018-06-09 02:57:04
回答 1查看 2.2K关注 0票数 0

我正在使用此代码来拟合一个使用套索回归的模型。

代码语言:javascript
复制
library(glmnet)
IV1 <- data.frame(IV1 = rnorm(100))
IV2 <- data.frame(IV2 = rnorm(100))
IV3 <- data.frame(IV3 = rnorm(100))
IV4 <- data.frame(IV4 = rnorm(100))
IV5 <- data.frame(IV5 = rnorm(100))
DV <- data.frame(DV = rnorm(100))

data<-data.frame(IV1,IV2,IV3,IV4,IV5,DV)

x <-model.matrix(DV~.-IV5 , data)[,-1]
y <- data$DV

AB<-glmnet(x=x, y=y, alpha=1)
plot(AB,xvar="lambda")

lambdas = NULL
for (i in 1:100)
{
  fit <- cv.glmnet(x,y)
  errors = data.frame(fit$lambda,fit$cvm)
  lambdas <- rbind(lambdas,errors)
}

lambdas <- aggregate(lambdas[, 2], list(lambdas$fit.lambda), mean)


bestindex = which(lambdas[2]==min(lambdas[2]))
bestlambda = lambdas[bestindex,1]


fit <- glmnet(x,y,lambda=bestlambda)

我想使用训练数据来计算某种R2。我假设这样做的一种方法是使用我在选择lambda时执行的交叉验证。基于这个post,这似乎可以使用以下命令完成

代码语言:javascript
复制
r2<-max(1-fit$cvm/var(y))

然而,当我运行这段代码时,我得到了这个错误:

代码语言:javascript
复制
Warning message:
In max(1 - fit$cvm/var(y)) :
no non-missing arguments to max; returning -Inf

有谁能给我指个方向吗?这是根据训练数据计算R2的最佳方法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档