Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R - stargazer add reference categories

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 ?

like image 406
giac Avatar asked Nov 18 '16 18:11

giac


People also ask

What is reference category in statistics?

Reference categories for discrete predictors. For a factor with several levels/categories, the “reference category” is the category that is dropped so that the design matrix X will have full rank. Here are a few more remarks about the effect of different choices of “reference category”.

How do I change reference category in SPSS?

Highlight the factor(s) for which you want the first level to be the reference. Then click the Options button and choose "Descending" under "Category Order for Factors". The first category will then be treated as the reference, as you will see in the parameter estimates in the output.

How to use stargazer in R?

This can be done by typing “install. packages(“stargazer”)”, and then “library(stargazer)” in the next line. Installing Stargazer will only need to be done once, but the second command, which loads the package will need to be typed each session you wish to use it.

What does stargazer do?

A stargazer is someone who studies the stars as an astronomer or astrologer.


2 Answers

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} 
like image 199
jduras Avatar answered Sep 28 '22 11:09

jduras


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".

like image 45
IRTFM Avatar answered Sep 28 '22 11:09

IRTFM