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]
st: How to incorporate several dependent variables to the moment evaluating function in gmm?
From
Christoph Jäckel <[email protected]>
To
[email protected]
Subject
st: How to incorporate several dependent variables to the moment evaluating function in gmm?
Date
Mon, 26 Nov 2012 15:30:58 +0100
Hello Stata experts,
I'm just learning Stata and I'm struggling with the following
problem. I want to map a time-series regression with several dependent
variables into a GMM.
Let's make a small example. I have two dependent variables y1 and y2
and one explaining factor x1. Then I get the following moments that
should all be zero:
E[(y1 - a1 - b1 * x1)]
E[(y2 - a2 - b2 * x1)]
E[(y1 - a1 - b1 * x1)x1]
E[(y2 - a2 - b2 * x1)x1]
where a1, a2, b1, and b2 are the parameters to estimate. I found this
link on the list that deals with several equations in a GMM:
http://www.stata.com/statalist/archive/2011-06/msg00363.html
However, as far as I can see, the dependent variable is not changed.
What I actually want: I want to pass a list of vectors to the moment
evaluating function and create the relevant moments for each vector of
that list. Those vectors are the dependent variables.
I think it's clearer when I show you what I tried so far.
_______________
sysuse auto, clear
program mygmm
version 12
syntax varlist [if] , at(name) mylhs(varlist)
local eq1 : word 1 of `mylhs'
local eq2 : word 2 of `mylhs'
*Approach 1: Breaks with error "varlist not allowed"
* quietly replace `eq1' = `eq1' - `at'[1,1] - `at'[1,3]*turn
* quietly replace `eq2' = `eq2' - `at'[1,2] - `at'[1,4]*turn
*Approach 2: Breaks with error "varlist not allowed"
local j=1
foreach lhs of varlist `mylhs' {
replace `mylhs' = `mylhs' - `at'[1,j] - `at'[1,2 + j]*turn
j = j + 1
}
end
gmm mygmm, nequations(4) nparameters(4) mylhs(mpg headroom)
instruments(turn) winitial(identity)
_______________
Here, I took the example from the link above, but I am now trying to
have two different dependent variables, namely mpg and headroom. I
tried two approaches: the first is pretty similar to the one given in
the link, the second just loops to the mylhs list. Both don't work,
and I don't quite understand why. I hope I passed the arguments
correctly, but to be fair, I'm not sure if I do. I don't quite get the
syntax of the example in the link, to start with. What should a moment
evaluating function do exactly? What should it return? In the examples
I found, it always sets `varlist' to the moments that should be zero,
which makes sense to me. For instance, here
(http://www.stata.com/features/generalized-method-of-moments/gmm.pdf)
on p. 27 the last line is
replace `varlist' = `mylhs' - `mu'*`ybar'/`mubar' `if'
I think I get this: `varlist' is set to an expression that depends on
the parameters and then a search for the parameters is started that
should sets `varlist' to zero (since Moments=Parameters). My problem
is that
my `varlist' is not just one vector as in the examples I found, but a
list of factors.
Note that the above example is simple enough to just give the formulas:
_______________
#delimit ;
gmm (mpg - ({alpha1=0} + {beta1=0}*turn))
(headroom - ({alpha2=0} + {beta2=0}*turn))
, inst (turn) onestep winitial(identity) ;
#delimit cr
_______________
However, I want to run more complicated models and therefore I need to
know how to write moment evaluating functions correctly. Any help is
greatly appreciated.
Christoph
*
* 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/