Stata FAQ
How can I do simple main effects using anovalator? (Stata 11)

This page will demonstrate the use of the anovalator command (findit anovalator) to compute simple main effects for both a two-factor model and a three-factor model. We will be using anovalator with the anova command on this page but anovalator works equally well with regress, xtmixed and many other estimation commands.

Example 1: Two-factor model

For our first example we will use the hsbanova dataset.

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

anova write grp##female

                           Number of obs =     200     R-squared     =  0.2872
                           Root MSE      = 8.14699     Adj R-squared =  0.2612

                  Source |  Partial SS    df       MS           F     Prob > F
              -----------+----------------------------------------------------
                   Model |  5135.17494     7   733.59642      11.05     0.0000
                         |
                     grp |  3641.68311     3  1213.89437      18.29     0.0000
                  female |  984.377328     1  984.377328      14.83     0.0002
              grp#female |  575.513416     3  191.837805       2.89     0.0367
                         |
                Residual |  12743.7001   192  66.3734378   
              -----------+----------------------------------------------------
                   Total |   17878.875   199   89.843593 
You will note that the grp by female interaction is statistically significant. We will show two ways of using anovalator to test the effect of grp for each level of female. The first method uses the simple option in anovalator. This approach will only work with two-factor models. We will also include the fratio option in all of our examples since the disturbances are assumed to be normally distributed in our anova model.
anovalator grp female, simple fratio

anovalator test of simple main effects for grp at(female=0)
chi2(3) = 46.001924   p-value = 5.666e-10
scaled as F-ratio = 15.333975

anovalator test of simple main effects for grp at(female=1)
chi2(3) = 13.644845   p-value = .00343069
scaled as F-ratio = 4.5482816
We can obtain the same results using anovalator with the maineffect (abbreviated main) and at options.
anovalator grp, main fratio at(female=0)

anovalator main-effect for grp at(female=0)
chi2(3) = 46.001924   p-value = 5.666e-10
scaled as F-ratio = 15.333975

anovalator grp, main fratio at(female=1)

anovalator main-effect for grp at(female=1)
chi2(3) = 13.644845   p-value = .00343069
scaled as F-ratio = 4.5482816
Since tests of simple main effects are a type of post-hoc comparison we need to use an adjusted critical value to assess statistical significance. We will use the smecriticalvalue command (findit smecriticalvalue) for this purpose. The smecriticalvalue command needs four pieces of information: n - the number of test performed; df1 - the degrees of freedom for each test; df2 - the degrees of freedon for the error term in the anova model; and dfmodel - the total degrees of freedom for all the terms in the model.
smecriticalvalue, n(2) df1(3) df2(192) dfmodel(7)

  number of tests: 2
     numerator df: 3
   denominator df: 192
original model df: 7

Critical value of F for alpha = .05 using ...
------------------------------------------------
Dunn's procedure              = 3.3028802
Marascuilo & Levin            = 3.6129331
per family error rate         = 3.1847981
simultaneous test procedure   = 3.6365283
By any of the four criteria above both tests of simple main effects are statistically significant.

Example 2: Three-factor model

Next we will run a three-factor model using the threeway dataset.

use http://www.ats.ucla.edu/stat/data/threeway, 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 
The a#b#c threeway interaction is statistically significant. Prior research has suggested that we look at the b#c interaction for each level of a. Because this is a three-factor design we cannot use the simple option so we will use a variation of the second method shown above, this time using the twoway (abbreviated two) option.
anovalator grp female, two fratio at(a=1)

anovalator two-way interaction for b#c at(a=1)
chi2(2) = 30.5   p-value = 2.382e-07
scaled as F-ratio = 15.25

anovalator b c, two fratio at(a=2)

anovalator two-way interaction for b#c at(a=2)
chi2(2) = .375   p-value = .82902912
scaled as F-ratio = .1875
Since the b#c at a=1 is significant we will follow this analysis up by looking at c for each level of b while keeping a at level one.
anovalator c, main fratio at(a=1 b=1)

anovalator main-effect for c at(a=1 b=1)
chi2(2) = 48   p-value = 3.775e-11
scaled as F-ratio = 24

anovalator c, main fratio at(a=1 b=2)

anovalator main-effect for c at(a=1 b=2)
chi2(2) = 1   p-value = .60653066
scaled as F-ratio = .5
We will use the smecriticalvalue command once again, this including all four tests since they have the same degrees of freedom.
smecriticalvalue, n(4) df1(2) df2(12) dfmodel(11)

  number of tests: 4
     numerator df: 2
   denominator df: 12
original model df: 11

Critical value of F for alpha = .05 using ...
------------------------------------------------
Dunn's procedure              = 6.2753765
Marascuilo & Levin            = 7.1335873
per family error rate         = 6.4546898
simultaneous test procedure   = 10.245969
There really wasn't much mystery here. Clearly, the F-ratios of .1875 and .5 cannot be significant. While the F-ratios of 15.25 and 24 both exceed the most stringent criteria, the simultaneous test procedure.

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.