我有一组多重共线变量,我正在尝试使用岭回归来解决这个问题。我glmnet在 R 中使用 alpha = 0的包(用于岭回归)。
library(glmnet)
Run Code Online (Sandbox Code Playgroud)
我有一系列 lambda 值,我正在通过 cv.glmnet 选择最佳的 lambda 值
lambda <- 10^seq(10, -2, length = 100)
Run Code Online (Sandbox Code Playgroud)
-- 创建模型矩阵并分配 y 变量
x <- model.matrix(dv ~ ., datamatrix) [,-1]
y <- datamatrix$dv
Run Code Online (Sandbox Code Playgroud)
-- 使用交叉验证来确定最佳 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)
Run Code Online (Sandbox Code Playgroud)
我能够成功做到这一点,但我还必须检查这个特定 lambda 值的 VIF,以确保系数已经稳定并且多重共线性得到控制。但我不确定如何在 GLMNET 中检查 VIF,因为通常的vif()函数会引发此错误。
vcov.default(mod) …