如何使用R中的glmnet计算Lasso回归的R平方值

时间:2018-05-30 18:00:06

标签: r linear-regression glmnet lasso

我已经浏览了8个关于这个问题的stackoverflow问题。但没有提供适当的实际答案。

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

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

fit.lasso plot

然后使用交叉验证:

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

lambda VS MSE

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

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

但它没有用。

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

3 个答案:

答案 0 :(得分:0)

我使用示例数据进行了演示

库(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)

enter image description here

答案 1 :(得分:0)

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

访问R平方值。

fit.lasso $ glmnet.fit $ dev.ratio

答案 2 :(得分:0)

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

...

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

然后你可以从拟合模型中得到伪 R2

`lasso.model$dev.ratio`

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