R - stargazer add reference categories
Asked Answered
I

2

6

I was wondering if someone came with a solution to show up the reference categories of categorical variables using stargazer?

library(stargazer) 

Let us imagine that gear and carb are categorical variables

mtcars$gear = factor(mtcars$gear)
mtcars$carb = factor(mtcars$carb)

I run an ols with

lm1 = lm(disp ~ gear + carb, mtcars)

and stargaze the results.

stargazer(lm1, single.row = TRUE,  omit.table.layout = "sn")

I get

enter image description here

However, I find myself always going back to the tex file to custom the reference categories to get

enter image description here

Basically, what I do is to add to the latex in between variables :

gear (ref = 3) &  \\ 
 \-\hspace{0.3cm} gear4 & $-$202.921$^{***}$ (22.477) \\ 

and so on.

Anyone had any idea if I can add these kind of lines in the stargazer function ?

Imbecility answered 18/11, 2016 at 18:19 Comment(2)
I think it would be equivalent and perhaps easier to bundle all the reference values in the name of the intercept.Surbase
Could you show me how ?Imbecility
S
5

You can achieve the output you want by providing covariate.labels to stargazer:

library(magrittr)
library(stringr) 
library(stargazer) 

covlabels <-
    names(lm1$coefficients)[-1] %>%
    if_else(str_sub(., 1, 4) == "gear" | str_sub(., 1, 4) == "carb", paste("\\-\\hspace{0.3cm}", .), .) %>%
    if_else(str_sub(., 18, 24) == "gear4", paste("gear (ref=3) \\\\", .), .) %>%
    if_else(str_sub(., 18, 24) == "carb2", paste("carb (ref=1) \\\\", .), .) 

stargazer(lm1, single.row = TRUE,  omit.table.layout = "sn", covariate.labels=covlabels)

yields

% Table created by stargazer v.5.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
% Date and time: Mon, Jan 08, 2018 - 3:18:09 AM
\begin{table}[!htbp] \centering 
  \caption{} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}}lc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & \multicolumn{1}{c}{\textit{Dependent variable:}} \\ 
\cline{2-2} 
\\[-1.8ex] & disp \\ 
\hline \\[-1.8ex] 
 gear (ref=3) \\ \-\hspace{0.3cm} gear4 & $-$202.921$^{***}$ (22.477) \\ 
  \-\hspace{0.3cm} gear5 & $-$160.898$^{***}$ (36.282) \\ 
  carb (ref=1) \\ \-\hspace{0.3cm} carb2 & 71.282$^{**}$ (27.919) \\ 
  \-\hspace{0.3cm} carb3 & 25.574 (39.919) \\ 
  \-\hspace{0.3cm} carb4 & 155.852$^{***}$ (27.355) \\ 
  \-\hspace{0.3cm} carb6 & 55.672 (68.065) \\ 
  \-\hspace{0.3cm} carb8 & 211.672$^{***}$ (68.065) \\ 
  Constant & 250.226$^{***}$ (24.363) \\ 
 \hline \\[-1.8ex] 
\hline 
\hline \\[-1.8ex] 
\end{tabular} 
\end{table} 
Simpatico answered 8/1, 2018 at 9:37 Comment(1)
Can you edit this to annotate how you got 18 and 24 as start and end? It's hard to adapt to other examples? I don't see how this more automated than doing it in latex, there's no way of getting the 1st level from each variable.Spearman
S
2

If you are willing to accept my revised strategy, then extract the names of the xlevels-lidt-item in the lm1-object, and their associated first levels and substitute the pasted character values for the "(Intercept) value:

baselines = sapply( lm1$xlevels, "[[", 1)
names(lm1$coefficients)[1] = paste0( names(baselines), " = ", baselines, 
                                     collapse="; ")

I now get:

stargazer(lm1, single.row = TRUE,  omit.table.layout = "sn")

% Table created by stargazer v.5.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
% Date and time: Sat, Nov 19, 2016 - 07:49:18
\begin{table}[!htbp] \centering 
  \caption{} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}}lc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & \multicolumn{1}{c}{\textit{Dependent variable:}} \\ 
\cline{2-2} 
\\[-1.8ex] & disp \\ 
\hline \\[-1.8ex] 
 gear = 3; carb = 1 & 250.226$^{***}$ (24.363) \\ 
  gear4 & $-$202.921$^{***}$ (22.477) \\ 
  gear5 & $-$160.898$^{***}$ (36.282) \\ 
  carb2 & 71.282$^{**}$ (27.919) \\ 
  carb3 & 25.574 (39.919) \\ 
  carb4 & 155.852$^{***}$ (27.355) \\ 
  carb6 & 55.672 (68.065) \\ 
  carb8 & 211.672$^{***}$ (68.065) \\ 
 \hline \\[-1.8ex] 
\hline 
\hline \\[-1.8ex] 
\end{tabular} 
\end{table} 

I don't seem to have a properly configured Latex toolchain anymore, probably due to the "enhanced security features" Apple introduced in the last OSX "upgrade".

Surbase answered 19/11, 2016 at 15:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.