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]

st: RE: Output regression table with significance at some level indicate in bold font


From   "Andreas Peichl" <a.peichl@wiso.uni-koeln.de>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: Output regression table with significance at some level indicate in bold font
Date   Thu, 9 Dec 2010 17:35:10 +0100

Dear Statalisters,

I've asked a question about highlighting the significant results in bold (ot
italics) after -estab- (see below). I was asked whether I found a solution.
I did it manually - and so far it heavily depends to the exact layout of my
table. Maybe it is helpful for someone. Any comments and suggestions are of
course welcome.

Cheers,
Andreas

(the full code is below, I start with some comments on some elements):

The code works as follows:
		file open original using results/`tab'.tex, read text
		file open new using results/`tab'_bold.tex, write replace
		local linenum = 0
		file read original line
		while r(eof)==0 {

you read in the tex table from esttab

at the end, it will be written to another file:
			file write new `"`macval(newline)'"' _n
			file read original line 
		}
		file close original
		file close new


in between is the manipulation of each line using tex codes and regular
expressions. 

e.g.:
					if
regexm("`w`w''","^(.*)\sym{.*}&$") == 1 { //.*   --> bold for 3 stars
						if `CONSline' == 0 local to
= "\textbf{" + regexs(1) +"}&" 
						else if `CONSline' == 1 {
							local expres =
regexs(1)
							local expres :
subinstr local expres "\" "" , all 
							local to =
"\textbf{`expres'}&"
							if
regexm("`expres'","^(.*)\.[0-9][0-9][0-9]$") == 1 local to = "\textbf{" +
regexs(1) +"}&" 
						}
						local newword : subinstr
local w`w' "`w`w''" "`to'", all
						local newword : subinstr
local newword "\}&" "}&", all
					} // if


This searches for anything that end with "\sym{.*}&" In the tex code and
replace it with \textbf{ anything }



At the end, I define a macro newline which will then be written to the file:

				local newline "`newline'`newword' "
				mac shift
			} // w / while


I hope this helps.

Cheers,
Andreas

Here is the full code:

	cap file close _all
		file open original using results/`tab'.tex, read text
		file open new using results/`tab'_bold.tex, write replace
		local linenum = 0
		file read original line
		while r(eof)==0 {
		    local linenum = `linenum' + 1
			*display %4.0f `linenum' _asis `"  `macval(line)'"'
			*** local    lclname [=exp | :extended_fcn |
[`]"[string]"['] ]
			local oldline `"`macval(line)'"'	
			*** word count /  word # of
			*local words : word count "`oldline' "
			tokenize "`oldline'"
			local newline ""
			local w 0
			while "`1'" !="" {
				local w= `w' + 1
				local w`w' `1'
				if `w' ==1 {
					local w`w' : subinstr local w`w'
"BVmX\_" "", all 
					local w`w' : subinstr local w`w'
"u\_Vm" "Unobserved", all  
					if "`w`w''" == "Constant" local
CONSline = 1
					else local CONSline = 0
				} // if
				***  subinstr local mname "from" "to", all
word
				local newword "`w`w''" //
`"`macval(oldline)'"'
				if `linenum'>=7 { // lines 1-6 are headers
necessary prob with mutlicolumn line; be careful if using different esstab
options !!!
					if
regexm("`w`w''","^(.*)\sym{.*}&$") == 1 { //.*   --> bold for 3 stars
						if `CONSline' == 0 local to
= "\textbf{" + regexs(1) +"}&" 
						else if `CONSline' == 1 {
							local expres =
regexs(1)
							local expres :
subinstr local expres "\" "" , all 
							local to =
"\textbf{`expres'}&"
							if
regexm("`expres'","^(.*)\.[0-9][0-9][0-9]$") == 1 local to = "\textbf{" +
regexs(1) +"}&" 
						}
						local newword : subinstr
local w`w' "`w`w''" "`to'", all
						local newword : subinstr
local newword "\}&" "}&", all
					} // if
					if
regexm("`w`w''","^(.*)\sym{.*}\\") == 1 { // end of line 3 stars 
						if `CONSline' == 0 local to
= "\textbf{" + regexs(1) +"}\\" 
						else if `CONSline' == 1 {
							local expres =
regexs(1)
							local expres :
subinstr local expres "\" "" , all 
							local to =
"\textbf{`expres'}\\"
							if
regexm("`expres'","^(.*)\.[0-9][0-9][0-9]$") == 1 local to = "\textbf{" +
regexs(1) +"}\\" 
						}
						local newword : subinstr
local w`w' "`w`w''" "`to'", all
						local newword : subinstr
local newword "\}\\" "}\\", all
					} // if
					if
regexm("`w`w''","^(.*)\sym{\*\*}$") == 1 { //.*   --> bold italics for 2
stars
						if `CONSline' == 0 local to
= "\textbf{\emph{" + regexs(1) +"}}"  
						else if `CONSline' == 1 {
							local expres =
regexs(1)
							local expres :
subinstr local expres "\" "" , all 
							local to =
"\textbf{\emph{`expres'}}"
							if
regexm("`expres'","^(.*)\.[0-9][0-9][0-9]$") == 1 local to =
"\textbf{\emph{" + regexs(1) +"}}" 
						}
						local newword : subinstr
local w`w' "`w`w''" "`to'", all
						local newword : subinstr
local newword "\}}" "}}", all
					} // if
					if regexm("`w`w''","^(.*)\sym{\*}$")
== 1 { //.*   --> bold for 1 stars
						if `CONSline' == 0 local to
= "\emph{" + regexs(1) +"}" 
						else if `CONSline' == 1 {
							local expres =
regexs(1)
							local expres :
subinstr local expres "\" "" , all 
							local to =
"\emph{`expres'}"
							if
regexm("`expres'","^(.*)\.[0-9][0-9][0-9]$") == 1 local to = "\emph{" +
regexs(1) +"}" 
						}
						local newword : subinstr
local w`w' "`w`w''" "`to'", all
						local newword : subinstr
local newword "\}" "}", all
					} // if
					local newword : subinstr local
newword "\sym{***}" "\textbf{bold}", all 
					local newword : subinstr local
newword "\textbf{}" "\textbf{bold}", all
					local newword : subinstr local
newword "\textbf{\emph{}}" "\textbf{\emph{bold italics}}", all
					local newword : subinstr local
newword "\emph{}" "\emph{italic}", all
				} // linenum if
				local newline "`newline'`newword' "
				mac shift
			} // w / while
			file write new `"`macval(newline)'"' _n
			file read original line 
		}
		file close original
		file close new
	} // foreach tab



________________________________________
From: Stephanie Vermeer [mailto:vermeerstephanie@gmail.com] 
Sent: Monday, December 06, 2010 7:20 PM
To: a.peichl@wiso.uni-koeln.de
Subject: Stata

Dear Andreas,
 
Did you find already an solution to highlight the significant results in
bold, using stata and -esttab- or -estout-? I'm dealing with the same
question!
 
Thanks in advance,
 
Stephanie

-----Original Message-----
From: owner-statalist@hsphsun2.harvard.edu
[mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Andreas Peichl
Sent: Saturday, October 16, 2010 7:35 PM
To: statalist@hsphsun2.harvard.edu
Subject: st: Output regression table with significance at some level
indicate in bold font

Dear Statalisters,

I'm estimating regression models for 27 different countries and I'm using
-estout- and / or -eststo-, -esttab- to output the regression results to
LaTeX. The tables are getting rather big and I would like to highlight the
significant results in bold (ot italics) and surpress the standard errors /
t-stats as well as the "stars". Is it possible to do this with -estout- (I
couldn't find it in the help) or with any other program?

Any help is appreciated.
Cheers,
Andreas


*
*   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/

*
*   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