Stata FAQ
Everything you always wanted to know about contrasts* (*But were afraid to ask)

Everything? No, that's a gross exaggeration. If you want to know everything about contrasts you will need read several other sources in addition to this page. Here are our suggestions: Mitchell, M.N. 2012. Interpreting and Visualizing Regression Models Using Stata. College Station, TX: Stata Press. StataCorp. 2009. Stata 11 Base Reference Manual. College Station, TX: Stata Press. Topics: contrast, margins, margins, comtrast, margins, pwcompare, marginsplot and pwcompare.

This page will cover a lot of examples without a lot of verbiage. But first, one more thing.

What is a contrast?

A contrast is a one degree of freedom test comparing means. One degree of freedom? You mean I can only compare two means? No, you can compare more than two means if you do it correctly. For example, you can compare the average of the means of groups 1 and 2 versus the mean of group 3. This contrast involves three means but uses only one degree of freedom.

Let's begin.

One-factor Model

We will begin with a one-factor model with four levels. First, we will load the data run the model, get the cell means and plot them. We can run the model using either anova or regress. Either way we will get the same results. We will use the anova command this time.
use http://www.ats.ucla.edu/stat/data/hsbanova, clear

anova write grp

                           Number of obs =     200     R-squared     =  0.1939
                           Root MSE      =  8.5752     Adj R-squared =  0.1815

                  Source |  Partial SS    df       MS           F     Prob > F
              -----------+----------------------------------------------------
                   Model |  3466.19389     3  1155.39796      15.71     0.0000
                         |
                     grp |  3466.19389     3  1155.39796      15.71     0.0000
                         |
                Residual |  14412.6811   196  73.5340873   
              -----------+----------------------------------------------------
                   Total |   17878.875   199   89.843593   

margins grp  // get cell means                             

Adjusted predictions                              Number of obs   =        200

Expression   : Linear prediction, predict()

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
          1  |      46.76   1.212717    38.56   0.000     44.38312    49.13688
          2  |   51.33333   1.278316    40.16   0.000     48.82788    53.83879
          3  |   54.81667   1.107054    49.52   0.000     52.64688    56.98645
          4  |   58.17778   1.278316    45.51   0.000     55.67233    60.68323
------------------------------------------------------------------------------

marginsplot



* Reference group contrast

contrast r.grp, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
   (2 vs 1)  |          1        6.74     0.0102
   (3 vs 1)  |          1       24.07     0.0000
   (4 vs 1)  |          1       41.99     0.0000
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
   (2 vs 1)  |   4.573333   1.762036     2.60   0.010     1.098349    8.048318
   (3 vs 1)  |   8.056667   1.642026     4.91   0.000     4.818359    11.29497
   (4 vs 1)  |   11.41778   1.762036     6.48   0.000     7.942793    14.89276
------------------------------------------------------------------------------

* Change the reference group to grp3.
                         
contrast rb3.grp, effects  // change reference group to grp3

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
   (1 vs 3)  |          1       24.07     0.0000
   (2 vs 3)  |          1        4.24     0.0407
   (4 vs 3)  |          1        3.95     0.0482
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
   (1 vs 3)  |  -8.056667   1.642026    -4.91   0.000    -11.29497   -4.818359
   (2 vs 3)  |  -3.483333   1.691053    -2.06   0.041    -6.818328   -.1483388
   (4 vs 3)  |   3.361111   1.691053     1.99   0.048     .0261165    6.696106
------------------------------------------------------------------------------

* Adjacent group contrast

contrast a.grp, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
   (1 vs 2)  |          1        6.74     0.0102
   (2 vs 3)  |          1        4.24     0.0407
   (3 vs 4)  |          1        3.95     0.0482
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
   (1 vs 2)  |  -4.573333   1.762036    -2.60   0.010    -8.048318   -1.098349
   (2 vs 3)  |  -3.483333   1.691053    -2.06   0.041    -6.818328   -.1483388
   (3 vs 4)  |  -3.361111   1.691053    -1.99   0.048    -6.696106   -.0261165
------------------------------------------------------------------------------

* Grand mean contrast

contrast g.grp, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
(1 vs mean)  |          1       32.62     0.0000
(2 vs mean)  |          1        1.74     0.1888
(3 vs mean)  |          1        4.24     0.0408
(4 vs mean)  |          1       24.56     0.0000
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
(1 vs mean)  |  -6.011944   1.052672    -5.71   0.000    -8.087962   -3.935927
(2 vs mean)  |  -1.438611    1.09079    -1.32   0.189    -3.589803    .7125804
(3 vs mean)  |   2.044722   .9927543     2.06   0.041     .0868706    4.002574
(4 vs mean)  |   5.405833    1.09079     4.96   0.000     3.254642    7.557025
------------------------------------------------------------------------------

* Helmert contrast

contrast h.grp, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
  (1 vs >1)  |          1       32.62     0.0000
  (2 vs >2)  |          1       11.35     0.0009
  (3 vs  4)  |          1        3.95     0.0482
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
  (1 vs >1)  |  -8.015926   1.403562    -5.71   0.000    -10.78395   -5.247903
  (2 vs >2)  |  -5.163889   1.532647    -3.37   0.001    -8.186484   -2.141293
  (3 vs  4)  |  -3.361111   1.691053    -1.99   0.048    -6.696106   -.0261165
------------------------------------------------------------------------------

* Polynomial contrast

contrast p.grp, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |
   (linear)  |          1       46.23     0.0000
(quadratic)  |          1        0.25     0.6202
    (cubic)  |          1        0.03     0.8572
      Joint  |          3       15.71     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
   (linear)  |   4.219088     .62051     6.80   0.000     2.995354    5.442821
(quadratic)  |  -.3030556   .6105546    -0.50   0.620    -1.507156    .9010444
    (cubic)  |   .1082008   .6004343     0.18   0.857     -1.07594    1.292342
------------------------------------------------------------------------------

* User defined contrast grp1 vs grp4

contrast {grp 1 0 0 -1}, effects

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |          1       41.99     0.0000
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
        (1)  |  -11.41778   1.762036    -6.48   0.000    -14.89276   -7.942793
------------------------------------------------------------------------------

* Nonpairwise user defined contrast, grp2 vs average of grp3 & grp4

contrast {grp 0 1 -.5 -.5}, effects  // nonpairwise contrast

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |          1       11.35     0.0009
             |
    Residual |        196
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
        (1)  |  -5.163889   1.532647    -3.37   0.001    -8.186484   -2.141293
------------------------------------------------------------------------------

* All pairwise comparisons with Tukey adjustment

pwcompare grp, mcompare(tukey) effects group

Pairwise comparisons of marginal linear predictions

Margins      : asbalanced

---------------------------
             |    Number of
             |  Comparisons
-------------+-------------
         grp |            6
---------------------------

----------------------------------------------
             |                           Tukey
             |     Margin   Std. Err.   Groups
-------------+--------------------------------
         grp |
          1  |      46.76   1.212717
          2  |   51.33333   1.278316        A 
          3  |   54.81667   1.107054        AB
          4  |   58.17778   1.278316         B
----------------------------------------------
Note: Margins sharing a letter in the group
      label are not significantly different at
      the 5% level.
Note: The tukey method requires balanced data
      for proper level coverage. A factor was
      found to be unbalanced.

---------------------------
             |    Number of
             |  Comparisons
-------------+-------------
         grp |            6
---------------------------

------------------------------------------------------------------------------
             |                              Tukey                Tukey
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
     2 vs 1  |   4.573333   1.762036     2.60   0.049     .0075312    9.139136
     3 vs 1  |   8.056667   1.642026     4.91   0.000     3.801836     12.3115
     4 vs 1  |   11.41778   1.762036     6.48   0.000     6.851976    15.98358
     3 vs 2  |   3.483333   1.691053     2.06   0.170    -.8985349    7.865202
     4 vs 2  |   6.844444   1.807811     3.79   0.001      2.16003    11.52886
     4 vs 3  |   3.361111   1.691053     1.99   0.196    -1.020757    7.742979
------------------------------------------------------------------------------
Note: The tukey method requires balanced data for proper level coverage. A
      factor was found to be unbalanced.

Two-factor Model

We again load the data and run the regression model this time.
use http://www.ats.ucla.edu/stat/data/hsbanova, clear

regress write grp##female

      Source |       SS       df       MS              Number of obs =     200
-------------+------------------------------           F(  7,   192) =   11.05
       Model |  5135.17494     7   733.59642           Prob > F      =  0.0000
    Residual |  12743.7001   192  66.3734378           R-squared     =  0.2872
-------------+------------------------------           Adj R-squared =  0.2612
       Total |   17878.875   199   89.843593           Root MSE      =   8.147

------------------------------------------------------------------------------
       write |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         grp |
          2  |    7.31677   2.458951     2.98   0.003     2.466743     12.1668
          3  |   10.10248   2.292658     4.41   0.000     5.580454    14.62452
          4  |   16.75286   2.525696     6.63   0.000     11.77119    21.73453
             |
    1.female |   9.136876   2.311726     3.95   0.000     4.577236    13.69652
             |
  grp#female |
        2 1  |  -5.029733   3.357123    -1.50   0.136    -11.65131    1.591845
        3 1  |  -3.721697   3.128694    -1.19   0.236    -9.892723    2.449328
        4 1  |  -9.831208   3.374943    -2.91   0.004    -16.48793   -3.174482
             |
       _cons |   41.82609   1.698765    24.62   0.000     38.47545    45.17672
------------------------------------------------------------------------------ 

* Test interaction and main effects

contrast grp##female

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
         grp |          3       18.29     0.0000
             |
      female |          1       14.83     0.0002
             |
  grp#female |          3        2.89     0.0367
             |
    Residual |        192
------------------------------------------------

* Cell means for all 8 cells

margins grp#female

Adjusted predictions                              Number of obs   =        200

Expression   : Linear prediction, predict()

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
  grp#female |
        1 0  |   41.82609   1.698765    24.62   0.000     38.49657     45.1556
        1 1  |   50.96296   1.567889    32.50   0.000     47.88996    54.03597
        2 0  |   49.14286   1.777819    27.64   0.000      45.6584    52.62732
        2 1  |      53.25   1.662997    32.02   0.000     49.99059    56.50941
        3 0  |   51.92857   1.539636    33.73   0.000     48.91094     54.9462
        3 1  |   57.34375   1.440198    39.82   0.000     54.52101    60.16649
        4 0  |   58.57895   1.869048    31.34   0.000     54.91568    62.24221
        4 1  |   57.88462   1.597756    36.23   0.000     54.75307    61.01616
------------------------------------------------------------------------------

* Plot cell means

marginsplot




* Simple contrasts & simple effects

* Simple contrasts contrast r.grp@female, effects Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp@female | (2 vs 1) 0 | 1 8.85 0.0033 (2 vs 1) 1 | 1 1.00 0.3183 (3 vs 1) 0 | 1 19.42 0.0000 (3 vs 1) 1 | 1 8.98 0.0031 (4 vs 1) 0 | 1 44.00 0.0000 (4 vs 1) 1 | 1 9.56 0.0023 Joint | 6 9.94 0.0000 | Residual | 192 ------------------------------------------------ ------------------------------------------------------------------------------ | Contrast Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- grp@female | (2 vs 1) 0 | 7.31677 2.458951 2.98 0.003 2.466743 12.1668 (2 vs 1) 1 | 2.287037 2.285571 1.00 0.318 -2.221015 6.79509 (3 vs 1) 0 | 10.10248 2.292658 4.41 0.000 5.580454 14.62452 (3 vs 1) 1 | 6.380787 2.128954 3.00 0.003 2.181646 10.57993 (4 vs 1) 0 | 16.75286 2.525696 6.63 0.000 11.77119 21.73453 (4 vs 1) 1 | 6.921652 2.238549 3.09 0.002 2.506347 11.33696 ------------------------------------------------------------------------------ * Simple effects contrast grp@female Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp@female | 0 | 3 15.33 0.0000 1 | 3 4.55 0.0042 Joint | 6 9.94 0.0000 | Residual | 192 ------------------------------------------------ * Partial interactions contrast female#a.grp Contrasts of marginal linear predictions Margins : asbalanced ----------------------------------------------------- | df F P>F ------------------+---------------------------------- female#grp | (joint) (1 vs 2) | 1 2.24 0.1357 (joint) (2 vs 3) | 1 0.16 0.6851 (joint) (3 vs 4) | 1 3.56 0.0608 Joint | 3 2.89 0.0367 | Residual | 192 ----------------------------------------------------- * User defined contrast, female by grp1 vs grp4 contrast female#{grp 1 0 0 -1} Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- female#grp | 1 8.49 0.0040 | Residual | 192 ------------------------------------------------ * Treatment contrast interaction contrast r.female#r.grp, effects Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------------ | df F P>F -------------------+---------------------------------- female#grp | (1 vs 0) (2 vs 1) | 1 2.24 0.1357 (1 vs 0) (3 vs 1) | 1 1.41 0.2357 (1 vs 0) (4 vs 1) | 1 8.49 0.0040 Joint | 3 2.89 0.0367 | Residual | 192 ------------------------------------------------------ ------------------------------------------------------------------------------ | Contrast Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- female#grp | (1 vs 0) | (2 vs 1) | -5.029733 3.357123 -1.50 0.136 -11.65131 1.591845 (1 vs 0) | (3 vs 1) | -3.721697 3.128694 -1.19 0.236 -9.892723 2.449328 (1 vs 0) | (4 vs 1) | -9.831208 3.374943 -2.91 0.004 -16.48793 -3.174482 ------------------------------------------------------------------------------ * Polynomial interaction contrast p.grp#r.female, effects Contrasts of marginal linear predictions Margins : asbalanced --------------------------------------------------------- | df F P>F ----------------------+---------------------------------- grp#female | (linear) (1 vs 0) | 1 7.04 0.0086 (quadratic) (1 vs 0) | 1 0.05 0.8172 (cubic) (1 vs 0) | 1 1.81 0.1805 Joint | 3 2.89 0.0367 | Residual | 192 --------------------------------------------------------- ------------------------------------------------------------------------------ | Contrast Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- grp#female | (linear) | (1 vs 0) | -3.151245 1.187871 -2.65 0.009 -5.494197 -.8082918 (quadratic) | (1 vs 0) | -.2699444 1.16622 -0.23 0.817 -2.570192 2.030303 (cubic) | (1 vs 0) | -1.537891 1.144158 -1.34 0.180 -3.794625 .7188432 ------------------------------------------------------------------------------ * Difference in differences examined *We will begin by looking at the difference between grp3 and grp4 at each level of female. * grp3 vs grp4 when female = 0 contrast {grp 0 0 -1 1}@i0.female Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp@female | (1) 0 | 1 7.54 0.0066 | Residual | 192 ------------------------------------------------ -------------------------------------------------------------- | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ grp@female | (1) 0 | 6.650376 2.421532 1.874154 11.4266 -------------------------------------------------------------- * grp3 vs grp4 when female = 1 contrast {grp 0 0 -1 1}@i1.female Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp@female | (1) 1 | 1 0.06 0.8017 | Residual | 192 ------------------------------------------------ -------------------------------------------------------------- | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ grp@female | (1) 1 | .5408654 2.151045 -3.701848 4.783579 -------------------------------------------------------------- * The same as above using a single contrast command contrast {grp 0 0 -1 1}@female Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp@female | (1) 0 | 1 7.54 0.0066 (1) 1 | 1 0.06 0.8017 Joint | 2 3.80 0.0240 | Residual | 192 ------------------------------------------------ -------------------------------------------------------------- | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ grp@female | (1) 0 | 6.650376 2.421532 1.874154 11.4266 (1) 1 | .5408654 2.151045 -3.701848 4.783579 -------------------------------------------------------------- * Now for the actual difference in differences. contrast {grp 0 0 -1 1}#{female -1 1} Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp#female | 1 3.56 0.0608 | Residual | 192 ------------------------------------------------ -------------------------------------------------------------- | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ grp#female | (1) (1) | -6.109511 3.238952 -12.49801 .278988 -------------------------------------------------------------- * Arbitrary contrast within interaction contrast {grp#female 1 0 0 0 0 0 0 -1} Contrasts of marginal linear predictions Margins : asbalanced ------------------------------------------------ | df F P>F -------------+---------------------------------- grp#female | 1 47.42 0.0000 | Residual | 192 ------------------------------------------------ -------------------------------------------------------------- | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ grp#female | (1) (1) | -16.05853 2.332086 -20.65833 -11.45873 -------------------------------------------------------------- * Check out the L matrix matrix list r(L) r(L)[1,15] 1b. 2. 3. 4. 0b. 1. grp grp grp grp female female u1.grp# u1.female 1 0 0 -1 1 -1 1b.grp# 1b.grp# 2o.grp# 2.grp# 3o.grp# 3.grp# 0b.female 1o.female 0b.female 1.female 0b.female 1.female u1.grp# u1.female 1 0 0 0 0 0 4o.grp# 4.grp# 0b.female 1.female _cons u1.grp# u1.female 0 -1 0

Three-factor Model

use http://www.ats.ucla.edu/stat/data/3way, clear

anova y a##b##c

                           Number of obs =      24     R-squared     =  0.9689
                           Root MSE      =  1.1547     Adj R-squared =  0.9403

                  Source |  Partial SS    df       MS           F     Prob > F
              -----------+----------------------------------------------------
                   Model |  497.833333    11  45.2575758      33.94     0.0000
                         |
                       a |         150     1         150     112.50     0.0000
                       b |  .666666667     1  .666666667       0.50     0.4930
                     a#b |  160.166667     1  160.166667     120.13     0.0000
                       c |  127.583333     2  63.7916667      47.84     0.0000
                     a#c |       18.25     2       9.125       6.84     0.0104
                     b#c |  22.5833333     2  11.2916667       8.47     0.0051
                   a#b#c |  18.5833333     2  9.29166667       6.97     0.0098
                         |
                Residual |          16    12  1.33333333   
              -----------+----------------------------------------------------
                   Total |  513.833333    23  22.3405797   

* Compute cell means for plotting

quietly margins a#b#c  

* Plot the cell means

marginsplot, recast(line) noci x(c) by(a) byopts(title(3-way Anova))




* Start by looking at the simple effects of the b#c interaction 
at each level of a

contrast b#c@a

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
       b#c@a |
          1  |          2       15.25     0.0005
          2  |          2        0.19     0.8314
      Joint  |          4        7.72     0.0026
             |
    Residual |         12
------------------------------------------------

* Follow up with the simple effects of b at each level of
c holding a at at 1

contrast b@c@1.a

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
       b@c#a |
        1 1  |          1        0.19     0.6727
        2 1  |          1       15.19     0.0021
        3 1  |          1       67.69     0.0000
      Joint  |          3       27.69     0.0000
             |
    Residual |         12
------------------------------------------------

* Difference in differences

* b = 1 vs b = 2 when c = 2 and a = 1

contrast {b -1 1}@2.c@1.a

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
       b@c#a |
    (1) 2 1  |          1       15.19     0.0021
             |
    Residual |         12
------------------------------------------------

--------------------------------------------------------------
             |   Contrast   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
       b@c#a |
    (1) 2 1  |       -4.5   1.154701     -7.015876   -1.984124
--------------------------------------------------------------

* since b has only two levels this is the same as

contrast b@2.c@1.a, effect

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
       b@c#a |
        2 1  |          1       15.19     0.0021
             |
    Residual |         12
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       b@c#a |
(2 vs base)  |
        2 1  |       -4.5   1.154701    -3.90   0.002    -7.015876   -1.984124
------------------------------------------------------------------------------

* Inspect L matrix

matrix list r(L)

r(L)[1,36]
                                                                           
                1b.     2.    1b.     2.  1b.a#  1b.a#  2o.a#   2.a#    1b.
                 a      a      b      b   1b.b   2o.b   1b.b    2.b      c
2.b@2.c@1.a      0      0     -1      1     -1      1      0      0      0

                                                                           
                 2.     3.  1b.a#  1b.a#  1b.a#  2o.a#   2.a#   2.a#  1b.b#
                 c      c   1b.c   2o.c   3o.c   1b.c    2.c    3.c   1b.c
2.b@2.c@1.a      0      0      0      0      0      0      0      0      0

                                                 1b.a#  1b.a#  1b.a#  1b.a#
              1b.b#  1b.b#  2o.b#   2.b#   2.b#  1b.b#  1b.b#  1b.b#  2o.b#
              2o.c   3o.c   1b.c    2.c    3.c   1b.c   2o.c   3o.c   1b.c
2.b@2.c@1.a     -1      0      0      1      0      0     -1      0      0

              1b.a#  1b.a#  2o.a#  2o.a#  2o.a#  2o.a#   2.a#   2.a#       
              2o.b#  2o.b#  1b.b#  1b.b#  1b.b#  2o.b#   2.b#   2.b#       
              2o.c   3o.c   1b.c   2o.c   3o.c   1b.c    2.c    3.c  _cons
2.b@2.c@1.a      1      0      0      0      0      0      0      0      0

* difference in levels of b between c = 2 and c = 3, when a = 1

contrast b#{c  0 -1 1}@1.a, effect

Contrasts of marginal linear predictions

Margins      : asbalanced

--------------------------------------------------
               |         df           F        P>F
---------------+----------------------------------
         b#c@a |
(joint) (1) 1  |          1        9.37     0.0099
               |
      Residual |         12
--------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       b#c@a |
(2 vs base)  |
      (1) 1  |         -5   1.632993    -3.06   0.010    -8.557986   -1.442014
------------------------------------------------------------------------------

* difference in levels of b between c = 2 and c = 3, when a = 2

contrast b#{c 0 -1 1}@2.a, effect

Contrasts of marginal linear predictions

Margins      : asbalanced

--------------------------------------------------
               |         df           F        P>F
---------------+----------------------------------
         b#c@a |
(joint) (1) 2  |          1        0.09     0.7647
               |
      Residual |         12
--------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       b#c@a |
(2 vs base)  |
      (1) 2  |         .5   1.632993     0.31   0.765    -3.057986    4.057986
------------------------------------------------------------------------------

* difference in differences in differences
* difference in levels of b between c = 2 and c = 3, when a = 1 vs a = 2

contrast b#{c 0 -1 1}#{a 1 -1}, effect

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
       b#c#a |          1        5.67     0.0347
             |
    Residual |         12
------------------------------------------------

------------------------------------------------------------------------------
             |   Contrast   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       b#c#a |
(2 vs base)  |
    (1) (1)  |       -5.5   2.309401    -2.38   0.035    -10.53175   -.4682473
------------------------------------------------------------------------------

* Inspect L matrix again (nasty isn't it?)

matrix list r(L)

r(L)[1,36]
                                                                           
         1b.     2.    1b.     2.  1b.a#  1b.a#  2o.a#   2.a#    1b.     2.
          a      a      b      b   1b.b   2o.b   1b.b    2.b      c      c
2.b#
u1.c#
u1.a      0      0      0      0      0      0      0      0      0      0

                                                                           
          3.  1b.a#  1b.a#  1b.a#  2o.a#   2.a#   2.a#  1b.b#  1b.b#  1b.b#
          c   1b.c   2o.c   3o.c   1b.c    2.c    3.c   1b.c   2o.c   3o.c
2.b#
u1.c#
u1.a      0      0      0      0      0      0      0      0      0      0

                            1b.a#  1b.a#  1b.a#  1b.a#  1b.a#  1b.a#  2o.a#
       2o.b#   2.b#   2.b#  1b.b#  1b.b#  1b.b#  2o.b#  2o.b#  2o.b#  1b.b#
       1b.c    2.c    3.c   1b.c   2o.c   3o.c   1b.c   2o.c   3o.c   1b.c
2.b#
u1.c#
u1.a      0      0      0      0      1     -1      0     -1      1      0

       2o.a#  2o.a#  2o.a#   2.a#   2.a#       
       1b.b#  1b.b#  2o.b#   2.b#   2.b#       
       2o.c   3o.c   1b.c    2.c    3.c  _cons
2.b#
u1.c#
u1.a     -1      1      0      1     -1      0

Model with categorical by continuous interaction

We will change to the hsbdemo dataset.
use http://www.ats.ucla.edu/stat/data/hsbdemo, clear
anova math prog##c.read

                           Number of obs =     200     R-squared     =  0.5051
                           Root MSE      = 6.67488     Adj R-squared =  0.4924

                  Source |  Partial SS    df       MS           F     Prob > F
              -----------+----------------------------------------------------
                   Model |  8822.31169     5  1764.46234      39.60     0.0000
                         |
                    prog |  166.100182     2   83.050091       1.86     0.1578
                    read |  2926.41146     1  2926.41146      65.68     0.0000
               prog#read |  315.914185     2  157.957093       3.55     0.0307
                         |
                Residual |  8643.48331   194  44.5540377   
              -----------+----------------------------------------------------
                   Total |   17465.795   199  87.7678141   

* Used for plotting with two values, 25 & 75, for the continuous variable

quietly margins prog, at(read=(25 75))  

* Plot it

marginsplot




* get slopes for each level of prog

margins prog, dydx(read)

Average marginal effects                          Number of obs   =        200

Expression   : Linear prediction, predict()
dy/dx w.r.t. : read

------------------------------------------------------------------------------
             |            Delta-method
             |      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
read         |
        prog |
          1  |   .3180025   .1089668     2.92   0.004     .1044316    .5315735
          2  |    .629824   .0682596     9.23   0.000     .4960377    .7636103
          3  |   .4081276   .1070485     3.81   0.000     .1983165    .6179387
------------------------------------------------------------------------------

* Compare slopes using reference group contrast

margins r.prog, dydx(read)

Contrasts of average marginal effects

Expression   : Linear prediction, predict()
dy/dx w.r.t. : read

------------------------------------------------
             |         df        chi2     P>chi2
-------------+----------------------------------
read         |
        prog |
   (2 vs 1)  |          1        5.88     0.0153
   (3 vs 1)  |          1        0.35     0.5552
      Joint  |          2        7.09     0.0289
------------------------------------------------

--------------------------------------------------------------
             |   Contrast Delta-method
             |      dy/dx   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
read         |
        prog |
   (2 vs 1)  |   .3118215   .1285812       .059807     .563836
   (3 vs 1)  |    .090125   .1527519     -.2092631    .3895132
--------------------------------------------------------------

* Change reference group to prog3 

margins rb2.prog, dydx(read)

Contrasts of average marginal effects

Expression   : Linear prediction, predict()
dy/dx w.r.t. : read

------------------------------------------------
             |         df        chi2     P>chi2
-------------+----------------------------------
read         |
        prog |
   (1 vs 2)  |          1        5.88     0.0153
   (3 vs 2)  |          1        3.05     0.0808
      Joint  |          2        7.09     0.0289
------------------------------------------------

--------------------------------------------------------------
             |   Contrast Delta-method
             |      dy/dx   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
read         |
        prog |
   (1 vs 2)  |  -.3118215   .1285812      -.563836    -.059807
   (3 vs 2)  |  -.2216965   .1269596     -.4705327    .0271398
--------------------------------------------------------------

* All pairwise slopes

margins prog, dydx(read) pwcompare(effects group)

Pairwise comparisons of average marginal effects

Expression   : Linear prediction, predict()
dy/dx w.r.t. : read

-------------------------------------------------
             |            Delta-method Unadjusted
             |     Margin   Std. Err.      Groups
-------------+-----------------------------------
read         |
        prog |
          1  |   .3180025   .1089668           A 
          2  |    .629824   .0682596            B
          3  |   .4081276   .1070485           AB
-------------------------------------------------
Note: Margins sharing a letter in the group label
      are not significantly different at the 5%
      level.

------------------------------------------------------------------------------
             |   Contrast Delta-method    Unadjusted           Unadjusted
             |      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
read         |
        prog |
     2 vs 1  |   .3118215   .1285812     2.43   0.015      .059807     .563836
     3 vs 1  |    .090125   .1527519     0.59   0.555    -.2092631    .3895132
     3 vs 2  |  -.2216965   .1269596    -1.75   0.081    -.4705327    .0271398
------------------------------------------------------------------------------

* User defined slope contrast

margins {prog -.5 1 -.5}, dydx(read)

Contrasts of average marginal effects

Expression   : Linear prediction, predict()
dy/dx w.r.t. : read

------------------------------------------------
             |         df        chi2     P>chi2
-------------+----------------------------------
read         |
        prog |          1        6.78     0.0092
------------------------------------------------

--------------------------------------------------------------
             |   Contrast Delta-method
             |      dy/dx   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
read         |
        prog |
        (1)  |    .266759   .1024336      .0659927    .4675252
--------------------------------------------------------------

* The same thing using contrast

contrast {prog -.5 1 -.5}#c.read

Contrasts of marginal linear predictions

Margins      : asbalanced

------------------------------------------------
             |         df           F        P>F
-------------+----------------------------------
 prog#c.read |          1        6.78     0.0099
             |
    Residual |        194
------------------------------------------------

--------------------------------------------------------------
             |   Contrast   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
 prog#c.read |
        (1)  |    .266759   .1024336      .0647324    .4687855
--------------------------------------------------------------
For this last contrast we are not looking at differences in slopes but rather at differences in predicted values. In particular, we want to look at the differences among the three predicted values when read = 25 and again when read = 75.

* Differences in predicted values

margins r.prog, at(read=(25 75)) Contrasts of adjusted predictions Expression : Linear prediction, predict() 1._at : read = 25 2._at : read = 75 ------------------------------------------------ | df chi2 P>chi2 -------------+---------------------------------- prog@_at | (2 vs 1) 1 | 1 1.92 0.1654 (2 vs 1) 2 | 1 10.46 0.0012 (3 vs 1) 1 | 1 1.34 0.2467 (3 vs 1) 2 | 1 0.00 0.9773 Joint | 4 26.07 0.0000 ------------------------------------------------ -------------------------------------------------------------- | Delta-method | Contrast Std. Err. [95% Conf. Interval] -------------+------------------------------------------------ prog@_at | (2 vs 1) 1 | -5.043076 3.635333 -12.1682 2.082046 (2 vs 1) 2 | 10.548 3.261109 4.156342 16.93966 (3 vs 1) 1 | -4.382197 3.782612 -11.79598 3.031587 (3 vs 1) 2 | .1240545 4.3535 -8.408649 8.656758 --------------------------------------------------------------
That's all for now.

How to cite this page

Report an error on this page or leave a comment

The content of this web site should not be construed as an endorsement of any particular web site, book, or software product by the University of California.