Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: st: David Roodman's new contribution for a system of equations: xtabond2
From
"Abdalla, Ahmed" <[email protected]>
To
"[email protected]" <[email protected]>
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: [email protected] <[email protected]> on behalf of Austin Nichols <[email protected]>
Sent: 03 February 2014 23:12
To: [email protected]
Cc: [email protected]
Subject: Re: st: David Droodman's new contribution for a system of equations: xtabond2
Ahmed <[email protected]>:
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 <[email protected]> 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 <[email protected]>
> 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:[email protected]]
> Sent: Wednesday, January 29, 2014 2:01 PM
> To: [email protected]
> 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/