Subscribe Bookmark RSS Feed

How can I calculate the VIF for the nth nominal factor?

joe_clearsign_c

Community Trekker

Joined:

Feb 27, 2015

When JMP reports on nominal factors in the Expanded Estimates table, all coefficients are visible.  However, the Expanded Estimates table does not contain VIFs as an output option.  The Parameter Estimates table does, however, it only reports VIFs for n-1 nominal factors.  One can find the remaining estimate by simply assuring that the nominal coefficients sum to zero in accordance with JMPs convention.  How does one calculate the VIF for the nth factor?

1 ACCEPTED SOLUTION

Accepted Solutions
Solution

Thanks for your question, Joe.  The VIF calculation uses JMP's coding for levels of nominal variables.  As you know, VIF for a predictor is defined as 1/(1 - RSq), where RSq is the RSquare value for a regression of that predictor on all other predictors. Now another useful fact is that it is easy to obtain JMP's coding for nominal variables. You can do this in Fit Model.

Let's take Hollywood Movies,jmp, found in the Sample Data folder, as an example. Go to Analyze > Fit Model and enter World Gross as Y and Genre as the single nominal model effect. Change the Emphasis to Minimal Report and click Run. Open the Parameter Estimates report. There are eight levels of Genre and you will see seven model terms of the form Genre[].  There are the seven (continuous) indicator variables that represent the nominal variable Genre.

From the red triangle menu, select Save Columns > Save Coding Table. The seven columns for Genre[] show their effect coding. (This coding is described in the documentation. Go to Help > Books > Fitting Linear Models and search for the section "Coding for Nominal Effects".)

Now, back to the Parameter Estimates table. Right-click in the table and select Columns > VIF. Let's obtain the VIF for Genre[Action], which is 1.608246.

Make the coding table active. Go to Analyze > Fit Model.  Enter Genre[Action] as Y and the six remaining Genre[] variables as the effects.  Click Run. Your RSquare value is 0.378205.  Calculate 1/(1 - 0.378205) and you obtain the VIF for Genre[Action], 1.608246.

5 REPLIES
joe_clearsign_c

Community Trekker

Joined:

Feb 27, 2015

By the way, coding with dummy factors (in any combination) does not yield the same VIFs as JMP derives for nominal factors.  I have consulted the JMP manuals, but I could find no clear documentation of how JMP calculates VIFs for nominal factors.  My presumption is that one can use n-1 independent dummy variables, regress each against all other model factors and derive VIFs in the usual way from the r^2s generated.  This does not however, generate the same VIFs JMP reports and I can find no combination of dummy factors that will do so.

Solution

Thanks for your question, Joe.  The VIF calculation uses JMP's coding for levels of nominal variables.  As you know, VIF for a predictor is defined as 1/(1 - RSq), where RSq is the RSquare value for a regression of that predictor on all other predictors. Now another useful fact is that it is easy to obtain JMP's coding for nominal variables. You can do this in Fit Model.

Let's take Hollywood Movies,jmp, found in the Sample Data folder, as an example. Go to Analyze > Fit Model and enter World Gross as Y and Genre as the single nominal model effect. Change the Emphasis to Minimal Report and click Run. Open the Parameter Estimates report. There are eight levels of Genre and you will see seven model terms of the form Genre[].  There are the seven (continuous) indicator variables that represent the nominal variable Genre.

From the red triangle menu, select Save Columns > Save Coding Table. The seven columns for Genre[] show their effect coding. (This coding is described in the documentation. Go to Help > Books > Fitting Linear Models and search for the section "Coding for Nominal Effects".)

Now, back to the Parameter Estimates table. Right-click in the table and select Columns > VIF. Let's obtain the VIF for Genre[Action], which is 1.608246.

Make the coding table active. Go to Analyze > Fit Model.  Enter Genre[Action] as Y and the six remaining Genre[] variables as the effects.  Click Run. Your RSquare value is 0.378205.  Calculate 1/(1 - 0.378205) and you obtain the VIF for Genre[Action], 1.608246.

joe_clearsign_c

Community Trekker

Joined:

Feb 27, 2015

Merci beaucoup, Marie!  That does the trick.

marie_gaudard

Community Trekker

Joined:

Jan 14, 2015

Bienvenue, Joe! I'm glad it helped. The ability to save the coding table is wonderful.

marie_gaudard

Community Trekker

Joined:

Jan 14, 2015

Your interest suggests that you are going to use some of the indicator variables that JMP uses for nominal variable coding as terms in a regression model. I'm not sure how you are planning to determine which terms are used.  If you use Stepwise, then Make Model and Run Model will construct useful terms and include those terms in the model so that you can obtain VIFs in the usual way.

Take Hollywood Movies.jmp, found in the Sample Data folder, as an example. Go to Analyze > Fit Model and enter World Gross as Y and add Genre and Production Budget as effects. Change the Personality to Stepwise and click Run. In the Stepwise Regression Control outline, click Go.  Two effects constructed from levels of Genre are entered. Click Run Model. Columns that show the coding for those effects are added to the data table and you can obtain their VIFs in the Parameter Estimates report.

If you are simply interested in seeing how to obtain the VIF for the nth level of an n-level nominal factor, you can do that by using Value Ordering.  But keep in mind that one of the other levels has to be left out of the analysis.  This is because the coded term for the nth level is a linear combination of the terms for the other n - 1 levels.

Let's look at the Hollywood Movies example again with Genre as the single effect. Go to Analyze > Fit Model and enter World Gross as Y and Genre as the single nominal model effect. Change the Emphasis to Minimal Report and click Run. Open the Parameter Estimates report. You see the seven (continuous) indicator variables that represent the nominal variable Genre. (Note that one level of Genre, Adventure, has World Gross missing, so is not used in the analysis.) The missing level is Thriller. 

To include Genre[Thriller], apply the Value Ordering column property to Genre.  In the dialog for Value Ordering, select Thriller and move it up one line in the list. Now rerun Fit Model. Genre[Thriller] appears in the Parameter Estimates list and you can obtain its VIF.