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 https://stats.idre.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 https://stats.idre.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 https://stats.idre.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 https://stats.idre.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.