Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <n.j.cox@durham.ac.uk> |
To | "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |
Subject | st: RE: Stata Program Command |
Date | Fri, 15 Jun 2012 15:53:31 +0100 |
That's what you ask for. You create a matrix with one row; then if all goes well, you add the same row as a second row. Cutting that out, I advise 1. Using temporary names to avoid conflicts. 2. Using -syntax- to indicate an option. 3. Using -sqrt()- not powering for square roots. 4. More checking and labelling. Something like program define grabest version 8 syntax [, MATrix(string) ] if "`e(cmd)'" != "regress" { di as err "no regress results in memory" exit 498 } if "`matrix'" == "" local matrix "X" tempname betas beta var se matrix `betas' = e(b) scalar `beta' = `betas'[1,1] matrix `var' = e(V) scalar `se' = sqrt(`var'[1,1]) matrix `matrix' = `beta', `e(N)', `se' matrix colnames `matrix' = beta N se end But comparable to -eststo- this is not! Nick n.j.cox@durham.ac.uk Hassan Enayati I am trying to write my first Stata program and am having some difficulties. At the end of the day, I would like a program (like eststo but not really the same b/c of formatting issues) that grabs certain results from a series of regressions (always a simple regressions) and stores these results in a matrix. Below is the program. The interesting problem is that the matrix contains duplicate rows of the last regression and always only two rows. clear all sysuse auto capture matrix drop X capture program drop grabest program define grabest matrix betas = e(b) matrix beta = betas[1,1] matrix num = e(N) matrix var1 = e(V) scalar se1 = ( var1[1,1])^(0.5) matrix X = beta, num, se1 capture confirm matrix X if _rc==111 { matrix X = beta,num,se1 } else { matrix X = X \ beta,num,se1 } matrix drop betas beta num var1 scalar drop se1 end reg price weight grabest reg length turn grabest reg turn weight grabest matrix list X An additional question I have deals more directly with the construction of the program. How do I create the program so that it generates a matrix with a name I specify. Hence, I would like to be able to write: grabest, matrix(autos1) where autos1 = X in the above example. * * 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/