A multiple logistic regression yield odds ratios, 95% CI's and p values which I understand. LASSO (logistic) seems to yield deviation and deviation ratios and no p values. I'm not sure how to interpret these at all?

I'm using Stata and my call is: lasso logit y x1 x2 x3...xn

My output:

enter image description here

I have no idea how to interpret this. Am I supposed to take model #42 and run a prediction model (either lasso predictive model or multiple regression) on it to get something that I can interpret?

  • $\begingroup$ Perhaps you could provide your function calls and outputs? Without seeing it, it's hard to know what the issue is... $\endgroup$ – jbowman Jan 12 at 16:43
  • $\begingroup$ Added to my post. $\endgroup$ – Paze Jan 12 at 16:46
  • $\begingroup$ Is that the complete output? $\endgroup$ – Peter Flom - Reinstate Monica Jan 13 at 20:20
  • $\begingroup$ Yes. It is the complete output of the call: lasso logit y x1 x2 x3...xn I can do "lassocoef" to see which coefficients it picked but no inferential information is supplied. I can do a call to see "Deviance ratio" but I'm not sure how to infer anything from individual variables from that. There exists "inferential lasso models" but I can't understand what this "lasso" call does. $\endgroup$ – Paze Jan 13 at 20:38

A danger in having powerful tools available in standard software programs is that users don't always understand the underlying hidden assumptions.

Even if you will be using Stata for routine work, I recommend getting a copy of An Introduction to Statistical Learning and working through the examples in Chapter 6 of LASSO and ridge regression, with the code provided in R. That will take you through the steps that are involved in building a penalized regression model.

What's hidden in the Stata function call is that it automatically does cross-validation to find the "best" penalty for the regression coefficients. In principle any penalty value could be used. Based on the output you posted, Stata evidently does cross-validation for the optimization, finding the penalty that provides the lowest mean cross-validated deviance. This is not the only possible criterion; those who want a lower number of included predictors instead might choose the penalty that provides the smallest model providing performance within 1 standard error of that minimum.

If you are happy with the minimum cross-validated deviance criterion, then you would use the penalized coefficient values returned by Model 42 for a prediction model.

The issue of inference (p values, confidence intervals, etc.) with predictor-selection approaches like LASSO is difficult. Once you have used the data to help select the predictors, the assumptions underlying standard formulas no longer hold. For example, you could not simply take the 3 predictors kept in Model 42, run a standard linear regression with them, and trust the p values that are reported. There are some recent approaches to taking the predictor selection into account. If you want to pursue those issues, start with a careful reading of Statistical Learning with Sparsity.

Ridge regression, which keeps all predictors in the model but penalizes their coefficients to minimize over-fitting, might provide some advantages over LASSO in your case. See this page for an introduction to issues with respect to p values and such with ridge.

  • $\begingroup$ Thank you as always for your answer. Right now I'm just getting started with it and want to see if I can build a model, it doesn't have to be conventionally "right". When you say "If you are happy with the minimum cross-validated deviance criterion, then you would use the penalized coefficient values returned by Model 42 for a prediction model." How do I obtain the penalized coefficient values? I think this is the vital step that the manual is eluding me. $\endgroup$ – Paze Jan 12 at 19:31
  • $\begingroup$ I can see the list of variables by "lassocoef": prnt.sc/qmpl9v but I'm unsure how to move to a model that provides inference values. $\endgroup$ – Paze Jan 12 at 19:33
  • $\begingroup$ @Paze questions specific to a particular software program are off-topic here, and I have no experience with Stata. The exercises in Chapter 6 of ISLR, which I linked in the answer, show how to get coefficient values when you use glmnet() in R. The selectiveInference package in R provides tools for inference in logistic LASSO models, but I would be reluctant to go that route without some locally available statistical expertise. For help doing this with Stata, see these links. $\endgroup$ – EdM Jan 12 at 22:06

Not the answer you're looking for? Browse other questions tagged or ask your own question.