首页 文章

R中glmnet的岭回归;使用glmnet包计算不同lambda值的VIF

提问于
浏览
1

我有一组多线性变量,我正在尝试使用岭回归来解决这个问题 . 我在R中使用GLMNET包,alpha = 0(用于岭回归) .

library(glmnet)

我有一系列lambda值;我通过cv.glmnet选择最好的lambda值

lambda <- 10^seq(10, -2, length = 100)
  • 创建模型矩阵并分配y变量
x <- model.matrix(dv ~ ., datamatrix) [,-1]
y <- datamatrix$dv
  • 使用交叉验证来确定最佳lambda并使用该lambda值预测y
ridge.mod <- glmnet(x, y, alpha = 0, lambda = lambda)
cv.out <- cv.glmnet(x, y, alpha = 0)
ridge.pred <- predict(ridge.mod, s = cv.out$lambda.min, newx = x)

我能够成功地做到这一点,但我还要检查这个特定λ值的VIF,以确保系数稳定并控制多重共线性 . 但我不知道如何检查GLMNET中的VIF,因为通常的vif()函数会抛出此错误 .

Error in vcov.default(mod) : there is no vcov() method for models of class elnet, glmnet

您能否帮我确认一下我的方法是否有任何问题或如何解决这个问题?

VIF不适用于GLMNET中的验证吗?

提前致谢 .

2 回答

  • 0

    VIF仅是一组自变量的属性 . 它没有改变独立变量(例如添加剂模型) . 请参阅 car 包中的 vif 函数 . 因此,VIF应用于弹性网络回归,不会告诉您是否已处理多重共线性 . 它可以告诉你,有一个多重共线性来处理 .

  • 0

    通过实例的Hadi回归分析(p295)具有以下VIF的脊回归定义 . Z是协变量矩阵的标准化版本 .

    VIF for Ridge

相关问题