# RE: st: How to get country-specific effects as difference from average effect?

 From "Neumayer,E" To Subject RE: st: How to get country-specific effects as difference from average effect? Date Mon, 9 Sep 2002 10:20:05 +0100

```David,

thanks for your help. However, I tried to replicate your example and I get stuck at

mat dums=bfdum[1,2,3,4,5,6,7,8,9,10]

which returns "bfdum not found  r(111);". (Btw: I guess it should probably read bfdum[2,3,...11], right?]). Why can't I replicate your example? Also: What do you do if some country dummies are dropped due to missing observations? It seems that that your method only works if you can be sure that all cdum1-cdum10 are estimated.

Eric

-----Original Message-----
From: David M. Drukker, Stata Corp [mailto:ddrukker@stata.com]
Sent: 06 September 2002 15:15
To: statalist@hsphsun2.harvard.edu
Subject: RE: st: How to get country-specific effects as difference from
average effect?

> If I do "reg y x country2-country207" the country-specific dummy
> variables country2 to country207 are relative to the left out
> category country1. If I do "reg y x country1-country207, noconst"
> instead, the constant is dropped and the country-specific dum my
> variables give each country's level. How do I get Stata to compute
> country-specific estimates as a difference from the average country
> effect? I tried "constraint define 1 country1+...+country207=0" and
> cnsreg, but that does not work.

On the assumption that, in problems like this one, code speaks loader than
words, I have appended two briefly documented examples below.

Method 1:

Save off the estimated dummies from the regression and then subtract their
mean.

Here is an example.

. use grunfeld, clear
. tab company, gen(cdum)

company |      Freq.     Percent        Cum.
------------+-----------------------------------
1 |         20       10.00       10.00
2 |         20       10.00       20.00
3 |         20       10.00       30.00
4 |         20       10.00       40.00
5 |         20       10.00       50.00
6 |         20       10.00       60.00
7 |         20       10.00       70.00
8 |         20       10.00       80.00
9 |         20       10.00       90.00
10 |         20       10.00      100.00
------------+-----------------------------------
Total |        200      100.00

. regress invest mvalue cdum1-cdum10, nocons

Source |       SS       df       MS              Number of obs =     200
-------------+------------------------------           F( 11,   189) =  148.52
Model |  12208389.6    11  1109853.60           Prob > F      =  0.0000
Residual |  1412316.51   189  7472.57415           R-squared     =  0.8963
Total |  13620706.1   200  68103.5304           Root MSE      =  86.444

------------------------------------------------------------------------------
invest |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
mvalue |   .1898776   .0179944    10.55   0.000     .1543819    .2253733
cdum1 |  -214.8799   80.34482    -2.67   0.008    -373.3677   -56.39209
cdum2 |   36.06969   40.40532     0.89   0.373    -43.63364     115.773
cdum3 |   -266.324   39.92423    -6.67   0.000    -345.0784   -187.5697
cdum4 |  -45.50152   23.00494    -1.98   0.049    -90.88094   -.1220956
cdum5 |   17.85154   19.77315     0.90   0.368    -21.15287    56.85595
cdum6 |  -24.31194   20.75356    -1.17   0.243     -65.2503    16.62642
cdum7 |   19.15374    19.5165     0.98   0.328    -19.34441    57.65189
cdum8 |  -84.49925   22.78985    -3.71   0.000    -129.4544   -39.54411
cdum9 |  -21.46365   20.24042    -1.06   0.290    -61.38981    18.46251
cdum10 |  -10.38181   19.37156    -0.54   0.593    -48.59405    27.83044
------------------------------------------------------------------------------

. mat bfdum = e(b)
. mat dums = bfdum[1,2...]
. mat list dums

dums[1,10]
cdum1       cdum2       cdum3       cdum4       cdum5       cdum6
y1   -214.8799   36.069688  -266.32404   -45.50152   17.851543   -24.31194

cdum7       cdum8       cdum9      cdum10
y1    19.15374  -84.499251  -21.463647  -10.381806

. mat dums_t = dums - J(1,10,1)*(dums*J(10,1,1)/10)
. mat list dums_t

dums_t[1,10]
c1          c2          c3          c4          c5          c6
r1  -155.45118   95.498401  -206.89533   13.927193   77.280256   35.116773

c7          c8          c9         c10
r1   78.582454  -25.070538   37.965067   49.046907

. mat nsum = dums_t*J(10,1,1)
. mat list nsum

symmetric nsum[1,1]
c1
r1  9.237e-14

Method 2:

Another method would be to compute the average effect from the -dums-
vector, subtract this quantity from the orginal dependent variable, and then
re-run the regression.

. mat ave_effect = (dums*J(10,1,1)/10)
. mat list ave_effect

symmetric ave_effect[1,1]
c1
y1  -59.428713

. gen double invest2 = invest-ave_effect[1,1]
. regress invest2 mvalue cdum1-cdum10, nocons

Source |       SS       df       MS              Number of obs =     200
-------------+------------------------------           F( 11,   189) =  199.33
Model |  16384388.4    11  1489489.85           Prob > F      =  0.0000
Residual |  1412316.51   189  7472.57415           R-squared     =  0.9206
Total |  17796704.9   200  88983.5243           Root MSE      =  86.444

------------------------------------------------------------------------------
invest2 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
mvalue |   .1898776   .0179944    10.55   0.000     .1543819    .2253733
cdum1 |  -155.4512   80.34482    -1.93   0.055     -313.939    3.036619
cdum2 |    95.4984   40.40532     2.36   0.019     15.79507    175.2017
cdum3 |  -206.8953   39.92423    -5.18   0.000    -285.6497    -128.141
cdum4 |   13.92719   23.00494     0.61   0.546    -31.45223    59.30662
cdum5 |   77.28026   19.77315     3.91   0.000     38.27584    116.2847
cdum6 |   35.11677   20.75356     1.69   0.092    -5.821591    76.05514
cdum7 |   78.58245    19.5165     4.03   0.000      40.0843    117.0806
cdum8 |  -25.07054   22.78985    -1.10   0.273    -70.02568     19.8846
cdum9 |   37.96507   20.24042     1.88   0.062    -1.961093    77.89123
cdum10 |   49.04691   19.37156     2.53   0.012     10.83466    87.25915
------------------------------------------------------------------------------

I hope that this helps.

--David
ddrukker@stata.com
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```