Help using Base SAS procedures

Why would PROC LOGISTIC set parameters to 0?

Reply
N/A
Posts: 0

Why would PROC LOGISTIC set parameters to 0?

I ran PROC LOGISTIC , ( all of my predictors were categorical) my model being:
MODEL PASS (EVENT ='1') =

DEV_SMITH
DEV_JONES
DEV_WILL
GEN_JACKSON
GEN_DAVIS
GEN_CORNELL
;

In the output I got this message:

Note: The following parameters have been set to 0, since the variables are a linear combination of other variables as shown.

DEV_WILL = Intercept - DEV_SMITH - DEV_JONES
GEN_CORNELL = Intercept - GEN_JACKSON - GEN_DAVIS

I want to interpret this to mean that there was multicollinearity between the independent predictors and SAS discovered it and eliminated the variables as a result. i.e. 'fixing the problem'.

Is this correct, or do I have something else to worry about?
Thanks.
Trusted Advisor
Posts: 2,113

Re: Why would PROC LOGISTIC set parameters to 0?

It goes beyond multicollinearity to an algebraic identity.
Contributor n6
Contributor
Posts: 62

Re: Why would PROC LOGISTIC set parameters to 0?

It means that since the values for GEN JACKSON and GEN DAVIS along with the Intercept completely determine the value of GEN CORNELL, having a term for GEN CORNELL in the model is redundant. GEN CORNELL will serve as the referent and the results for GEN JACKSON tells how GEN JACKSON differs from GEN CORNELL. If the results for GEN JACKSON are significant then it does not mean that GEN JACKSON is different from 0 but rather than GEN JACKSON is different from GEN CORNELL.

If you wanted to, instead of putting three variables for GEN in the model, you could have one variable named GEN (or whatever) that has three values (JACKSON, DAVIS and CORNELL). Then you could put that variable in a class statement and also in the model. You'd have

class gen;
model PASS (EVENT ='1') = gen;

If you wanted to use reference cell coding you could change the class statement to

class gen / param=ref;

I think this will automatically make the highest value of the variable be the referent, which in this case is GEN JACKSON (because JACKSON comes alphabetically later than DAVIS or CORNELL).

If instead you wanted CORNELL to be the referent you could use

class gen (ref=first) / param=ref;

And if you wanted the middle value of the three, DAVIS, to be the referent then there is a way to do that too but I forget right now. It's in the SAS documentation though.
Ask a Question
Discussion stats
  • 2 replies
  • 1200 views
  • 0 likes
  • 3 in conversation