Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

RE: st: RE: Stata Program Command


From   Nick Cox <n.j.cox@durham.ac.uk>
To   "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu>
Subject   RE: st: RE: Stata Program Command
Date   Fri, 15 Jun 2012 19:30:36 +0100

On the evidence provided, Hassan is doing nothing -by:-, so -statsby- can't help. 

Nick 
n.j.cox@durham.ac.uk 

Swanquist, Quinn Thomas

Not sure what context you need this program for but you may want to try -statsby- to collect your statistics in an output file. The output can be appended to collect the results of several regressions.

Hassan Enayati

Nick,

Thank you for the advice. I still need the program to populate a matrix with the results of more than one regression. Your example program only stores the most recent regression results. Do you have any advice on how to write a program that stores the results of several regressions. For example:

reg price weight
grabest
reg price turn
grabest

Then the matrix created by grabest would contain the results of the first regression on row one and the results of the second regression on row two.

Thanks.

On Fri, Jun 15, 2012 at 10:53 AM, Nick Cox <n.j.cox@durham.ac.uk> wrote:
> 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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index