glmnet中的摘要统计信息

时间:2015-07-05 06:00:42

标签: r statistics linear-regression cross-validation glmnet

我一直致力于数据集并使用glmnet进行线性LASSO / Ridge回归。

为简单起见,我们假设我使用的模型如下:

cv.glmnet(train.features, train.response, alpha=1, nlambda=100, type.measure = "mse", nfolds = 10)

我正在为客户准备演示文稿,我需要显示变量的T-stats R-squared 值。此外,我还需要根据模型的拟合值绘制残差。

在创建从头开始执行此操作的功能之前,我想询问库中是否已涵盖此功能。我检查过glmnet vignette但没有找到任何内容。

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

你的问题的部分答案: plotres 功能在 plotmo R包是一种简单的方法,可以为各种模型绘制残差,包括 glmnet cv.glmnet 模型。 plotres vignette http://go.microsoft.com/fwlink/?LinkId=472540 包中附有详细信息。例如

library(glmnet)
data(longley)
mod <- glmnet(data.matrix(longley[,1:6]), longley[,7])
library(plotmo) # for plotres
plotres(mod)

给出以下图表。您可以通过将适当的参数传递给plotres来选择子图并修改图。

plot

答案 1 :(得分:0)

这两个软件包“ yardstick”和“ modelr”可以提供帮助。

我用插入符号通过“ train()”调用glmnet,返回的对象有一个$ resample对象,其中每个交叉验证折叠都包含RMSE,Rsquared和MAE。

library( tictoc ) # If you don't want to install this, just take out the calls to tic() and toc()
library( caret )
library( tidyverse )

training_folds <- createFolds( dmv, returnTrain = TRUE )

ctl <- trainControl( method = "cv", number = 5, index = training_folds )
tic()
dmv_pp <- preProcess( dmv, method = c( "nzv", "center", "scale" ))
toc() # This can take a while

dmv_train <- predict( dmv_pp, dmv )
# Using just a subset of the data, because otherwise I run out of memory.
mdl <- train( duration_avg ~ ., data = dmv_train[1:1E4,], trControl = ctl,  method = "glmnet",
              tuneGrid = expand.grid(
                alpha = c( 0, 0.5, 1),
                lambda = c( 0.001, 0.01 )
              )
          )

mdl$resample %>% names()

mdl %>%
    listviewer::jsonedit() # This object should contain $resamples

dmv_train <- dmv_train %>%
    modelr::add_predictions( mdl, var = "predicted_duration_avg" ) # I think this should work with any model that has a predict() method

dmv_train %>%
  yardstick::metrics( duration_avg, predicted_duration_avg )