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]

From |
Christopher Baum <kit.baum@bc.edu> |

To |
"statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |

Subject |
Re: st: Loop fails to replace missing values |

Date |
Fri, 6 Dec 2013 08:42:09 +0000 |

<> On Dec 5, 2013, at 7:33 AM, Richard wrote: > > Have a loop with a REPLACE command which fails to update the missing values with valid numeric values. > > The loop is as follows: > > destring gvkey, replace > egen id = group(gvkey), label > gen date1 = yq(year, fqtr) > tsset id date1, quarterly > su id, meanonly > local limit=r(max) > foreach v in tstat { > g `v' = . > } > gen which = "" > > forval i = 1/`limit' { > display "Iteration of `i' of `limit" > replace which = "`: label (id) `i''" in `i' > dfgls fcf if id == `i' , maxlag(4) ers > matrix b = e(b) > matrix v1 = e(V) > scalar coeff = b[1,1] > scalar se1 = sqrt(v1[1,1]) > scalar tstat = coeff/se1 > qui foreach v in tstat { > > replace `v' = r(`v') in `i' > > } > } > > The -dfgls- program generates the e(b) and e(V) matrices, but I'm unsure if my use of "scalar" in this situation is correct. As one of the original authors of -dfgls-, I would point out that it is an r-class program, not an e-class program, so it does not explicitly return e(b) and e(V). As its internals involve running a series of -regress- commands, those objects are of course defined in the process, but you should be very careful in using them. For instance, your command above > dfgls fcf if id == `i' , maxlag(4) ers causes 4 regressions to be executed, but only the last -- the one pertaining to lag(1) -- is accessible. Thus, you might as well say maxlag(1), as that is the only result you will be able to access in e(b() and e(V). Furthermore, all of the code > matrix b = e(b) > matrix v1 = e(V) > scalar coeff = b[1,1] > scalar se1 = sqrt(v1[1,1]) > scalar tstat = coeff/se1 is quite unnecessary, as it merely redefines the last element of column 4 of r(results). If after running -dfgls- you -mat list r(results)- you will see that the dfgls statistics for each lag (not just the first lag) are accessible there, and can be extracted and retabulated however you wish. In general you should only access e(b) and e(V) from an e-class program, which is guaranteed to return them. Kit Kit Baum Professor of Economics and Social Work, Boston College, Chestnut Hill MA, USA DIW Research Professor, Department of Macroeconomics, DIW Berlin, Berlin, Germany baum@bc.edu | http://ideas.repec.org/e/pba1.html * * 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/

- Prev by Date:
**Re: st: outsheet and insheet** - Next by Date:
**Re: st: xtabond2** - Previous by thread:
**RE: st: Loop fails to replace missing values** - Next by thread:
**st: Is this the right code if I want to compare group 1 vs group 4 in a logistic regression model?** - Index(es):