简体   繁体   中英

Including notes on stargazer table distorts distance between columns

I'm trying to print some tables of my plm models using stargazer package. Everything was ok until I tried to add notes to my table. Unfortunately, when I add notes, the output table is distorted, with big blank spaces between each column. Can anyone help me fix it? Thanks in advance!

Note: I'm still learning Latex, so a solution that also works with html would be welcome

#Here I create a simple data.frame just to replicate my data
vector <- rep(0,72)

for (i in 1:72) {
  vector[i] <- rnorm(1)
}

data <- as.data.frame(matrix (vector, nrow = 7))

#This outputs a normal table, with normal space width between columns
stargazer(data,
          type = "text",
          style = "AER")

#This is the note I want to print. However, it returns an error if I space it out like that.
stargazer(data,
          type = "text",
          notes = c("All models were estimated by fixed effects estimator. Errors are robust to heteroscedasticity and 
                    autocovariance. Numbers between parenthesis are the coefficient standard deviations. * represents 
                    significance at the 10 % level, ** represents significance at the 5% level, and *** represents significance 
                    at the 1% level. Models (1), (2) and (3) refer, respectively, to equations (7), (8) and (9)"),
          style = "AER")


#This outputs the table. However, there are big blank spaces between columns. How do I fix this?
stargazer(data,
          type = "text",
          notes = c("All models were estimated by fixed effects estimator. Errors are robust to heteroscedasticity and autocovariance. Numbers between parenthesis are the coefficient standard deviations. * represents significance at the 10 % level, ** represents significance at the 5% level, and *** represents significance at the 1% level. Models (1), (2) and (3) refer, respectively, to equations (7), (8) and (9)"),
          style = "AER")

LaTeX solution

I had a similar issue, and here's my solution for LaTeX.

First, you need a separate function that creates its own minipage where the note is included.

library(stargazer)

stargazernote <- function(starGazerCmd, outputfile, note){
  # inserts 'note' to the end of stargazer generated latex table
  ssn <- gsub(x=starGazerCmd, pattern='\\end{tabular}',
              replacement=paste('\\end{tabular}', '\n',
                                '\\centerline{\\begin{minipage}{0.95\\textwidth}~\\', '\n',
                                '\\footnotesize{' , note, 
                                '} \\end{minipage}}',  sep=''), fixed=T)

  cat(ssn,sep='\n',file=outputfile)
}

(You might want to play around with the parameter {0.95\\textwidth} . Some people like slightly wider or narrower width for their notes.)

Create your stargazer latex table without the note as follows:

s <- stargazer(data,
          type = "latex",
          style = "AER",
          notes.append=FALSE,
          )

Then create the note separately:

note <- "All models were estimated by fixed effects estimator. Errors are robust to heteroscedasticity and autocovariance. Numbers between parenthesis are the coefficient standard deviations. * represents significance at the 10 \\% level, ** represents significance at the 5\\% level, and *** represents significance at the 1\\% level. Models (1), (2) and (3) refer, respectively, to equations (7), (8) and (9)"

Here's a first gotcha: the % sign is interpreted as a comment symbol by LaTeX, so you need to escape your % 's by prepending them with \\ .

Now you can use the function above to collate the note and the LaTeX table:

stargazernote(s, note=note, outputfile='foo.tex')

The output looks like this: 在此处输入图像描述

The second gotcha is that you need to remember to include graphicx in your LaTeX file. Here's what a.tex file might look like:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}

\usepackage{graphicx} %% note: the table will not render without this package. 

\begin{document}
\include{foo.tex}
\end{document}

Text solution

You can force line changes in notes like this (this is copied from this SO question ):

stargazer(data,
          type = "text",
          notes= c("All models were estimated by fixed effects estimator.", 
                    "Errors are robust to heteroscedasticity and autocovariance.", 
                    "Numbers between parenthesis are the coefficient standard deviations.", 
                    "* represents significance at the 10 % level", 
                    "** represents significance at the 5% level,", 
                    "and *** represents significance at the 1% level.", 
                     "Models (1), (2) and (3) refer, respectively, to equations (7), (8) and (9)"),
          style = "AER")

Output:

=================================================================================
Statistic             N       Mean   St. Dev.   Min    Pctl(25) Pctl(75)   Max   
---------------------------------------------------------------------------------
V1                    7      0.184    0.380    -0.230   -0.004   0.231    0.957  
V2                    7      -0.083   1.018    -1.246   -0.827   0.631    1.322  
V3                    7      -0.058   0.752    -0.733   -0.610   0.495    1.025  
V4                    7      -0.316   1.106    -2.223   -0.725   0.412    1.120  
V5                    7      -0.242   0.927    -1.777   -0.809   0.397    0.743  
V6                    7      -0.020   1.403    -1.453   -1.202   0.756    2.348  
V7                    7      0.565    1.130    -1.459   0.156    1.224    2.023  
V8                    7      0.840    0.938    -0.493   0.334    1.302    2.256  
V9                    7      -0.191   0.761    -1.012   -0.766   0.236    1.107  
V10                   7      0.530    0.643    -0.222   0.144    0.680    1.768  
V11                   7      0.263    0.396    -0.230   -0.004   0.432    0.957  
---------------------------------------------------------------------------------
All models were estimated by fixed effects estimator.                            
Errors are robust to heteroscedasticity and autocovariance.                      
Numbers between parenthesis are the coefficient standard deviations.             
* represents significance at the 10 % level                                      
** represents significance at the 5% level,                                      
and *** represents significance at the 1% level.                                 
Models (1), (2) and (3) refer, respectively, to equations (7), (8) and (9)   

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM