Reputation: 4299
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
However, I find myself always going back to the tex
file to custom the reference categories to get
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 ?
Upvotes: 6
Views: 2250
Reputation: 51
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}
Upvotes: 5
Reputation: 263352
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".
Upvotes: 2