Hello,
I am trying to run a logistic regression and several of my observations were automatically deleted because they had missing values for the explanatory variables. Is there a way to avoid this?
Thanks!
To avoid loosing cases when independent variables are missing you can try creating categorical variables and add missing category for that variable.
For example, if you have 200 cases and 20 are missing for a variable with 2 levels A (n=100) and B (n=80), you can create a new variable with levels A (n=100), B (n=20), and Missing (n=20). This way you do not need to impute (prone to bias), and you make full use of your sample. Make sure that you do not set as the reference category the "Missing" level. This way, you also adjust for missingness in that particular variable (missing values might be non-random).
For missing values in the dependent....there's nothing easy to do in my opinion (I once used a sort of propensity score estimating the likelihood of being missing in the dependent variables for each case and then used it as a covariate in my logistic regression).
What would you expect SAS to do with the missing values?
You could impute them but that has issues of its own.
I'd like SAS to ignore the missing values instead of deleting a participant for having a missing value for a predictive variable.
I've lost about 20% of my participants in the analysis because they have missing values for some (non-outcome) variable.
Hi.
You could run
proc mi data = your_data;
var your_list_of_variables;
Ods Output MissPattern = miss_pattern;
run;
to get the pattern of missingness in your data. So then, you could run your model without the variable that has lots of missing (if it's not the most important predictor)
Or you could impute.
To avoid loosing cases when independent variables are missing you can try creating categorical variables and add missing category for that variable.
For example, if you have 200 cases and 20 are missing for a variable with 2 levels A (n=100) and B (n=80), you can create a new variable with levels A (n=100), B (n=20), and Missing (n=20). This way you do not need to impute (prone to bias), and you make full use of your sample. Make sure that you do not set as the reference category the "Missing" level. This way, you also adjust for missingness in that particular variable (missing values might be non-random).
For missing values in the dependent....there's nothing easy to do in my opinion (I once used a sort of propensity score estimating the likelihood of being missing in the dependent variables for each case and then used it as a covariate in my logistic regression).
Would you mind explaining the new variable with the levels A(n=100), B(n=20?? or 80??), and missing(n=20)? Do I replace the new variable for the original variable or I use both of them in my regression? Also, if I'm doing multinomial logistic regression, can I use this method for more than more variables? Thanks many in advance.
@Lneri's suggestion is equivalent to creating a "missing level" for a categorical variable. You don't need to create the dummy variables manually as Lneri suggests. You can use the MISSING option on the CLASS statement in PROC LOGISTIC. This treats the missing values in classification variables as valid values.
Yes. But it's not simple. It's called multiple imputation. It involves replacing your dataset with multiple datasets where the missing values are replaced with random values and then combining the multiple parameter estimates. The MI and MIANALYZE procedures do just that.
hth
PG
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.