Statalist


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

Re: st: re: controlling output in the results window


From   Thomas Jacobs <thomasjacobs@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: re: controlling output in the results window
Date   Fri, 20 Feb 2009 22:30:24 -0600

Kit,

I am back again, having studied your slides.  I have some conceptual
questions.  I was unable to convert my called do file to an ado nor
understand several of the posts people submitted in response to my
inquiries on the conversion.  So, having read your slides I took the
section of my called do file that I was unable to silence with the
quietly command and attempted to make it a mata function, but I have
been unable to get that to work, either.  One thing I have noticed is
that the Stata manuals in M-1 ado - using Mata with ado files and your
slides always seem to imply that a mata function is called from a
stata program passing stata variables.  In my case, I have a stata
program with significant sections of mata code and mata variables
created prior to the called mata function, so I am left wondering how
does one pass mata variables to a mata function?  If this is not
permitted, does this mean I need to broaden my mata function to
include all the mata code in the stata program and pass stata
variables as in the examples?

Here is the code section I am trying to convert to a mata function
right below the end of the quietly command where colFirm,
FirmModelResults, and FirmModelVar are mata variables created earlier:

*end quietly
}

mata:

//Used one pass loop to clean up output
for (mh=1; mh<=1;mh++) {

	printf("Results for Event Period beginning with trading day %4.0f and
ending at day %4.0f\n",
		 strtoreal(st_local("EventBeginDay")), strtoreal(st_local("EventEndDay")))
	printf("Average Firm Adjusted R Square %12.4f\n",FirmModelResults[1,colFirm])
	printf("\n")
	printf("{txt}Average Firm Model{c |}        Coef        SampSE
t-stat       p-val\n")
	printf("{hline 18}{c +}{hline 52}\n")

	for (mi=1; mi<= colFirm-1; mi++) {

		printf("{txt}   %13s  {c |}", FirmModelVar[mi])
	
		for (mj=1; mj <=4; mj++) {

			printf("{res}    %9.4f",FirmModelResults[mj,mi])

		}
	
		printf("\n")

	}

}

end

Here is the do file I use to create the function (as a side question,
every time I run this the replace option fails giving me an error that
the .mo already exists and I have to manually delete it and restart
stata.  I have posted this to tech support to see if this is a bug but
thought I would mention in case you see something I am doing wrong):

*PooledResultsMo.do
version 10.1
mata:
void PooledResultsMo(real scalar colFirm, string scalar
FirmModelResults, string scalar FirmModelVar)
{
	printf("Results for Event Period beginning with trading day %4.0f and
ending at day %4.0f\n",
		 strtoreal(st_local("EventBeginDay")), strtoreal(st_local("EventEndDay")))
	printf("Average Firm Adjusted R Square %12.4f\n",FirmModelResults[1,colFirm])
	printf("\n")
	printf("{txt}Average Firm Model{c |}        Coef        SampSE
t-stat       p-val\n")
	printf("{hline 18}{c +}{hline 52}\n")

	for (mi=1; mi<= colFirm-1; mi++) {

		printf("{txt}   %13s  {c |}", FirmModelVar[mi])
	
		for (mj=1; mj <=4; mj++) {

			printf("{res}    %9.4f",FirmModelResults[mj,mi])

		}
	
		printf("\n")

	}
}

mata mosave PooledResultsMo(), dir(PERSONAL) replace
end

And here is the error I get when I try to execute the entire program
where a do file calls a do file which calls PooledResultsMo:


. *end quietly
. }
. mata:PooledResultsMo("`colFirm'", "`FirmModel'", "`FirmModelVar'" )
       PooledResultsMo():  3253  <tmp>[1,1] found where real required
                 <istmt>:     -  function returned error
r(3253);

end of do-file
r(3253);

end of do-file

r(3253);

Any thoughts GREATLY appreciated!

Tom
On Fri, Feb 20, 2009 at 4:54 PM, Thomas Jacobs <thomasjacobs@gmail.com> wrote:
>
> Kit,
>
> Thanks for sharing this.  I missed it having worked off Nick's earlier
> reply regarding a sample ado.  It is very helpful.
>
> Tom
>
> On Tue, Feb 17, 2009 at 2:13 PM, Christopher Baum <baum@bc.edu> wrote:
> > <>
> > Tom said
> >
> > Thanks for the reply. Please forgive my ignorance but I am unsure how to
> > follow your advice. My Stata programming experience only recently extended
> > to successfully calling a do file from another do with arguments, etc. Is
> > creating a function simply creating an ado file? If not, is there anywhere
> > in the manuals that I might find an example?
> >
> > As a matter of fact,
> >
> > http://ideas.repec.org/p/boc/fsug08/7.html
> >
> > Kit Baum, Boston College Economics and DIW Berlin
> > http://ideas.repec.org/e/pba1.html
> > An Introduction to Modern Econometrics Using Stata:
> > http://www.stata-press.com/books/imeus.html
> >
> > *
> > *   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/
> >
>
>
>
> --
> Thomas Jacobs



--
Thomas Jacobs
*
*   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   |   What's new   |   Site index