16
$\begingroup$

My situation:

  • small sample size: 116
  • binary outcome variable
  • long list of explanatory variables: 44
  • explanatory variables did not come from the top of my head; their choice was based on the literature.
  • most cases in the sample and most variables have missing values.

Approach to feature selection chosen: LASSO

R's glmnet package won't let me run the glmnet routine, apparently due to the existence of missing values in my data set. There seems to be various methods for handling missing data, so I would like to know:

  • Does LASSO impose any restriction in terms of the method of imputation that I can use?
  • What would be the best bet for imputation method? Ideally, I need a method that I could run on SPSS (preferably) or R.

UPDATE1: It became clear from some of the answers below that I have do deal with more basic issues before considering imputation methods. I would like to add here new questions regarding that. On the the answer suggesting the coding as constant value and the creation of a new variable in order to deal with 'not applicable' values and the usage of group lasso:

  • Would you say that if I use group LASSO, I would be able to use the approach suggested to continuous predictors also to categorical predictors? If so, I assume it would be equivalent to creating a new category - I am wary that this may introduce bias.
  • Does anyone know if R's glmnet package supports group LASSO? If not, would anyone suggest another one that does that in combination with logistic regression? Several options mentioning group LASSO can be found in CRAN repository, any suggestions of the most appropriate for my case? Maybe SGL?

This is a follow-up on a previous question of mine (How to select a subset of variables from my original long list in order to perform logistic regression analysis?).

OBS: I am not a statistician.

$\endgroup$
14
  • $\begingroup$ (1) The best approach to imputation depends on the proportion & pattern of missing values, the relationships between the variables, & what assumptions you're prepared to make about the reasons for missing values. (2) Any single imputation method can be used to provide input to LASSO; the difficulty's in assessing how imputation affects the results. I don't know how to combine multiple imputation with LASSO (doubtless someone does), but an informal comparison of results from different imputation runs (are the same predictors usually selected?) could still be informative. $\endgroup$
    – Scortchi
    Commented Jun 23, 2014 at 9:13
  • $\begingroup$ @Scortchi: Most of my missing values fall in the category 'not-applicable'. E.g.: In the variable 'age of adult female in the household', cases in which the adult male is a widow. Actually, I guess I need to take a step back here: should I treat values of 0 in continuous variables as missing values? E.g: 0 years of education, 0 household members between 14 and 60 years old. $\endgroup$
    – Puzzled
    Commented Jun 23, 2014 at 23:55
  • $\begingroup$ It's hard to imagine a situation in which you'd want to treat that as an unknown fact about an absent female rather than a known fact about the household. The question about zeroes is hard to understand: are you asking whether e.g. no years of education is an implausible value, or 0 might be used to code a missing value? (And then how would I know?) There's certainly no general reason to treat 0 as indicating missingness. $\endgroup$
    – Scortchi
    Commented Jun 24, 2014 at 8:37
  • $\begingroup$ @Scortchi: About the female age variable, I see what you mean. But the issue than becomes: how would I code the absent female case if not as NA? About zeroes: yes, that was exactly my question, sorry if it was not clear. I thought that the program might have some problem in handling zero values and that it might not 'understand' what I meant with it. $\endgroup$
    – Puzzled
    Commented Jun 24, 2014 at 12:10
  • $\begingroup$ You could code it as any constant value & introduce an indicator variable for presence/absence (& use group LASSO). No reason why LASSO or any other regression program should handle zero values for predictors wrongly. [Please don't take this the wrong way, but these are very basic questions, suggesting that if this is for fun you might want to start off with simpler problems, or that if it's for real you might want to consult a statistician.] $\endgroup$
    – Scortchi
    Commented Jun 24, 2014 at 13:04

3 Answers 3

17
$\begingroup$

When a continuous predictor $x$ contains 'not applicable' values it's often useful to code it using two variables:

$$ x_1=\Big{\{} \begin{array}{ll} c & \text{when $x$ is not applicable}\\ x & \text{otherwise} \end{array} \Bigg{.} $$

where $c$ is a constant, &

$$ x_2=\Big{\{} \begin{array}{ll} 1 & \text{when $x$ is not applicable}\\ 0 & \text{otherwise} \end{array} \Bigg{.} $$

Suppose the linear predictor for the response is given by

$$\eta = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots$$

which resolves to

$$\eta = \beta_0 + \beta_1 x_1 + \ldots$$

when $x$ is measured, or to

$$\eta = \beta_0 + \beta_1 c + \beta_2 + \ldots$$

when $x$ is 'not applicable'. The choice of $c$ is arbitrary, & does not affect the estimates of the intercept $\beta_0$ or the slope $\beta_1$; $\beta_2$ describes the effect of $x$'s being 'not applicable' compared to when $x=c$.

This isn't a suitable approach when the response varies according to an unknown value of $x$: the variability of the 'missing' group will be inflated, & estimates of other predictors' coefficients biased owing to confounding. Better to impute missing values.

Use of LASSO introduces two problems:

  1. The choice of $c$ affects the results as the amount of shrinkage applied depends on the magnitudes of the coefficient estimates.
  2. You need to ensure that $x_1$ & $x_2$ are either both in or both out of the model selected.

You can solve both of these by using rather the group LASSO with a group comprising $x_1$ & $x_2$: the $L_1$-norm penalty is applied to the $L_2$-norm of the orthonormalized matrix $\left[\vec{x_1}\ \vec{x_2}\right]$. (Categorical predictors are the poster child for group LASSO—you'd just code 'not applicable' as a separate level, as often done in unpenalized regression.) See Meier et al (2008), JRSS B, 70, 1, "The group lasso for logistic regression" & the R package grplasso.

$\endgroup$
4
  • $\begingroup$ Does anyone know if R's glmnet package supports group LASSO? If not, would anyone suggest another one that does that in combination with logistic regression? Several options mentioning group LASSO can be found in CRAN repository, any suggestions of the most appropriate for my case? Maybe SGL? $\endgroup$
    – Puzzled
    Commented Jun 30, 2014 at 13:03
  • $\begingroup$ So, would you say that if I use group LASSO, I would be able to use the approach you suggest to continuous predictors also to categorical predictors? $\endgroup$
    – Puzzled
    Commented Jun 30, 2014 at 22:42
  • $\begingroup$ @Scortchi - can you cite a reference on using group lasso in this way? $\endgroup$
    – rnoodle
    Commented Nov 11 at 17:01
  • $\begingroup$ @rnoodle: Specifically with a predictor composed of a continuous measurement and an N/A flag? - nothing comes to mind. Groups are commonly specified according to subject-matter considerations (e.g. a common genetic pathway) or structural considerations (e.g. a polynomial basis function for a continuous measurement), & this is an example of the latter. $\endgroup$
    – Scortchi
    Commented Nov 12 at 9:45
8
$\begingroup$

Multiple Imputation is never a bad approach. You could also do Full Information Maximum Likelihood. Good review and comparison here and here.

But if you're going that route, consider using Stan to fit the ML imputation simultaneously with your regression as a single Bayesian model, since LASSO is a special case of Bayesian regression anyway.

$\endgroup$
4
  • $\begingroup$ I had misunderstood the multiple imputation method, now I see that it would be applicable for my case. I edited my question in order to reflect this. Do you know if either SPSS or R run two options that you mentioned? $\endgroup$
    – Puzzled
    Commented Jun 23, 2014 at 0:44
  • 1
    $\begingroup$ There's an R package mi that might help you. $\endgroup$ Commented Jun 23, 2014 at 1:40
  • 2
    $\begingroup$ You can run Stan through R (see RStan). $\endgroup$
    – Scortchi
    Commented Jun 23, 2014 at 9:16
  • $\begingroup$ Additional multiple imputation packages for R include Amelia and mice. $\endgroup$
    – Sycorax
    Commented Sep 4, 2014 at 14:42
1
$\begingroup$

The CATREG command in Statistics handles missing data with LASSO. You can exclude cases listwise or have the procedure impute Although it's name suggests that it is for categorical variables, you can set the scale to Numeric to handle the continuous case.

$\endgroup$
2
  • $\begingroup$ this is SAS PROC CATREG, I'm guessing? $\endgroup$
    – Ben Bolker
    Commented Jun 21, 2014 at 22:05
  • $\begingroup$ @JKP: I had come across this command, actually. However, considering that my outome variable is binary, I am assuming logisic regression would be more appropriate than categorical regression (CATREG) - am I right? Also, the options in CATREG seem rather limited - you can only choose between excluding cases, replacing missing values with mean values or creating an extra category. $\endgroup$
    – Puzzled
    Commented Jun 23, 2014 at 0:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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