[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Glenn Goldsmith <glenn.goldsmith@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
st: coefficients lost when mata code placed in eclass program |

Date |
Mon, 17 Aug 2009 20:09:34 +0100 |

<> I assume that the problem is that your local x1name doesn't exist inside the -gmmbarg- program, so x1 ends up being empty. There are a number of ways to get around this. You could either: 1. define the local inside -gmmbarg-, between your -prog def- line and your call to -gmmrsk()- 2. pass the varlist as an argument to -gmmbarg- 3. use a global instead. HTH, Glenn. "Nelson, Carl" <chnelson@illinois.edu> wrote: I have the following mata program to estimate parameters by exactly identified gmm mata: mata clear mata: mata set matastrict on void gmmrsk(string scalar yname, string scalar hname, /// string scalar x2name, string scalar x1name) { real colvector y, coeff, coeffreduce, coeffstruc, c1, c2, c real matrix h, x1, x2, xx, b11, b12, b21, b22, b real scalar samvar, lambda y = st_data(.,yname) h = st_data(.,tokens(hname)) x2 = st_data(., tokens(x2name)) st_view(x1, .,tokens(st_local(x1name))) lambda = 106.1196 // construct matrices for parameter estimation // pieces are constructed and put together // coefficient estimated // first collect x into a single matrix xx = x2, x1 // form sub-matrices of cross product matrix b11 = h'h b12 = h'xx b21 = lambda*(xx'h) b22 = xx'xx c1 = h'y c2 = xx'y c = c1 \ c2 b = (b11 , b12) \ (b21, b22) coeff = luinv(b)*c // return coefficient vector to stata to bootstrap standard errors st_matrix("coeff",coeff) } end When I run this program with mata: gmmrsk("share_riskyassets_broad","risktol_m risktol_f","wlt wlt2","x1name") matrix dir coeff[21,1] x1name is a local macro containing the names of 17 variables, so 21 is the right dimension for coeff When I place gmmrsk in an eclass program in order to bootstrap, as follows . // Bootstrap gmm estimation to get standard errors . . capt prog drop gmmbarg . prog def gmmbarg, eclass 1. mata: gmmrsk("share_riskyassets_broad","risktol_m risktol_f","wlt wlt2","x1name") 2. matrix b = coeff' 3. ereturn post b 4. ereturn local cmd = "bootstrap" 5. end . gmmbarg . matrix dir coeff[4,1] I have lost 17 coefficients, and I don't understand why I lost them. What have I done wrong in the program gmmbarg? Thanks. Carl Nelson * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

- Prev by Date:
**Re: Re: st: How to make certain variable names and related coefficients red in the word in the -estout-?** - Next by Date:
**Re: zero inflated beta [was: st: Information request]** - Previous by thread:
**st: RE: AW: rationalizing multiple ids for the same name** - Next by thread:
**st: egen(more) panel data MA by group/year** - Index(es):

© Copyright 1996–2017 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |