|
|
|
||||
|
|
|||||
Chapter Outline
5.1 Simple Coding
5.2 Forward Difference Coding
5.3 Backward Difference Coding
5.4 Helmert Coding
5.5 Reverse Helmert Coding
5.6 Deviation Coding
5.7 Orthogonal Polynomial
Coding
5.8 User-Defined Coding
5.9 Summary
5.10 For more information
Introduction
Categorical variables require special attention in regression analysis because,
unlike dichotomous or continuous variables, they cannot by entered into the
regression equation just as they are. For example, if you have a
variable called race that is coded 1 = Hispanic, 2 = Asian 3 = Black 4 =
White,
then entering race in your regression will look at the linear
effect of race, which is probably not what you intended. Instead, categorical variables like this need to be
recoded into a series of variables which can then be
entered into the regression model. There are a variety of coding systems that can be used when
coding categorical
variables. Ideally, you would choose a
coding system that reflects the comparisons that you want to make. In Chapter
3 of the Regression with SPSS Web Book
we covered the use of categorical variables in regression analysis focusing on
the use of dummy variables, but that is not the only coding scheme that you can
use. For example,
you may want to compare each level to the next higher
level, in which case you would want to use "forward difference" coding, or you
might want to compare each level to the mean of the subsequent levels of the
variable, in which case you would want to use "Helmert" coding. By
deliberately choosing a coding system, you can obtain comparisons that are most
meaningful for testing your hypotheses. Regardless of the coding system you choose, the
test of the overall effect
of the categorical variable (i.e., the overall effect of race) will remain the same.
Below is a table listing various types of contrasts and the
comparison that they make.
| Name of contrast | Comparison made |
| Simple Coding | Compares each level of a variable to the reference level |
| Forward Difference Coding | Adjacent levels of a variable (each level minus the next level) |
| Backward Difference Coding | Adjacent levels of a variable (each level minus the prior level) |
| Helmert Coding | Compare levels of a variable with the mean of the subsequent levels of the variable |
| Reverse Helmert Coding | Compares levels of a variable with the mean of the previous levels of the variable |
| Deviation Coding | Compares deviations from the grand mean |
| Orthogonal Polynomial Coding | Orthogonal polynomial contrasts |
| User-Defined Coding | User-defined contrast |
There are a couple of notes to be made about the coding systems listed above. The first is that they represent planned comparisons and not post hoc comparisons. In other words, they are comparisons that you plan to do before you begin analyzing your data, not comparisons that you think of once you have seen the results of preliminary analyses. Also, some forms of coding make more sense with ordinal categorical variables than with nominal categorical variables. Below we will show examples using race as a categorical variable, which is a nominal variable. Because simple effect coding compares the mean of the dependent variable for each level of the categorical variable to the mean of the dependent variable at for the reference level, it makes sense with a nominal variable. However, it may not make as much sense to use a coding scheme that tests the linear effect of race. As we describe each type of coding system, we note those coding systems with which it does not make as much sense to use a nominal variable. Also, you may notice that we follow several rules when creating the contrast coding schemes. For more information about these rules, please see the section on User-Defined Coding.
This page will illustrate three ways that you can conduct analyses using these coding schemes: 1) using the glm command with /lmatrix to define "contrast" coefficients that specify levels of the categorical variable that are to be compared, 2) using the glm command with /contrast to specify one of the SPSS predefined coding schemes, or 3) using regression. When using regression to do contrasts, you first need to create k-1 new variables (where k is the number of levels of the categorical variable) and use these new variables as predictors in your regression model. While methods 1 and 3 both involve manually specifying "contrasts", method 1 uses a type of coding we will call "contrast coding"; method 3 uses a type of coding we will call "regression coding".
There are benefits and drawbacks of each of these three methods. For example, methods 1 and 3 allow you to manually code the contrasts and give you absolute control over the coding, but the drawback is that it is relatively easy to make an error in the coding. By contrast, method 2 automates the process by letting SPSS do the coding for you, but you are limited to just the pre-defined coding schemes that SPSS has created. Method 3 can be the most difficult, but it can be used with any kind of regression procedure.
The Example Data File
The examples in this page will use dataset called hsb2.sav and we will focus on the categorical variable race, which has four levels (1 = Hispanic, 2 = Asian, 3 = African American and 4 = white) and we will use write as our dependent variable. Although our example uses a variable with four levels, these coding systems work with variables that have more or fewer categories. No matter which coding system you select, you will always have one fewer recoded variables than levels of the original variable. In our example, our categorical variable has four levels so we will have three new variables (a variable corresponding to the final level of the categorical variables would be redundant and therefore unnecessary).
Before considering any analyses, let's look at the mean of the dependent variable, write, for each level of race. This will help in interpreting the output from later analyses.
means tables = write by race.
| Cases | ||||||
|---|---|---|---|---|---|---|
| Included | Excluded | Total | ||||
| N | Percent | N | Percent | N | Percent | |
| writing score * RACE | 200 | 100.0% | 0 | .0% | 200 | 100.0% |
| RACE | Mean | N |
|---|---|---|
| hispanic | 46.4583 | 24 |
| asian | 58.0000 | 11 |
| african-amer | 48.2000 | 20 |
| white | 54.0552 | 145 |
| Total | 52.7750 | 200 |
The results of simple coding are very similar to dummy coding in that each level is compared to the reference level. In the example below, level 4 is the reference level and the first comparison compares level 1 to level 4, the second comparison compares level 2 to level 4, and the third comparison compares level 3 to level 4.
Method 1: GLM with /LMATRIX
The table below shows the simple coding making the comparisons described above. The first contrast compares level 1 to level 4, and level 1 is coded as 1 and level 4 is coded as -1. Likewise, the second contrast compares level 2 to level 4 by coding level 2 as 1 and level 4 as -1. As you can see with contrast coding, you can discern the meaning of the comparisons simply by inspecting the contrast coefficients. For example, looking at the contrast coefficients for c3, you can see that it compares level 3 to level 4.
SIMPLE contrast coding
| Level of race | New variable 1 (c1) | New variable 2 (c2) | New variable 3 (c3) |
| 1 (Hispanic) | 1 | 0 | 0 |
| 2 (Asian) | 0 | 1 | 0 |
| 3 (African American) | 0 | 0 | 1 |
| 4 (white) | -1 | -1 | -1 |
Below we illustrate how to form these comparisons using the glm command with /lmatrix. As you see, a separate /lmatrix subcommand is used for each contrast.
glm write by race /lmatrix "level 1 versus level 4" race 1 0 0 -1 /lmatrix "level 2 versus level 4" race 0 1 0 -1 /lmatrix "level 3 versus level 4" race 0 0 1 -1.
Each of the above /lmatrix subcommands produced two tables shown below, "Contrast Results (K Matrix)" and "Test Results". The contrast estimate for the first contrast compares the mean of the dependent variable, write, for levels 1 and 4 yielding -7.597 and is statistically significant (p<.000). The F-value associated with this test is given in the "Test Results" table and is 14.590. The p-value given in the "Contrast Results (K Matrix)" table and the p-value in the "Test Results" table are the same because they both refer to the same test of the contrast coefficient to zero. The results of the second contrast, comparing the mean of write for levels 2 and 4 is not statistically significant (F = 1.953, p = .164), while the third contrast is statistically significant.
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -7.597 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -7.597 | ||
| Std. Error | 1.989 | ||
| Sig. | .000 | ||
| 95% Confidence Interval for Difference | Lower Bound | -11.519 | |
| Upper Bound | -3.675 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 1 versus group 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 1188.388 | 1 | 1188.388 | 14.590 | .000 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | 3.945 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 3.945 | ||
| Std. Error | 2.823 | ||
| Sig. | .164 | ||
| 95% Confidence Interval for Difference | Lower Bound | -1.622 | |
| Upper Bound | 9.511 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 2 versus group 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 159.108 | 1 | 159.108 | 1.953 | .164 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 3 versus group 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 602.550 | 1 | 602.550 | 7.398 | .007 |
| Error | 15964.717 | 196 | 81.453 |
Method 2: GLM with /CONTRAST
Instead of using the /lmatrix subcommand, we can achieve the same results using the /contrast subcommand with the glm command. Instead of specifying the numbers to be used in the contrast as we did above, we can simply type in the name of the contrast that we wish to use, and SPSS will do the coding for us. We will use the /print = test(lmatrix) subcommand to have SPSS print out the coding scheme that it used to make the contrasts. You will notice that the table entitled "Contrast Coefficients (L' Matrix)" is the same as the table we used in method 1 above.
glm write by race /contrast (race)=simple /print = test(lmatrix).
As you see in the output below, the table titled "Contrast Coefficients (L' Matrix)" shows the coding scheme that was used for each comparison. The table entitled "Contrast Results (K Matrix)" shows the results of the various contrasts. In our example, the difference between level 1 of race and level 4 of race is statistically significant. You will notice that the contrast estimate is the difference between the mean for the dependent variable for the first level minus the mean of the dependent variable for the omitted level. In other words, the mean for level 1 minus the mean for level 4 which is 46.4583 - 54.0552 = -7.597. The row labeled "Sig." is .000, indicating that this difference is significant, and this is followed by a confidence interval for the difference. The next part of the table compares level 2 of race and level 4 of race and shows that this difference is not statistically significant and the next part of the table shows the difference between level 3 of race and level 4 of race is statistically significant. You might note that while the significance ("Sig.") is given for each of these tests, there is no "t" value, but you could obtain this by dividing the "Contrast Estimate" by the "Std. Error", i.e., -7.597 / 1.989.
The table entitled "Test Results" indicates that the test of the overall effect race is statistically significant. In other words, it is a test of all of the contrasts taken together.
| RACE Simple Contrast(a) | |||
|---|---|---|---|
| Parameter | Level 1 vs. Level 4 | Level 2 vs. Level 4 | Level 3 vs. Level 4 |
| Intercept | 0 | 0 | 0 |
| [RACE=1.00] | 1 | 0 | 0 |
| [RACE=2.00] | 0 | 1 | 0 |
| [RACE=3.00] | 0 | 0 | 1 |
| [RACE=4.00] | -1 | -1 | -1 |
| The default display of this matrix is the transpose of the corresponding L matrix. | |||
| a Reference category = 4 | |||
| Dependent Variable | |||
|---|---|---|---|
| RACE Simple Contrast(a) | writing score | ||
| Level 1 vs. Level 4 | Contrast Estimate | -7.597 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -7.597 | ||
| Std. Error | 1.989 | ||
| Sig. | .000 | ||
| 95% Confidence Interval for Difference | Lower Bound | -11.519 | |
| Upper Bound | -3.675 | ||
| Level 2 vs. Level 4 | Contrast Estimate | 3.945 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 3.945 | ||
| Std. Error | 2.823 | ||
| Sig. | .164 | ||
| 95% Confidence Interval for Difference | Lower Bound | -1.622 | |
| Upper Bound | 9.511 | ||
| Level 3 vs. Level 4 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
| a Reference category = 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 1914.158 | 3 | 638.053 | 7.833 | .000 |
| Error | 15964.717 | 196 | 81.453 |
Method 3: Regression
The regression coding is a bit more complex than contrast coding. In our example below, level 4 is the reference level and x1 compares level 1 to level 4, x2 compares level 2 to level 4, and x3 compares level 3 to level 4. For x1 the coding is 3/4 for level 1, and -1/4 for all other levels. Likewise, for x2 the coding is 3/4 for level 2, and -1/4 for all other levels, and for x3 the coding is 3/4 for level 3, and -1/4 for all other levels. It is not intuitive that this regression coding scheme yields these comparisons; however, if you desire simple comparisons, you can follow this general rule to obtain these comparisons.
SIMPLE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| 1 (Hispanic) | 3/4 | -1/4 | -1/4 |
| 2 (Asian) | -1/4 | 3/4 | -1/4 |
| 3 (African American) | -1/4 | -1/4 | 3/4 |
| 4 (white) | -1/4 | -1/4 | -1/4 |
Below we show the more general rule for creating this kind of coding scheme using regression coding, where k is the number of levels of the categorical variable (in this instance, k=4).
SIMPLE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| 1 (Hispanic) | (k-1) / k | -1 / k | -1 / k |
| 2 (Asian) | -1 / k | (k-1) / k | -1 / k |
| 3 (African American) | -1 / k | -1 / k | (k-1) / k |
| 4 (white) | -1 / k | -1 / k | -1 / k |
Below we illustrate how to create x1, x2 and x3 and enter these new variables into the regression model using the regression command.
if race = 1 x1 = 3/4. if any(race,2,3,4) x1 = -1/4. if race = 2 x2 = 3/4. if any(race,1,3,4) x2 = -1/4. if race = 3 x3 = 3/4. if any(race,1,2,4) x3 = -1/4. execute.
regression /dependent = write /method = enter x1 x2 x3.
You will notice that the regression coefficients in the table below are the same as the contrast coefficients that we saw using the glm command. Both the regression coefficient for x1 and the contrast estimate for c1 are the mean of write for level 1 of race (Hispanic) minus the mean of write for level 4 (white). Likewise, the regression coefficient for x2 and the contrast estimate for c2 are the mean of write for level 2 (Asian) minus the mean of write for level 4 (white). The F-value shown in the glm output is the square of the t-value shown in the regression table below. You also can see that the significance levels are also the same as those from the glm output.
| Unstandardized Coefficients | Standardized Coefficients | t | Sig. | |||
|---|---|---|---|---|---|---|
| Model | B | Std. Error | Beta | |||
| 1 | (Constant) | 51.678 | .982 | 52.619 | .000 | |
| X1 | -7.597 | 1.989 | -.261 | -3.820 | .000 | |
| X2 | 3.945 | 2.823 | .095 | 1.398 | .164 | |
| X3 | -5.855 | 2.153 | -.186 | -2.720 | .007 | |
| a Dependent Variable: writing score | ||||||
In this coding system, the mean of the dependent variable for one level of the categorical variable is compared to the mean of the dependent variable for the next (adjacent) level. In our example below, the first comparison compares the mean of write for level 1 with the mean of write for level 2 of race (Hispanics minus Asians). The second comparison compares the mean of write for level 2 minus level 3, and the third comparison compares the mean of write for level 3 minus level 4. This type of coding may be useful with either a nominal or an ordinal variable.
Method 1: GLM with /LMATRIX
FORWARD DIFFERENCE contrast coding
| Level of race | New variable 1 (c1) | New variable 2 (c2) | New variable 3 (c3) |
| Level 1 v. Level 2 | Level 2 v. Level 3 | Level 3 v. Level 4 | |
| 1 (Hispanic) | 1 | 0 | 0 |
| 2 (Asian) | -1 | 1 | 0 |
| 3 (African American) | 0 | -1 | 1 |
| 4 (white) | 0 | 0 | -1 |
glm write by race /lmatrix "level 1 versus level 2" race 1 -1 0 0 /lmatrix "level 2 versus level 3" race 0 1 -1 0 /lmatrix "level 3 versus level 4" race 0 0 1 -1.
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -11.542 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -11.542 | ||
| Std. Error | 3.286 | ||
| Sig. | .001 | ||
| 95% Confidence Interval for Difference | Lower Bound | -18.022 | |
| Upper Bound | -5.061 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 1 versus group 2 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 1004.785 | 1 | 1004.785 | 12.336 | .001 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | 9.800 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 9.800 | ||
| Std. Error | 3.388 | ||
| Sig. | .004 | ||
| 95% Confidence Interval for Difference | Lower Bound | 3.119 | |
| Upper Bound | 16.481 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 2 versus group 3 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 681.574 | 1 | 681.574 | 8.368 | .004 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 3 versus group 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 602.550 | 1 | 602.550 | 7.398 | .007 |
| Error | 15964.717 | 196 | 81.453 |
With this coding system, adjacent levels of the categorical variable are compared. Hence, the mean of the dependent variable at level 1 is compared to the mean of the dependent variable at level 2: 46.4583 - 58 = -11.542, which is statistically significant. For the comparison between levels 2 and 3, the calculation of the contrast coefficient would be 58 - 48.2 = 9.8, which is also statistically significant. Finally, comparing levels 3 and 4, 48.2 - 54.0552 = -5.855, a statistically significant difference. One would conclude from this that each adjacent level of race is statistically significantly different.
Method 2: GLM with /CONTRAST
As with the previous examples, we will conduct the above analysis again, this time using the /contrast(race)=repeated subcommand to request forward difference contrasts. You can compare the results below to those above to verify that the results are identical to those obtained using the /lmatrix subcommand.
glm write by race /contrast (race)=repeated /print = test(lmatrix).
| RACE Repeated Contrast | |||
|---|---|---|---|
| Parameter | Level 1 vs. Level 2 | Level 2 vs. Level 3 | Level 3 vs. Level 4 |
| Intercept | 0 | 0 | 0 |
| [RACE=1.00] | 1 | 0 | 0 |
| [RACE=2.00] | -1 | 1 | 0 |
| [RACE=3.00] | 0 | -1 | 1 |
| [RACE=4.00] | 0 | 0 | -1 |
| The default display of this matrix is the transpose of the corresponding L matrix. | |||
| Dependent Variable | |||
|---|---|---|---|
| RACE Repeated Contrast | writing score | ||
| Level 1 vs. Level 2 | Contrast Estimate | -11.542 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -11.542 | ||
| Std. Error | 3.286 | ||
| Sig. | .001 | ||
| 95% Confidence Interval for Difference | Lower Bound | -18.022 | |
| Upper Bound | -5.061 | ||
| Level 2 vs. Level 3 | Contrast Estimate | 9.800 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 9.800 | ||
| Std. Error | 3.388 | ||
| Sig. | .004 | ||
| 95% Confidence Interval for Difference | Lower Bound | 3.119 | |
| Upper Bound | 16.481 | ||
| Level 3 vs. Level 4 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
Again, we see that the results are the same as those obtained using the /lmatrix subcommand: all three comparisons are statistically significant.
Method 3: Regression
For the first comparison, where the first and second levels are compared, x1 is coded 3/4 for level 1 and the other levels are coded -1/4. For the second comparison where level 2 is compared with level 3, x2 is coded 1/2 1/2 -1/2 -1/2, and for the third comparison where level 3 is compared with level 4, x3 is coded 1/4 1/4 1/4 -3/4.
FORWARD DIFFERENCE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| Level 1 v. Level 2 | Level 2 v. Level 3 | Level 3 v. Level 4 | |
| 1 (Hispanic) | 3/4 | 1/2 | 1/4 |
| 2 (Asian) | -1/4 | 1/2 | 1/4 |
| 3 (African American) | -1/4 | -1/2 | 1/4 |
| 4 (white) | -1/4 | -1/2 | -3/4 |
The general rule for this regression coding scheme is shown below, where k is the number of levels of the categorical variable (in this case k=4).
FORWARD DIFFERENCE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| Level 1 v. Level 2 | Level 2 v. Level 3 | Level 3 v. Level 4 | |
| 1 (Hispanic) | (k-1)/k | (k-2)/k | (k-3)/k |
| 2 (Asian) | -1/k | (k-2)/k | (k-3)/k |
| 3 (African American) | -1/k | -2/k | (k-3)/k |
| 4 (white) | -1/k | -2/k | -3/k |
if race = 1 x1 = 3/4. if any(race,2,3,4) x1 = -1/4. if any(race,1,2) x2 = 1/2. if any(race,3,4) x2 = -1/2. if any(race,1,2,3) x3 = 1/4. if race = 4 x3 = -3/4. execute. regression /dep write /method = enter x1 x2 x3.
| Unstandardized Coefficients | Standardized Coefficients | t | Sig. | |||
|---|---|---|---|---|---|---|
| Model | B | Std. Error | Beta | |||
| 1 | (Constant) | 51.678 | .982 | 52.619 | .000 | |
| X1 | -11.542 | 3.286 | -.397 | -3.512 | .001 | |
| X2 | 9.800 | 3.388 | .394 | 2.893 | .004 | |
| X3 | -5.855 | 2.153 | -.277 | -2.720 | .007 | |
| a Dependent Variable: writing score | ||||||
You can see the regression coefficient for x1 is the mean of write for level 1 (Hispanic) minus the mean of write for level 2 (Asian). Likewise, the regression coefficient for x2 is the mean of write for level 2 (Asian) minus the mean of write for level 3 (African American), and the regression coefficient for x3 is the mean of write for level 3 (African American) minus the mean of write for level 4 (white).
5.3 Backward Difference Coding
In this coding system, the mean of the dependent variable for one level of the categorical variable is compared to the mean of the dependent variable for the prior adjacent level. In our example below, the first comparison compares the mean of write for level 2 with the mean of write for level 1 of race (Asians minus Hispanics). The second comparison compares the mean of write for level 3 minus level 2, and the third comparison compares the mean of write for level 4 minus level 3. This type of coding may be useful with either a nominal or an ordinal variable.
Method 1: GLM with /LMATRIX
BACKWARD DIFFERENCE contrast coding
| Level of race | New variable 1 (c1) | New variable 2 (c2) | New variable 3 (c3) |
| Level 1 v. Level 2 | Level 2 v. Level 3 | Level 3 v. Level 4 | |
| 1 (Hispanic) | -1 | 0 | 0 |
| 2 (Asian) | 1 | -1 | 0 |
| 3 (African American) | 0 | 1 | -1 |
| 4 (white) | 0 | 0 | 1 |
glm write by race /lmatrix "level 1 versus level 2" race -1 1 0 0 /lmatrix "level 2 versus level 3" race 0 -1 1 0 /lmatrix "level 3 versus level 4" race 0 0 -1 1.
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | 11.542 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 11.542 | ||
| Std. Error | 3.286 | ||
| Sig. | .001 | ||
| 95% Confidence Interval for Difference | Lower Bound | 5.061 | |
| Upper Bound | 18.022 | ||
| a Based on the user-specified contrast coefficients (L') matrix: level 1 versus level 2 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 1004.785 | 1 | 1004.785 | 12.336 | .001 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -9.800 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -9.800 | ||
| Std. Error | 3.388 | ||
| Sig. | .004 | ||
| 95% Confidence Interval for Difference | Lower Bound | - 16.481 | |
| Upper Bound | - 3.119 | ||
| a Based on the user-specified contrast coefficients (L') matrix: level 2 versus level 3 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 681.574 | 1 | 681.574 | 8.368 | .004 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | 5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | 1.610 | |
| Upper Bound | 10.101 | ||
| a Based on the user-specified contrast coefficients (L') matrix: level 3 versus level 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 602.550 | 1 | 602.550 | 7.398 | .007 |
| Error | 15964.717 | 196 | 81.453 |
With this coding system, adjacent levels of the categorical variable are compared, with each level compared to the prior level. Hence, the mean of the dependent variable at level 2 is compared to the mean of the dependent variable at level 1: 58-46.4583 = 11.542, which is statistically significant. For the comparison between levels 3 and 2, the calculation of the contrast coefficient is 48.2 - 58 = -9.8, which is also statistically significant. Finally, comparing levels 4 and 3, 54.0552 - 48.2 = 5.855, a statistically significant difference. One would conclude from this that each adjacent level of race is statistically significantly different.
Method 2: GLM with /CONTRAST
While SPSS has the /contrast (race)=repeated subcommand for comparing each level to the next level, it does not have an equivalent command for comparing each level to a prior level. This would need to be done via the /lmatrix subcommand, or by reversing the coding of the categorical variable.
Method 3: Regression
For the first comparison, where the first and second levels are compared, x1 is coded 3/4 for level 1 while the other levels are coded -1/4. For the second comparison where level 2 is compared with level 3, x2 is coded 1/2 1/2 -1/2 -1/2, and for the third comparison where level 3 is compared with level 4, x3 is coded 1/4 1/4 1/4 -3/4.
BACKWARD DIFFERENCE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| Level 2 v. Level 1 | Level 3 v. Level 2 | Level 4 v. Level 3 | |
| 1 (Hispanic) | - 3/4 | -1/2 | -1/4 |
| 2 (Asian) | 1/4 | -1/2 | -1/4 |
| 3 (African American) | 1/4 | 1/2 | -1/4 |
| 4 (white) | 1/4 | 1/2 | 3/4 |
The general rule for this regression coding scheme is shown below, where k is the number of levels of the categorical variable (in this case, k is 4).
BACKWARD DIFFERENCE regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| Level 1 v. Level 2 | Level 2 v. Level 3 | Level 3 v. Level 4 | |
| 1 (Hispanic) | -(k-1)/k | -(k-2)/k | -(k-3)/k |
| 2 (Asian) | 1/k | -(k-2)/k | -(k-3)/k |
| 3 (African American) | 1/k | 2/k | -(k-3)/k |
| 4 (white) | 1/k | 2/k | 3/k |
if race = 1 x1 = -3/4. if any(race,2,3,4) x1 = 1/4. if any(race,1,2) x2 = -1/2. if any(race,3,4) x2 = 1/2. if any(race,1,2,3) x3 = -1/4. if race = 4 x3 = 3/4. execute. regression /dep write /method = enter x1 x2 x3.
| Unstandardized Coefficients | Standardized Coefficients | t | Sig. | |||
|---|---|---|---|---|---|---|
| Model | B | Std. Error | Beta | |||
| 1 | (Constant) | 51.678 | .982 | 52.619 | .000 | |
| X1 | 11.542 | 3.286 | .397 | 3.512 | .001 | |
| X2 | -9.800 | 3.388 | -.394 | -2.893 | .004 | |
| X3 | 5.855 | 2.153 | .277 | 2.720 | .007 | |
| a Dependent Variable: writing score | ||||||
In the above example, the regression coefficient for x1 is the mean of write for level 2 minus the mean of write for level 1 (58- 46.4583 = 11.542). Likewise, the regression coefficient for x2 is the mean of write for level 3 minus the mean of write for level 2, and the regression coefficient for x3 is the mean of write for level 4 minus the mean of write for level 3.
Helmert coding compares each level of a categorical variable to the mean of the subsequent levels. Hence, the first contrast compares the mean of the dependent variable for level 1 of race with the mean of all of the subsequent levels of race (levels 2, 3, and 4), the second contrast compares the mean of the dependent variable for level 2 of race with the mean of all of the subsequent levels of race (levels 3 and 4), and the third contrast compares the mean of the dependent variable for level 3 of race with the mean of all of the subsequent levels of race (level 4). While this type of coding system does not make much sense with a nominal variable like race, it is useful in situations where the levels of the categorical variable are ordered say, from lowest to highest, or smallest to largest, etc.
For Helmert coding, we see that the first comparison comparing level 1 with levels 2, 3 and 4 is coded 1, -1/3, -1/3 and -1/3, reflecting the comparison of level 1 with all other levels. The second comparison is coded 0, 1, -1/2 and -1/2, reflecting that it compares level 2 with levels 3 and 4. The third comparison is coded 0, 0, 1 and -1, reflecting that level 3 is compared to level 4.
Method 1: GLM with /LMATRIX
HELMERT contrast coding
| Level of race | New variable 1 (c1) | New variable 2 (c2) | New variable 3 (c3) |
| Level 1 v. Later | Level 2 v. Later | Level 3 v. Later | |
| 1 (Hispanic) | 1 | 0 | 0 |
| 2 (Asian) | -1/3 | 1 | 0 |
| 3 (African American) | -1/3 | -1/2 | 1 |
| 4 (white) | -1/3 | -1/2 | -1 |
Below we illustrate how to form these comparisons using the glm command with /lmatrix. Note the use of fractions on the first /lmatrix subcommand. You cannot use .333 instead of 1/3: SPSS will give an error message and fail to calculate the contrast coefficient. The problem is that .333 + .333 + .333 - 1 is not sufficiently close to zero. (If you wanted to use decimals, you would need to use something like .333333 so that .333333 + .333333 + .333333 - 1 would be sufficiently close to zero.)
glm write by race /lmatrix "level 1 versus levels 2 3 and 4" race 1 -1/3 -1/3 -1/3. /lmatrix "level 2 versus levels 3 and 4" race 0 1 -1/2 -1/2. /lmatrix "level 3 versus level 4" race 0 0 1 -1.
The contrast estimate for the comparison between level 1 and the remaining levels is calculated by taking the mean of the dependent variable for level 1 and subtracting the mean of the dependent variable for levels 2, 3 and 4: 46.4583 - [(58 + 48.2 + 54.0552) / 3] = -6.960, which is statistically significant. This means that the mean of write for level 1 of race is statistically significantly different from the mean of write for levels 2 through 4. As noted above, this comparison probably is not meaningful because the variable race is nominal. This type of comparison would be more meaningful if the categorical variable was ordinal.
To calculate the contrast coefficient for the comparison between level 2 and the later levels, you subtract the mean of the dependent variable for levels 3 and 4 from the mean of the dependent variable for level 2: 58 - [(48.2 + 54.0552) / 2] = 6.872, which is statistically significant. The contrast estimate for the comparison between level 3 and level 4 is the difference between the mean of the dependent variable for the two levels: 48.2 - 54.0552 = -5.855, which is also statistically significant.
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -6.960 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -6.960 | ||
| Std. Error | 2.175 | ||
| Sig. | .002 | ||
| 95% Confidence Interval for Difference | Lower Bound | -11.250 | |
| Upper Bound | -2.670 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 1 versus groups 2 3 and 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 833.927 | 1 | 833.927 | 10.238 | .002 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | 6.872 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 6.872 | ||
| Std. Error | 2.926 | ||
| Sig. | .020 | ||
| 95% Confidence Interval for Difference | Lower Bound | 1.101 | |
| Upper Bound | 12.644 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 2 versus groups 3 and 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 449.240 | 1 | 449.240 | 5.515 | .020 |
| Error | 15964.717 | 196 | 81.453 |
| Dependent Variable | |||
|---|---|---|---|
| Contrast | writing score | ||
| L1 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
| a Based on the user-specified contrast coefficients (L') matrix: group 3 versus group 4 | |||
| Source | Sum of Squares | df | Mean Square | F | Sig. |
|---|---|---|---|---|---|
| Contrast | 602.550 | 1 | 602.550 | 7.398 | .007 |
| Error | 15964.717 | 196 | 81.453 |
Method 2: GLM with /CONTRAST
As with the previous examples, we will conduct the analysis above again, this time using the /contrast subcommand.
glm write by race /contrast (race)=helmert /print = test(lmatrix).
This output shows the three comparisons: the mean of write for level 1 of race to the mean of write for the other three levels (called "later" in this output), the mean of write for level 2 of race to the mean of write for the other two levels, etc. Again, all three comparisons are statistically significant.
| RACE Helmert Contrast | |||
|---|---|---|---|
| Parameter | Level 1 vs. Later | Level 2 vs. Later | Level 3 vs. Level 4 |
| Intercept | .000 | .000 | .000 |
| [RACE=1.00] | 1.000 | .000 | .000 |
| [RACE=2.00] | -.333 | 1.000 | .000 |
| [RACE=3.00] | -.333 | -.500 | 1.000 |
| [RACE=4.00] | -.333 | -.500 | -1.000 |
| The default display of this matrix is the transpose of the corresponding L matrix. | |||
| Dependent Variable | |||
|---|---|---|---|
| RACE Helmert Contrast | writing score | ||
| Level 1 vs. Later | Contrast Estimate | -6.960 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -6.960 | ||
| Std. Error | 2.175 | ||
| Sig. | .002 | ||
| 95% Confidence Interval for Difference | Lower Bound | -11.250 | |
| Upper Bound | -2.670 | ||
| Level 2 vs. Later | Contrast Estimate | 6.872 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | 6.872 | ||
| Std. Error | 2.926 | ||
| Sig. | .020 | ||
| 95% Confidence Interval for Difference | Lower Bound | 1.101 | |
| Upper Bound | 12.644 | ||
| Level 3 vs. Level 4 | Contrast Estimate | -5.855 | |
| Hypothesized Value | 0 | ||
| Difference (Estimate - Hypothesized) | -5.855 | ||
| Std. Error | 2.153 | ||
| Sig. | .007 | ||
| 95% Confidence Interval for Difference | Lower Bound | -10.101 | |
| Upper Bound | -1.610 | ||
Method 3: Regression
Below we see an example of Helmert regression coding. For the first comparison (comparing level 1 with levels 2, 3 and 4) the codes are 3/4 and -1/4 -1/4 -1/4. The second comparison compares level 2 with levels 3 and 4 and is coded 0 2/3 -1/3 -1/3. The third comparison compares level 3 to level 4 and is coded 0 0 1/2 -1/2.
HELMERT regression coding
| Level of race | New variable 1 (x1) | New variable 2 (x2) | New variable 3 (x3) |
| Level 1 v. Later | Level 2 v. Later | Level 3 v. Later | |
| 1 (Hispanic) | 3/4 | 0 | 0 |
| 2 (Asian) | -1/4 | 2/3 | 0 |
| 3 (African American) | -1/4 | -1/3 | 1/2 |
| 4 (white) | -1/4 | -1/3 | -1/2 |
Below we illustrate how to create x1, x2 and x3 and enter these new variables into the regression model using the regression command.
if race = 1 x1 = 3/4. if any(race,2,3,4) x1 = -1/4. if race = 1 x2 = 0. if race = 2 x2 = .667. if any(race,3,4) x2 = -1/3. if any(race,1,2) x3 = 0. if race = 3 x3 = 1/2. if race = 4 x3 = -1/2. execute. regression /dep write /method = enter x1 x2 x3.
As you see below, the regression coefficient for x1 is the mean of write for level 1 (Hispanic) versus all subsequent levels (levels 2, 3 and 4). Likewise, the regression coefficient for x2 is the mean of write for level 2 minus the mean of write for levels 3 and 4. Finally, the regression coefficient for x3 is the mean of write for level 3 minus the mean of write for level 4.
| Unstandardized Coefficients | Standardized Coefficients | t | Sig. | |||
|---|---|---|---|---|---|---|
| Model | B | Std. Error | Beta | |||
| 1 | (Constant) | 51.677 | .982 | 52.635 | .000 | |
| X1 | -6.958 | 2.175 | -.239 | -3.199 | .002 | |
| X2 | 6.872 | 2.926 | .177 | 2.348 | .020 | |
| X3 | -5.855 | 2.153 | -.204 | -2.720 | .007 | |
| a Dependent Variable: writing score | ||||||
Reverse Helmert coding (also know as difference coding) is just the opposite of Helmert coding: instead of comparing each level of categorical variable to the mean of the subsequent level(s), each is compared to the mean of the previous level(s). In our example, the first contrast codes the comparison of the mean of the dependent variable for level 2 of race to the mean of the dependent variable for level 1 of race. The second comparison compares the mean of the dependent variable level 3 of race with both levels 1 and 2 of race, and the third comparison compares the mean of the dependent variable for level 4 of race with levels 1, 2 and 3. Clearly, this coding system does not make much sense with our example of race because it is a nominal variable. However, this system is useful when the levels of the categorical variable are ordered in a meaningful way. For example, if we had a categorical variable in which work-related stress was coded as low, medium or high, then comparing the means of the previous levels of the variable would make more sense.
For reverse Helmert coding, we see that the first comparison comparing levels 1 and 2 are coded -1 and 1 to compare these levels, and 0 otherwise. The second comparison comparing levels 1, 2 with level 3 are coded -1/2, -1/2, 1 and 0, and the last comparison comparing levels 1, 2 and 3 with level 4 are coded -1/3, -1/3, -1/3 and 1.
Method 1: GLM with /LMATRIX
REVERSE HELMERT contrast coding
| New variable 1 (c1) | New variable 2 (c2) | New variable 3 (c3) | |
| Level 2 v. Level 1 | Level 3 v. Previous | Level 4 v. Previous | |
| 1 (Hispanic) | -1 | -1/2 | -1/3 |
| 2 (Asian) | 1 | -1/2 | -1/3 |
| 3 (African American) | 0 | 1 | -1/3 |
| 4 (white) | 0 | 0 | 1 |
Below we illustrate how to form these comparisons using the glm command with /lmatrix. Note the use of fractions on the /lmatrix subcommand. As mentioned above, you need to use numbers that sum to zero, such as 1/3 + 1/3 + 1/3 - 1. You cannot use .333 instead of 1/3: SPSS will give an error message and fail to calculate the contrast coefficient. The problem is that .333 + .333 + .333 - 1 is not sufficiently close to zero. (If you wanted to use decimals, you would need to use something like .333333 so that .333333 + .333333 + .333333 - 1 would be sufficiently close to zero.)
glm write by race /lmatrix "level 2 versus level 1" race -1