Stata can perform contrasts involving categorical variables and their interactions after almost any estimation command. Stata’s contrast provides a set of contrast operators that make it easy to specify named contrasts such as reference-level contrasts, adjacent contrasts, Helmert contrasts, and orthogonal polynomial contrasts. You can also specify your own custom contrasts. contrast can perform joint tests of these contrasts and can produce ANOVA-style tests of main effects, interaction effects, simple effects, and nested effects.

 

We can use contrasts to answer questions about the way a categorical variable relates to the response. If we fit the model

 

regress y i.agegroup


we could use reverse adjacent contrasts, which are specified with the ar. operator, to test whether any age group could be combined with the previous age group.

. contrast ar.agegroup, nowald effects

Contrasts of marginal linear predictions

Margins      : asbalanced

Contrast Std. Err. t P>|t| [95% Conf. Interval]
agegroup
(20-29 vs 10-19) 8.203575 3.771628 2.18 0.033 .6812991 15.72585
(30-39 vs 20-29) 13.33748 3.771628 3.54 0.001 5.815204 20.85976
(40-59 vs 30-39) 8.60962 3.771628 2.28 0.025 1.087345 16.1319
(60-79 vs 40-59) 8.611533 3.771628 2.28 0.025 1.089257 16.13381

 

We could test whether there is a linear, quadratic, cubic, or even quartic trend using orthogonal polynomial contrasts, which are specified with the p. operator.

 

. contrast p.agegroup, noeffects


Contrasts of marginal linear predictions

Margins      : asbalanced

df F P>F
agegroup
(linear) 1 139.11 0.0000
(quadratic) 1 0.15 0.6962
(cubic) 1 0.37 0.5448
(quartic) 1 0.43 0.5153
Joint 4 35.02 0.0000
Denominator 70

 

If we fit a two-way model

 

regress y agegroup##sex

we can test for main effects and interaction effects.

 

. contrast agegroup##sex, noeffects


Contrasts of marginal linear predictions

Margins      : asbalanced

df F P>F
agegroup 4 19.51 0.0000
sex 1 5.60 0.0229
agegroup#sex 4 1.75 0.1577
Denominator 40

 

In this case, we could have obtained these tests from anova. However, contrast can perform tests of main and interaction effects after other types of models.

We can test for a difference in the estimated cell means for men and women within each age group.

 

. contrast r.sex@agegroup


Contrasts of marginal linear predictions

Margins      : asbalanced

df F P>F
sex@agegroup
(female vs male) 10-19 1 1.13 0.2945
(female vs male) 20-29 1 3.36 0.0743
(female vs male) 30-39 1 5.00 0.0310
(female vs male) 40-59 1 0.41 0.5279
(female vs male) 60-79 1 2.71 0.1076
Joint 5 2.52 0.0448
Denominator 40
Contrast Std. Err. [95% Conf. Interval]
sex@agegroup
(female vs male) 10-19 6.841855 6.441542 -6.176987 19.8607
(female vs male) 20-29 -11.80631 6.441542 -24.82515 1.212534
(female vs male) 30-39 -14.40607 6.441542 -27.42491 -1.387228
(female vs male) 40-59 -4.101691 6.441542 -17.12053 8.917151
(female vs male) 60-79 -10.60137 6.441542 -23.62022 2.417469

 

margins works with contrast operators as well so that we can obtain contrasts of any margins that can be specified with this command, such as contrasts of the marginal predicted probabilities after logistic regression.