I'd like to point out two things:
- Matthew uses old -estadd- syntax in his example. Please
update (-ssc install estadd, replace-) and see -help estadd-.
- The command
. estadd ysumm
adds the mean and standard deviation (and other statistics)
of the dependent variable to e().
Therefore, to report the mean and standard deviation of the
dependent variable in -estout-, you may type something like
. sysuse auto, clear
. regress price weight mpg
. estadd ysumm
. estout, stats(ymean ysd)
.
b
weight 1.746559
mpg -49.51222
_cons 1946.069
ymean 6165.257
ysd 2949.496
ben
Nick wrote:
Few first posts include two programs!
An important detail is that these programs
calculate results for all available values
of the dependent variable, regardless of what
was used in the model. You probably need
an -if e(sample)- restriction in each case.
Otherwise there is scope for cutting out middle macros:
program estadd_mu, eclass
syntax [ , prefix(name) * ]
su `e(depvar)' if e(sample), meanonly
ereturn scalar `prefix'mu = r(mean)
end
program estadd_sig, eclass
syntax [ , prefix(name) * ]
su `e(depvar)' if e(sample)
ereturn scalar `prefix'sig = r(sd)
end
Also, "sig" is an ambiguous name for a program.
I guess you have in mind "sigma" as the conventional
symbol for a population s.d. But "sig" means
"significance level" (i.e. P-value)
to many, perhaps more than it does "sd".
Matthew wrote:
Hi all,
This is my first post, so please bear with my if I have made some
mistakes. I spent some time with a colleague yesterday trying to
figure out how to get estout to report the means and standard
deviations of the dependent variables in the stats option, with r-
squared and N, etc. This proved to be quite a bit different from
reporting the means of the regressors, which is detailed in the
instructions. I thought I would post how I did it in case anyone
else found it useful. If there is a better way that anyone knows of,
then perhaps you can correct me, but this worked for me, and I could
not find a simpler way to do it.
*First, we create a subroutine (which I called "mu" and "sig"
respectively) to get the means and SDs from r( ) to e( ):
program estadd_mu, eclass
syntax [ , prefix(name) * ]
local depvar=e(depvar)
sum `depvar'
local mu=r(mean)
ereturn scalar `prefix'mu = `mu'
end
program estadd_sig, eclass
syntax [ , prefix(name) * ]
local depvar=e(depvar)
sum `depvar'
local sig=r(sd)
ereturn scalar `prefix'sig = `sig'
end
*Next, we use estadd, after the regression(s), and before estout, to
add the stats we generated to the stored estimates:
estadd [depvarlist], stats(mu sig)
*And finally, in the estout command, add mu and sig to the stats( )
option, along with other stats you may want.
That's all. I hope this is helpful.
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/