【问题标题】:How to calculate R Squared value for Lasso regression using glmnet in R如何在 R 中使用 glmnet 计算 Lasso 回归的 R 平方值
【发布时间】:2018-11-09 16:12:52
【问题描述】:

我正在使用 glmnet 包在 R 中执行套索回归:

fit.lasso <- glmnet(x,y)
plot(fit.lasso,xvar="lambda",label=TRUE)

然后使用交叉验证:

cv.lasso=cv.glmnet(x,y)
plot(cv.lasso)

One tutorial(最后一张幻灯片)为 R^2 建议以下内容:

R_Squared =  1 - cv.lasso$cvm/var(y)

但它没有工作。

我想了解模型在拟合数据时的效率/性能。因为我们在 r 中执行 lm() 函数时通常会得到 R^2 并调整 R^2。

【问题讨论】:

    标签: r linear-regression glmnet lasso-regression


    【解决方案1】:

    如果您使用“高斯”族,您可以通过

    访问 R 平方值

    fit.lasso$glmnet.fit$dev.ratio

    【讨论】:

    • 来自 glmnet 文档,dev.ratio 是 The fraction of (null) deviance explained (for "elnet", this is the R-square).
    【解决方案2】:

    我用示例数据来演示一下

    图书馆(glmnet)

    加载数据

    data(BinomialExample)
    head(x) 
    head(y)
    

    用于交叉验证

    cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class")
    rsq = 1 - cvfit$cvm/var(y)
    plot(cvfit$lambda,rsq)
    

    【讨论】:

      【解决方案3】:

      首先用选定的 lambda 拟合 Lasso 模型

      ...

      lasso.model &lt;- glmnet(x=X,y=Y, family = "binomial", alpha=1, lambda = cv.model$lambda.min )

      那么你可以从拟合模型中得到伪 R2

      `lasso.model$dev.ratio`
      

      这个值给出模型解释的偏差/空偏差

      【讨论】:

        猜你喜欢
        • 2017-12-05
        • 2021-05-05
        • 1970-01-01
        • 2015-08-13
        • 2021-02-12
        • 2020-05-21
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        相关资源
        最近更新 更多