2

I got some problem when I was trying to reorder variables in stargazer. First, I defined a character vector indicating the order I want.

> order
[1] "poly(log(fall_t), 2)1"         "poly(log(fall_t), 2)2"         "poly(winter_t, 2)1"            "poly(winter_t, 2)2"           
[5] "poly(log(spring_t), 2)1"       "poly(log(spring_t), 2)2"       "poly(log(fall_p), 2)1"         "poly(log(fall_p), 2)2"        
[9] "poly(log(winter_p), 2)1"       "poly(log(winter_p), 2)2"       "poly(log(spring_p), 2)1"       "poly(log(spring_p), 2)2"      
[13] "log(aot_fall)"                 "log(aot_winter)"               "log(aot_spring)"               "poly(log(aot_fall), 2)1"      
[17] "poly(log(aot_fall), 2)2"       "log(aot_fall):log(fall_t)"     "poly(log(aot_spring), 2)1"     "poly(log(aot_spring), 2)2"    
[21] "log(aot_spring):log(spring_t)" "poly(log(aot_winter), 2)1"     "poly(log(aot_winter), 2)2"     "log(aot_winter):winter" 

Then I called stargazer

stargazer(pmclimatevft, pmftsea, pmftqsea, pmftint, title = "Panel data with fixed time effect poly",
          model.names = F, model.numbers = F, object.names = F, dep.var.caption = "Yield", dep.var.labels.include = F,
          column.labels = c("Only climate variables","linear","quartic","Intersection"),
          omit = c("Year"), omit.labels = c("Time fixed effect"),
          order = order,
          dep.var.labels = "Yield", digits = 3, notes = "*Average and square temperature of Winter are not in log form due to negative values.",
          align = T, no.space = T, column.sep.width = "-10pt", omit.stat = "f")

Below is the LaTex code.

\begin{table}[!htbp] \centering 
  \caption{Panel data with fixed time effect poly} 
  \label{} 
\begin{tabular}{@{\extracolsep{-10pt}}lD{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} } 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & \multicolumn{4}{c}{Yield} \\ 
\cline{2-5} 
 & \multicolumn{1}{c}{Only climate variables} & \multicolumn{1}{c}{linear} & \multicolumn{1}{c}{quartic} & \multicolumn{1}{c}{Intersection} \\ 
\hline \\[-1.8ex] 
 poly(log(fall\_t), 2)1 & -8.096^{***} & -7.946^{***} & -8.030^{***} & -10.271 \\ 
  & (1.173) & (1.184) & (1.187) & (9.071) \\ 
  poly(log(fall\_t), 2)2 & 0.443 & 0.350 & 0.534 & 0.340 \\ 
  & (0.312) & (0.323) & (0.329) & (0.372) \\ 
  poly(winter\_t, 2)1 & -7.065^{***} & -6.683^{***} & -6.879^{***} & 1.615 \\ 
  & (0.899) & (0.907) & (0.926) & (4.048) \\ 
  poly(winter\_t, 2)2 & -1.160^{***} & -1.072^{***} & -1.057^{***} & -1.073^{***} \\ 
  & (0.279) & (0.280) & (0.280) & (0.280) \\ 
  poly(log(spring\_t), 2)1 & -9.967^{***} & -10.428^{***} & -10.028^{***} & -19.885^{**} \\ 
  & (1.095) & (1.106) & (1.110) & (8.014) \\ 
  poly(log(spring\_t), 2)2 & -0.867^{***} & -0.924^{***} & -0.753^{***} & -0.996^{***} \\ 
  & (0.269) & (0.274) & (0.276) & (0.288) \\ 
  poly(log(fall\_p), 2)1 & 2.270^{***} & 2.431^{***} & 2.511^{***} & 2.337^{***} \\ 
  & (0.421) & (0.428) & (0.427) & (0.432) \\ 
  poly(log(fall\_p), 2)2 & -3.553^{***} & -3.582^{***} & -3.522^{***} & -3.653^{***} \\ 
  & (0.247) & (0.249) & (0.249) & (0.253) \\ 
  poly(log(winter\_p), 2)1 & 2.693^{***} & 2.630^{***} & 2.635^{***} & 2.519^{***} \\ 
  & (0.585) & (0.587) & (0.586) & (0.591) \\ 
  poly(log(winter\_p), 2)2 & -1.832^{***} & -1.786^{***} & -1.934^{***} & -1.775^{***} \\ 
  & (0.262) & (0.262) & (0.264) & (0.265) \\ 
  poly(log(spring\_p), 2)1 & 0.106 & 0.196 & 0.246 & 0.207 \\ 
  & (0.415) & (0.416) & (0.418) & (0.417) \\ 
  poly(log(spring\_p), 2)2 & -4.917^{***} & -4.793^{***} & -4.889^{***} & -4.747^{***} \\ 
  & (0.256) & (0.259) & (0.259) & (0.261) \\ 
  log(aot\_fall) &  & 0.049 &  & -0.081 \\ 
  &  & (0.033) &  & (0.461) \\ 
  log(aot\_winter) &  & -0.048^{**} &  & -0.038^{*} \\ 
  &  & (0.020) &  & (0.021) \\ 
  log(aot\_spring) &  & 0.090^{***} &  & -0.294 \\ 
  &  & (0.032) &  & (0.315) \\ 
  poly(log(aot\_fall), 2)1 &  &  & 0.372 &  \\ 
  &  &  & (0.571) &  \\ 
  poly(log(aot\_fall), 2)2 &  &  & -0.751^{**} &  \\ 
  &  &  & (0.302) &  \\ 
  poly(log(aot\_winter), 2)1 &  &  & -0.553 &  \\ 
  &  &  & (0.587) &  \\ 
  poly(log(aot\_winter), 2)2 &  &  & 1.321^{***} &  \\ 
  &  &  & (0.303) &  \\ 
  poly(log(aot\_spring), 2)1 &  &  & 0.868 &  \\ 
  &  &  & (0.618) &  \\ 
  poly(log(aot\_spring), 2)2 &  &  & -0.382 &  \\ 
  &  &  & (0.305) &  \\ 
  log(aot\_fall):log(fall\_t) &  &  &  & 0.052 \\ 
  &  &  &  & (0.180) \\ 
  log(aot\_winter):winter\_t &  &  &  & -0.013^{**} \\ 
  &  &  &  & (0.006) \\ 
  log(aot\_spring):log(spring\_t) &  &  &  & 0.152 \\ 
  &  &  &  & (0.128) \\ 
 \hline \\[-1.8ex] 
Time fixed effect & \multicolumn{1}{c}{Yes} & \multicolumn{1}{c}{Yes} & \multicolumn{1}{c}{Yes} & \multicolumn{1}{c}{Yes} \\ 
\hline \\[-1.8ex] 
Observations & \multicolumn{1}{c}{2,979} & \multicolumn{1}{c}{2,979} & \multicolumn{1}{c}{2,979} & \multicolumn{1}{c}{2,979} \\ 
R$^{2}$ & \multicolumn{1}{c}{0.641} & \multicolumn{1}{c}{0.642} & \multicolumn{1}{c}{0.645} & \multicolumn{1}{c}{0.643} \\ 
Adjusted R$^{2}$ & \multicolumn{1}{c}{0.621} & \multicolumn{1}{c}{0.623} & \multicolumn{1}{c}{0.625} & \multicolumn{1}{c}{0.623} \\ 
\hline 
\hline \\[-1.8ex] 
\textit{Note:}  & \multicolumn{4}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\ 
 & \multicolumn{4}{r}{*Average and square temperature of Winter are not in log form due to negative values.} \\ 
\end{tabular} 
\end{table}

It turned out that the order in the output did not change. My order code in stargazer did not work. I can manually change the order in TeXstudio. But it would be better if we can do that in stargazer.

Yabin Da
  • 553
  • 5
  • 11
  • The documentation at `?stargazer` describes the `order` parameter as *"a vector of regular expressions (or of numerical indexes) that indicates the order in which variables will appear in the output."* Since you're using a character vector, it's probably being interpreted as regular expressions, and all the parentheses are used a regex metacharacters, preventing matches. Maybe try a vector of numerical indexes instead. – Gregor Thomas Jul 02 '19 at 18:14
  • @Gregor That's a good point. However, the fact is I tried numerical vector first and it did not work. Then I switched the character vector and still the same. I also tried the method indicated [here](https://stackoverflow.com/a/49543899/11122161). – Yabin Da Jul 02 '19 at 18:29

1 Answers1

1

You did not provide a reproducible example, but here is a solution with dummy data.

library(stargazer)
# silly lm with a lot of parameters
lm(Sepal.Length ~  poly(log(Sepal.Width),4) +
                   poly(log(Petal.Length),5) + 
                   Petal.Width:Species, data=iris) -> foo

               

names(coef(foo)) -> parameters
parameters
> parameters
 [1] "(Intercept)"                   "poly(log(Sepal.Width), 4)1"
 [3] "poly(log(Sepal.Width), 4)2"    "poly(log(Sepal.Width), 4)3"
 [5] "poly(log(Sepal.Width), 4)4"    "poly(log(Petal.Length), 5)1"
 [7] "poly(log(Petal.Length), 5)2"   "poly(log(Petal.Length), 5)3"
 [9] "poly(log(Petal.Length), 5)4"   "poly(log(Petal.Length), 5)5"
[11] "Petal.Width:Speciessetosa"     "Petal.Width:Speciesversicolor"
[13] "Petal.Width:Speciesvirginica"

parameters is now in default order. Let's say, I want to get my parameters in this order:

desiredOrder <- c("poly(log(Sepal.Width), 4)4", "Petal.Width:Speciesvirginica",
"poly(log(Sepal.Width), 4)1", "Petal.Width:Speciesversicolor",
"poly(log(Petal.Length), 5)1", "poly(log(Sepal.Width), 4)3",
"Petal.Width:Speciessetosa", "poly(log(Petal.Length), 5)3", "(Intercept)",
"poly(log(Petal.Length), 5)4", "poly(log(Petal.Length), 5)2",
"poly(log(Sepal.Width), 4)2", "poly(log(Petal.Length), 5)5")

order <- match(desiredOrder, parameters)
>order
 [1]  5 13  2 12  6  4 11  8  1  9  7  3 10

It is worth noticing that the stargazer parameter order is relative to the default order of stargazer output. By default, stargazer places intercept in the bottom, whereas it is first in parameters.

Passing order as a parameter to stargazer prints out the regression coefficients in desired order, if we set intercept.top=TRUE, intercept.bottom=FALSE.

stargazer(foo, order=order, type='text', intercept.top=TRUE, intercept.bottom=FALSE)


=========================================================
                                  Dependent variable:
                              ---------------------------
                                     Sepal.Length
---------------------------------------------------------
poly(log(Sepal.Width), 4)4               0.033
                                        (0.313)

Petal.Width:Speciesvirginica           -0.376**
                                        (0.151)

poly(log(Sepal.Width), 4)1             2.660***
                                        (0.464)

Petal.Width:Speciesversicolor           -0.205
                                        (0.202)

poly(log(Petal.Length), 5)1            13.503***
                                        (1.792)

poly(log(Sepal.Width), 4)3              -0.030
                                        (0.319)

Petal.Width:Speciessetosa                0.251
                                        (0.435)

poly(log(Petal.Length), 5)3             1.108**
                                        (0.481)

Constant                               6.167***
                                        (0.195)

poly(log(Petal.Length), 5)4             -0.065
                                        (0.344)

poly(log(Petal.Length), 5)2            3.828***
                                        (0.521)

poly(log(Sepal.Width), 4)2              0.745**
                                        (0.337)

poly(log(Petal.Length), 5)5              0.388
                                        (0.381)

---------------------------------------------------------
Observations                              150
R2                                       0.876
Adjusted R2                              0.865
Residual Std. Error                0.304 (df = 137)
F Statistic                    80.690*** (df = 12; 137)
=========================================================
Note:                         *p<0.1; **p<0.05; ***p<0.01
Otto Kässi
  • 2,943
  • 1
  • 10
  • 27