* Code to generate Forbes (2000) and Levine, Loayza, Beck (2000) test results in * Roodman, "A Note on the Theme of Too Many Instruments", as revised May 2008 * Requires xtabond2 version 2.7.4 or higher and Stata 9.2 or higher * Update/install xtabond2 with "ssc install xtabond2, replace". * Forbes 2000 use "Forbes reproduction.dta", clear xi i.period * Best reproduction of Forbes preferred regression, her Table 3, regression 4 xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp)) two small nol robust * Same, but collapse instruments xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), c) two small nol robust * Same, but limit lag depth to 1 instead xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), lag(1 1)) two small nol robust * Collapse instruments and limit lag depth xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), lag(1 1) c) two small nol robust * Regressions corresponding to those in Forbes Table 5 (mentioned but not reported in Roodman paper) * Excluding E. Asia xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="HKG" & country!="IDN" & country!="KOR" & country!="MYS" & /// country!="PHL" & country!="SGP" & country!="THA", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp)) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="HKG" & country!="IDN" & country!="KOR" & country!="MYS" & /// country!="PHL" & country!="SGP" & country!="THA", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), c) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="HKG" & country!="IDN" & country!="KOR" & country!="MYS" & /// country!="PHL" & country!="SGP" & country!="THA", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), lag(1 1)) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="HKG" & country!="IDN" & country!="KOR" & country!="MYS" & /// country!="PHL" & country!="SGP" & country!="THA", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), c lag(1 1)) two small nol robust * Exclude L. America xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="BRA" & country!="CHL" & country!="COL" & country!="CRI" & /// country!="DOM" & country!="MEX" & country!="PER" & country!="TTO" & country!="VEN", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp)) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="BRA" & country!="CHL" & country!="COL" & country!="CRI" & /// country!="DOM" & country!="MEX" & country!="PER" & country!="TTO" & country!="VEN", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), c) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="BRA" & country!="CHL" & country!="COL" & country!="CRI" & /// country!="DOM" & country!="MEX" & country!="PER" & country!="TTO" & country!="VEN", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), lag(1 1)) two small nol robust xtabond2 growth L.(gini lgdp syrm syrf pi) _Iper* if country!="BRA" & country!="CHL" & country!="COL" & country!="CRI" & /// country!="DOM" & country!="MEX" & country!="PER" & country!="TTO" & country!="VEN", iv(_Iper*) gmm(L.(syrm syrf pi gini lgdp), c lag(1 1)) two small nol robust * Vary measure of inequality gen r2040 = q5/(q1+q2) gen r2020 = q5/q1 gen middleclass = -q3-q4 xtabond2 growth L.(r2040 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2040 lgdp)) two small nol robust xtabond2 growth L.(r2040 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2040 lgdp), c) two small nol robust xtabond2 growth L.(r2040 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2040 lgdp), lag(1 1)) two small nol robust xtabond2 growth L.(r2040 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2040 lgdp), c lag(1 1)) two small nol robust xtabond2 growth L.(r2020 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2020 lgdp)) two small nol robust xtabond2 growth L.(r2020 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2020 lgdp), c) two small nol robust xtabond2 growth L.(r2020 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2020 lgdp), lag(1 1)) two small nol robust xtabond2 growth L.(r2020 lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi r2020 lgdp), c lag(1 1)) two small nol robust xtabond2 growth L.(middleclass lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi middleclass lgdp)) two small nol robust xtabond2 growth L.(middleclass lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi middleclass lgdp), c) two small nol robust xtabond2 growth L.(middleclass lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi middleclass lgdp), lag(1 1)) two small nol robust xtabond2 growth L.(middleclass lgdp syrm syrf pi) _Iper*, iv(_Iper*) gmm(L.(syrm syrf pi middleclass lgdp), c lag(1 1)) two small nol robust * Levine, Loayza, Beck 2000 * Load and prep LLB 5-year panel data set, which is from http://go.worldbank.org/L6LUN4UYD0 use "Levine-Loayza-Beck 2000 panel.dta", clear gen period= year-1900 xi i.period egen countrycode = group(code) tsset countrycode period replace growth = 100 * growth foreach var in privo lly btot gov trade { replace `var' = ln(`var' * 100) } foreach policycontrols in "gov lbmp lpi trade" "" { // do runs with and without policy controls foreach finvar in privo lly btot { // do runs for each of the three financial development proxies * best reproduction xtabond2 growth `finvar' linitial sec `policycontrols' _Iperiod_3-_Iperiod_7 /// if privo!=. & btot!=. & lly!=. & period>2, iv(_Iperiod_3-_Iperiod_7, eq(lev)) /// gmm(linitial, lag(1 1) split) gmm(sec L.(`finvar' `policycontrols'), lag(1 1)) h(2) two small robust * Same, but "collapse" instruments. Note low diff-Hansen p values. * First diff-Hansen test is for all sys-GMM instruments, third just for those based on initial GDP/capita xtabond2 growth `finvar' linitial sec `policycontrols' _Iperiod_3-_Iperiod_7 /// if privo!=. & btot!=. & lly!=. & period>2, iv(_Iperiod_3-_Iperiod_7, eq(lev)) /// gmm(linitial, lag(1 1) split collapse) gmm(sec L.(`finvar' `policycontrols'), lag(1 1) collapse) h(2) two small robust * Since system GMM instruments appear invalid, try switching to difference GMM xtabond2 growth `finvar' linitial sec `policycontrols' _Iperiod_3-_Iperiod_7 /// if privo!=. & btot!=. & lly!=. & period>2, iv(_Iperiod_3-_Iperiod_7) /// gmm(linitial sec L.(`finvar' `policycontrols'), lag(1 1)) two small robust noleveleq } }