Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Is this the correct code for a difference GMM estimator?

    Hi,

    I'm currently attempting to calculate a first-difference GMM estimator that is from "A reassessment of the relationship between Inequality and Growth" Forbes 2000.

    The standard specification has a fully balanced panel (N=63, T=8);
    Click image for larger version

Name:	normal spec.png
Views:	1
Size:	2.1 KB
ID:	1380542

    Where;
    Growth (grate_5) = 5 year geometric average of real GDP per-capita
    Gini (gini_net) = Gini Coefficient at the beginning of each period
    GDP (gdp_pc) = GDP per-capita at the beginning of each period
    Prim (schl_avg) = Mean years of schooling at the beginning of each period
    u = error term

    The GMM specification follows:
    Click image for larger version

Name:	GMM.png
Views:	1
Size:	2.3 KB
ID:	1380543

    The code I have used and its output follows;

    xtset scode time_dumm,yearly

    panel variable: scode (strongly balanced)
    time variable: time_dumm, 1 to 8
    delta: 1 year

    xtabond2 grate_5 L.grate_5 gdp_pc schl_avg gini_net, gmm (grate_5 schl_avg gini_net gdp_pc, lag(2 6)) small robust noleveleq


    Dynamic panel-data estimation, one-step difference GMM
    ------------------------------------------------------------------------------
    Group variable: scode Number of obs = 372
    Time variable : time_dumm Number of groups = 62
    Number of instruments = 80 Obs per group: min = 6
    F(4, 62) = 8.41 avg = 6.00
    Prob > F = 0.000 max = 6
    ------------------------------------------------------------------------------
    | Robust
    grate_5 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
    -------------+----------------------------------------------------------------
    grate_5 |
    L1. | .1586901 .0703611 2.26 0.028 .0180403 .29934
    |
    gdp_pc | -2.779144 .6150112 -4.52 0.000 -4.008534 -1.549754
    schl_avg | 13.81221 2.536023 5.45 0.000 8.742769 18.88164
    gini_net | 20.17881 11.48194 1.76 0.084 -2.773259 43.13088
    ------------------------------------------------------------------------------
    Instruments for first differences equation
    GMM-type (missing=0, separate instruments for each period unless collapsed)
    L(2/6).(grate_5 schl_avg gini_net gdp_pc)
    ------------------------------------------------------------------------------
    Arellano-Bond test for AR(1) in first differences: z = -4.85 Pr > z = 0.000
    Arellano-Bond test for AR(2) in first differences: z = -0.29 Pr > z = 0.773
    ------------------------------------------------------------------------------
    Sargan test of overid. restrictions: chi2(76) = 131.23 Prob > chi2 = 0.000
    (Not robust, but not weakened by many instruments.)
    Hansen test of overid. restrictions: chi2(76) = 58.51 Prob > chi2 = 0.932
    (Robust, but weakened by many instruments.)

    The tests return the statistics that I would like for GMM--no 2nd order auto-correlation and overid restrictions are valid). However, I'm unsure if this is estimating the GMM specification shown above?

    I hope this is enough information, if not please don't hesitate to ask.

    Thanks in advance,
    Ben
    Attached Files

  • #2
    No, it is not. The "GMM specification" in your second equation is already a model in first differences. xtabond2 computes differences of these differences, which are second differences. You should specify the model in levels with GDP per capita as the dependent variable and its lag as an independent variable; see equation (3) in Forbes' paper.

    Also, I would reduce the number of instruments (with suboptions laglimits and collapse of the gmmstyle() option; see help xtabond2 for details). 80 instruments is a quite large number (probably too large) relative to your number of observations.
    https://www.kripfganz.de/stata/

    Comment


    • #3
      Thanks for the advice.

      I have now used the code;

      xtabond2 gdp_pc L.gdp_pc schl_avg gini_net, gmm (schl_avg gini_net gdp_pc, lag (5 .)) small robust noleveleq

      Because there are 6 time periods I have chosen lagged instruments of 5. The output is;


      ------------------------------------------------------------------------------
      Group variable: scode Number of obs = 372
      Time variable : time_dumm Number of groups = 62
      Number of instruments = 18 Obs per group: min = 6
      F(3, 62) = 41.64 avg = 6.00
      Prob > F = 0.000 max = 6
      ------------------------------------------------------------------------------
      | Robust
      gdp_pc | Coef. Std. Err. t P>|t| [95% Conf. Interval]
      -------------+----------------------------------------------------------------
      gdp_pc |
      L1. | 1.117494 .151187 7.39 0.000 .8152759 1.419713
      |
      schl_avg | .0578886 .5440559 0.11 0.916 -1.029664 1.145441
      gini_net | -4.487564 3.362051 -1.33 0.187 -11.20821 2.23308
      ------------------------------------------------------------------------------
      Instruments for first differences equation
      GMM-type (missing=0, separate instruments for each period unless collapsed)
      L(5/7).(schl_avg gini_net gdp_pc)
      ------------------------------------------------------------------------------
      Arellano-Bond test for AR(1) in first differences: z = -1.78 Pr > z = 0.075
      Arellano-Bond test for AR(2) in first differences: z = 1.13 Pr > z = 0.259
      ------------------------------------------------------------------------------
      Sargan test of overid. restrictions: chi2(15) = 50.99 Prob > chi2 = 0.000
      (Not robust, but not weakened by many instruments.)
      Hansen test of overid. restrictions: chi2(15) = 21.67 Prob > chi2 = 0.117
      (Robust, but weakened by many instruments.)

      However, if I introduce the collapse command (reducing the instruments to 9) I'm left with a Hansen test that is significant at the 1% level.

      Comment


      • #4
        lag(5 .) is not a good idea. This means that you only start with the fifth lag to be used as instrument. Higher lags are typically less strongly correlated with current observations and thus more likely to become weak instruments. I recommend the following: gmm(L.gdp_pc schl_avg gini_net, lag(1 .) collapse)

        Also, if you want to mimic the procedure used by Forbes, you should specify lags for all right-hand side variables (both in the set of variables and in the set of instruments), i.e.
        Code:
        xtabond2 gdp_pc L.gdp_pc L.schl_avg L.gini_net, gmm(L.gdp_pc L.schl_avg L.gini_net, lag(1 .) collapse) small robust noleveleq
        https://www.kripfganz.de/stata/

        Comment


        • #5
          I have now carried that out. The only worrying result is that of the Hansen and Sargan test p-values 0.002 and 0.000 respectively.

          So the over-identified instruments are not valid. So I'm now wandering how I'm going to explain the estimator and its coefficients?

          But I know that question is focused for other forums than statalist.

          Thanks,
          Ben

          Comment

          Working...
          X