**xtreg** with its various options performs regression analysis on panel datasets. In this FAQ we
will try to explain the differences between **xtreg, re** and **xtreg, fe** with an
example that is taken from analysis of variance. The example (below) has 32 observations taken
on eight subjects, that is, each subject is observed four times. The eight subjects are
evenly divided into two groups of four.

The design is a mixed model with both within-subject and between-subject factors.
The within-subject factor (**b**) has four levels and the
between-subject factor (**a**) has two levels. To keep the analysis simple we will not
consider the **a*b** interaction.

---------------------------------- s | b1 b2 b3 b4 ----------+----------------------- a1 | 1 | 3 4 7 7 2 | 6 5 8 8 3 | 3 4 7 9 4 | 3 3 6 8 ----------+----------------------- a2 | 5 | 1 2 5 10 6 | 2 3 6 10 7 | 2 4 5 9 8 | 2 3 6 11 ----------------------------------

We will begin by looking at the within-subject factor using **xtreg-fe**. The **fe**
option stands for fixed-effects which is really the same thing as within-subjects.
Notice that there are coefficients only for the within-subjects (fixed-effects) variables.
Following
the **xtreg** we will use the **test** command to obtain the three degree of freedom
test of the levels of **b**.

use https://stats.idre.ucla.edu/stat/stata/faq/spf24 xtreg y i.a i.b, i(s) fenote: 2.a omitted because of collinearity Fixed-effects (within) regression Number of obs = 32 Group variable: s Number of groups = 8 R-sq: Obs per group: within = 0.8722 min = 4 between = . avg = 4.0 overall = 0.8259 max = 4 F(3,21) = 47.77 corr(u_i, Xb) = -0.0000 Prob > F = 0.0000 ------------------------------------------------------------------------------ y | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- 2.a | 0 (omitted) | b | 2 | .75 .5824824 1.29 0.212 -.4613384 1.961338 3 | 3.5 .5824824 6.01 0.000 2.288662 4.711338 4 | 6.25 .5824824 10.73 0.000 5.038662 7.461338 | _cons | 2.75 .4118772 6.68 0.000 1.893454 3.606546 -------------+---------------------------------------------------------------- sigma_u | .6681531 sigma_e | 1.1649647 rho | .24752475 (fraction of variance due to u_i) ------------------------------------------------------------------------------ F test that all u_i=0: F(7, 21) = 1.32 Prob > F = 0.2914test 2.b 3.b 4.b( 1) 2.b = 0 ( 2) 3.b = 0 ( 3) 4.b = 0 F( 3, 21) = 47.77 Prob > F = 0.0000

Next, we will use the **be** option to look at the between-subject effect. This time notice
that only the coefficient for **a** is given as it represents the between-subjects
effect.

Now it is time to get both the within and between with a singlextreg y i.a i.b, i(s) benote: 2.b omitted because of collinearity note: 3.b omitted because of collinearity note: 4.b omitted because of collinearity Between regression (regression on group means) Number of obs = 32 Group variable: s Number of groups = 8 R-sq: Obs per group: within = . min = 4 between = 0.2500 avg = 4.0 overall = 0.0133 max = 4 F(1,6) = 2.00 sd(u_i + avg(e_i.))= .625 Prob > F = 0.2070 ------------------------------------------------------------------------------ y | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- 2.a | -.625 .4419417 -1.41 0.207 -1.706392 .4563925 | b | 2 | 0 (omitted) 3 | 0 (omitted) 4 | 0 (omitted) | _cons | 5.6875 .3125 18.20 0.000 4.92284 6.45216 ------------------------------------------------------------------------------test 2.a( 1) 2.a = 0 F( 1, 6) = 2.00 Prob > F = 0.2070

**xtreg, re**command. Notice that there are now estimates for both

**a**and

**b**. Since the

**xtreg, re**test command gives us a chi-square and not an F-ratio, we have to rescale the chi-square by dividing by the degrees of freedom. The coefficients and test for the

**re**model are the same as the coefficients and test from the separate

**fe**and

**be**models (this will likely only happen if the data are balanced as they are here).

xtreg y i.a i.b, i(s) reRandom-effects GLS regression Number of obs = 32 Group variable: s Number of groups = 8 R-sq: Obs per group: within = 0.8722 min = 4 between = 0.2500 avg = 4.0 overall = 0.8392 max = 4 Wald chi2(4) = 145.32 corr(u_i, X) = 0 (assumed) Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ y | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- 2.a | -.625 .4419417 -1.41 0.157 -1.49119 .2411899 | b | 2 | .75 .5824824 1.29 0.198 -.3916445 1.891644 3 | 3.5 .5824824 6.01 0.000 2.358356 4.641644 4 | 6.25 .5824824 10.73 0.000 5.108356 7.391644 | _cons | 3.0625 .474224 6.46 0.000 2.133038 3.991962 -------------+---------------------------------------------------------------- sigma_u | .22658174 sigma_e | 1.1649647 rho | .03645008 (fraction of variance due to u_i) ------------------------------------------------------------------------------test 2.a( 1) 2.a = 0 chi2( 1) = 2.00 Prob > chi2 = 0.1573test 2.b 3.b 4.b( 1) 2.b = 0 ( 2) 3.b = 0 ( 3) 4.b = 0 chi2( 3) = 143.32 Prob > chi2 = 0.0000 /* convert chi-square to F */display "F = " r(chi2)/r(df)F = 47.77193

Stata's **xtreg** random effects model is just a matrix weighted average of the fixed-effects
(within) and the between-effects. In our example, because the within- and between-effects are orthogonal,
thus the **re** produces the same results as the individual **fe** and **be**. With more
general panel datasets the results of the **fe** and **be** won't necessarily add up in
the same manner.