Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Abdalla, Ahmed" <ahmed.abdalla@kcl.ac.uk> |
To | "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: David Roodman's new contribution for a system of equations: xtabond2 |
Date | Tue, 4 Feb 2014 16:04:08 +0000 |
Thanks Austin The code you posted works properly now. However, it is really complicated for me as being less experienced in Stata programming and was not easy for me to follow up with the commands. I tried to change the variables to fit with my system of equations, but was not able ! I will greatly appreciate if it is possible to edit this code to test if a+b-f=c+e+g in x1 t= con1+ a x1t-1 + b x2 t-1 + c x3 t-1 + error1 t x2 t= con2+ e x1t-1 + f x2 t-1 + g x3 t-1 + error2 t and if it is possible to apply that on 4 equations such that: x1 t= con1+ a x1t-1 + b x2 t-1 + c x3 t-1 + error1 t x2 t= con2+ e x1t-1 + f x2 t-1 + g x3 t-1 + error2 t x3 t= cons3+ h x1t-1 + i x2 t-1 + j x3 t-1 + error3 t y t = cons3+ k x1t + m x2 t + n x3 t + error4 t and test a+e-h= b+c-f+i=c+g-j+e You help and David's will be greatly appreciated and acknowledged in my project. Many thanks Ahmed ________________________________________ From: owner-statalist@hsphsun2.harvard.edu <owner-statalist@hsphsun2.harvard.edu> on behalf of Austin Nichols <austinnichols@gmail.com> Sent: 03 February 2014 23:12 To: statalist@hsphsun2.harvard.edu Cc: droodman@gmail.com Subject: Re: st: David Droodman's new contribution for a system of equations: xtabond2 Ahmed <ahmed.abdalla@kcl.ac.uk>: You are unlikely to get good answers to a question that includes no details on the nature of your error messages, but David's code runs fine for me, and is a very nice illustration IMHO, though I rewrote some of the long lines using locals so I can cut and paste the whole thing into the Command window: webuse abdata, clear global xtiv loc tv:char _dta[tis] sum `tv', mean qui forv t=`r(min)'/`r(max)' { foreach var in n k { forv lag=2/3 { cap drop `var'`t'L`lag' g double `var'`t'L`lag' = L`lag'.`var' if `tv' == `t' glo xtiv $xtiv `var'`t'L`lag' } } } qui recode $xtiv (. = 0) xtabond2 k L.n L.k w L.w, iv(w L.w) gmm(n k, lag(2 3)) nolev two r xtabond2 n L.n L.k w L.w, iv(w L.w) gmm(n k, lag(2 3)) nolev two r *exact matches using gmm loc eq1 (D.k-{b_kn}*LD.n-{rho_k}*LD.k-{b_kw}*D.w-{b_kLw}*LD.w) loc eq2 (D.n-{rho_n}*LD.n-{b_nk}*LD.k-{b_nw}*D.w-{b_nLw}*LD.w) loc o1 nolog inst(1:D.w LD.w, nocons) loc o1 `o1' xtinstruments(n k, lags(2/3)) loc o1 `o1' winitial(xt D) loc o1 `o1' wmatrix(cluster `:char _dta[iis]') loc o1 `o1' vce (cluster `:char _dta[iis]') loc o1 `o1' variables(D.k LD.n LD.k D.w LD.w) loc d1 deriv(1/rho_k = -1*LD.k) loc d1 `d1' deriv(1/b_kn = -1*LD.n) loc d1 `d1' deriv(1/b_kw = -1*D.w) loc d1 `d1' deriv(1/b_kLw = -1*LD.w) loc d2 deriv(1/rho_n = -1*LD.n) loc d2 `d2' deriv(1/b_nk = -1*LD.k) loc d2 `d2' deriv(1/b_nw = -1*D.w) loc d2 `d2' deriv(1/b_nLw = -1*LD.w) gmm `eq1', `o1' `d1' two gmm `eq2', `o1' `d2' two *now switch to igmm--changes coefs a little gmm `eq1', `o1' `d1' igmm gmm `eq2', `o1' `d2' igmm *simult. est. provides good match despite change to winitial(id) loc o2 nolog inst(1:D.w LD.w $xtiv, nocons) loc o2 `o2' inst(2:D.w LD.w $xtiv, nocons) loc o2 `o2' winitial(identity, indep) loc o2 `o2' wmatrix(cluster `:char _dta[iis]', indep) loc o2 `o2' vce (cluster `:char _dta[iis]', indep) loc o2 `o2' variables(D.k LD.n LD.k D.w LD.w) loc o2 `o2' deriv(1/rho_k = -1*LD.k) loc o2 `o2' deriv(1/b_kn = -1*LD.n) loc o2 `o2' deriv(1/b_kw = -1*D.w) loc o2 `o2' deriv(1/b_kLw = -1*LD.w) loc o2 `o2' deriv(2/rho_n = -1*LD.n) loc o2 `o2' deriv(2/b_nk = -1*LD.k) loc o2 `o2' deriv(2/b_nw = -1*D.w) loc o2 `o2' deriv(2/b_nLw = -1*LD.w) gmm `eq1' `eq2', `o2' igmm *cross-equation coefficient test test [b_kn]_cons = [b_nk]_cons On Mon, Feb 3, 2014 at 5:25 PM, Abdalla, Ahmed <ahmed.abdalla@kcl.ac.uk> wrote: > Dear Statalist > David Roodman, the author of xtabond2, kindly contributed by a code to calculate Arellano Bond estimators for a two equation system after we exchanged some emails. > I am not sure why the code didn't work when I tried to run it. It seems that I miss something. Also not sure if the problem David mentioned below would be easily treated if I have multiple equations (2 or 4 equations in the system). > > David permitted me to post his code on Statalist, so the floor is open to all if anyone can contribute to David's code. > > Any advice ? > > > ________________________________________ > From: Abdalla, Ahmed > Sent: 01 February 2014 18:03 > To: David Roodman > Subject: RE: issues with David Droodman's xtabond2 > > Dear David > I really appreciate that, and it will be acknowledged ! > I tried to run the code you sent but unfortunately it didn't work (error messages). I can't find where the problem comes from to debug the code. Also, does this code allow me to test across equations restrictions post estimation ? > Also, would it be easier if I have multiple equations (i.e. 2 or 4 equations in the system) rather than 3 ? > > > Best regards > Ahmed > ________________________________________ > From: David Roodman <droodman@gmail.com> > Sent: 29 January 2014 19:24 > To: Abdalla, Ahmed > Subject: RE: issues with David Droodman's xtabond2 > > Dear Ahmed, > Have you looked at Stata's gmm command? I think it can fit several > equations at once. And I think the documentation provides examples of using > it for Arellano-Bond. > Best, > --David > > -----Original Message----- > From: Abdalla, Ahmed [mailto:ahmed.abdalla@kcl.ac.uk] > Sent: Wednesday, January 29, 2014 2:01 PM > To: droodman@gmail.com > Subject: issues with David Droodman's xtabond2 > > Dear David > I am a PhD candidate in accounting, King's College London. I thought to > approach you as an author of xtabond2. Any suggestions will be fully > acknowledged. > > I am estimating a system of "dynamic" equations in an "unbalanced panel > dataset" such that: > x1 t= a x1t-1 + b x2 t-1 + c x3 t-1 + error1 t > x2 t= e x1t-1 + f x2 t-1 + g x3 t-1 + error2 t > x3 t= h x1t-1 + i x2 t-1 + j x3 t-1 + error3 t > > My main objective is to test restrictions on the coefficients (across > equations) that are motivated by theory. > As far as I know, the only possible way to test across-equations > restrictions is probably to estimate the system as seemingly unrelated > regressions in Stata using -sureg-However, seemingly unrelated regressions > are inconsistent when lagged dependent variables are included in the RHS > (i.e. dynamic models) > > In this case, you have kindly contributed by the Stata command xtabond2 > (extending xtabond in Stata) that run Arellano-Bond dynamic panel GMM > estimation. > > My inquiries are: > > Does xtabond2 extend to estimate a system of equations rather than a single > equation in an unbalaced dataset and allow for testing across equation > restrictions "post estimation" ? is it also possible in xtabond or any other > Stata commands? > > Is there any other commands in Stata that can test across equations > restrictions in a system of dynamic models? > > Thanks * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/