Skip to contents

Builds a regression table based on a set of user-specified models or a single model and a partitioning variable.

Usage

prepare_regression_table(
  df,
  dvs,
  idvs,
  feffects = rep("", length(dvs)),
  clusters = rep("", length(dvs)),
  models = rep("auto", length(dvs)),
  byvar = "",
  format = "html"
)

Arguments

df

Data frame containing the data to estimate the models on.

dvs

A character vector containing the variable names for the dependent variable(s).

idvs

A character vector or a a list of character vectors containing the variable names of the independent variables.

feffects

A character vector or a a list of character vectors containing the variable names of the fixed effects.

clusters

A character vector or a a list of character vectors containing the variable names of the cluster variables.

models

A character vector indicating the model types to be estimated ('ols', 'logit', or 'auto')

byvar

A factorial variable to estimate the model on (only possible if only one model is being estimated).

format

A character scalar that is passed on stargazer as type to determine the presentation format ("html", "text", or "latex").

Value

A list containing two items

"models"

A list containing the model results and by values if appropriate

"table"

The output of stargazer containing the table

Details

This is a wrapper function calling the stargazer package. Depending on whether the dependent variable is numeric, logical or a factor with two levels, the models are estimated using felm (for numeric dependent variables) or glm (with family = binomial(link="logit")) (for two-level factors or logical variables). You can override this behavior by specifying the model with the models parameter. Multinomial logit models are not supported. For glm, clustered standard errors are estimated using cluster.vcov. For felm, it is being run with cmethod='reghdfe' to make clustered standard errors consistent with Stata's 'reghdfe'. If run with byvar, only levels that have more observations than coefficients are estimated.

Examples

df <- data.frame(year = as.factor(floor(stats::time(datasets::EuStockMarkets))),
                 datasets::EuStockMarkets)
dvs = c("DAX", "SMI", "CAC", "FTSE")
idvs = list(c("SMI", "CAC", "FTSE"),
            c("DAX", "CAC", "FTSE"),
            c("SMI", "DAX", "FTSE"),
            c("SMI", "CAC", "DAX"))
feffects = list("year", "year", "year", "year")
clusters = list("year", "year", "year", "year")
t <- prepare_regression_table(df, dvs, idvs, feffects, clusters, format = "text")
t$table
#>  [1] ""                                                         
#>  [2] "========================================================="
#>  [3] "                              Dependent variable:        "
#>  [4] "                      -----------------------------------"
#>  [5] "                        DAX      SMI      CAC      FTSE  "
#>  [6] "                        (1)      (2)      (3)      (4)   "
#>  [7] "---------------------------------------------------------"
#>  [8] "SMI                   0.447***           -0.095  0.566***"
#>  [9] "                      (0.046)           (0.088)  (0.107) "
#> [10] "                                                         "
#> [11] "DAX                            0.864*** 0.664***  -0.188 "
#> [12] "                               (0.169)  (0.141)  (0.180) "
#> [13] "                                                         "
#> [14] "CAC                   0.735***  -0.204            0.188  "
#> [15] "                      (0.111)  (0.218)           (0.102) "
#> [16] "                                                         "
#> [17] "FTSE                   -0.124  0.722***  0.112           "
#> [18] "                      (0.125)  (0.060)  (0.075)          "
#> [19] "                                                         "
#> [20] "---------------------------------------------------------"
#> [21] "Estimator               ols      ols      ols      ols   "
#> [22] "Fixed effects           year     year     year     year  "
#> [23] "Std. errors clustered   year     year     year     year  "
#> [24] "Observations           1,860    1,860    1,860    1,860  "
#> [25] "R2                     0.994    0.995    0.981    0.989  "
#> [26] "Adjusted R2            0.994    0.995    0.981    0.989  "
#> [27] "========================================================="
#> [28] "Note:                         *p<0.1; **p<0.05; ***p<0.01"
t <- prepare_regression_table(df, "DAX", c("SMI", "CAC", "FTSE"), byvar="year", format = "text")
print(t$table)
#>  [1] ""                                                                                                                                  
#>  [2] "=================================================================================================================================="
#>  [3] "                                                                  Dependent variable:                                             "
#>  [4] "                      ------------------------------------------------------------------------------------------------------------"
#>  [5] "                                                                          DAX                                                     "
#>  [6] "                      Full Sample    1991       1992       1993         1994        1995       1996         1997          1998    "
#>  [7] "                          (1)        (2)        (3)         (4)         (5)         (6)         (7)          (8)          (9)     "
#>  [8] "----------------------------------------------------------------------------------------------------------------------------------"
#>  [9] "SMI                    0.493***    0.634***  -0.283***   0.445***    -0.265***    0.333***   0.189***     0.258***      0.244***  "
#> [10] "                        (0.015)    (0.068)    (0.056)     (0.021)     (0.039)     (0.043)     (0.020)      (0.026)      (0.043)   "
#> [11] "                                                                                                                                  "
#> [12] "CAC                    0.496***     -0.052    0.952***   0.516***     0.721***    0.304***   0.577***     1.019***      1.182***  "
#> [13] "                        (0.015)    (0.045)    (0.026)     (0.033)     (0.052)     (0.060)     (0.039)      (0.075)      (0.054)   "
#> [14] "                                                                                                                                  "
#> [15] "FTSE                    -0.017      0.066     -0.069**   0.134***     -0.085**     0.017     0.389***     0.195***     -0.378***  "
#> [16] "                        (0.021)    (0.046)    (0.035)     (0.040)     (0.039)     (0.049)     (0.027)      (0.045)      (0.045)   "
#> [17] "                                                                                                                                  "
#> [18] "Constant              -175.946*** 458.772*** 575.676*** -688.784*** 1,623.337*** 567.057*** -803.680*** -1,353.434*** 1,146.634***"
#> [19] "                       (44.666)    (72.607)   (72.806)   (56.941)     (65.786)   (105.476)   (68.069)     (110.585)    (174.146)  "
#> [20] "                                                                                                                                  "
#> [21] "----------------------------------------------------------------------------------------------------------------------------------"
#> [22] "Estimator                 ols        ols        ols         ols         ols         ols         ols          ols          ols     "
#> [23] "Fixed effects            None        None       None       None         None        None       None         None          None    "
#> [24] "Std. errors clustered     No          No         No         No           No          No         No           No            No     "
#> [25] "Observations             1,860       131        260         260         260         260         260          260          169     "
#> [26] "R2                       0.990      0.669      0.850       0.973       0.560       0.720       0.932        0.964        0.978    "
#> [27] "Adjusted R2              0.990      0.661      0.848       0.973       0.555       0.717       0.931        0.964        0.978    "
#> [28] "=================================================================================================================================="
#> [29] "Note:                                                                                                  *p<0.1; **p<0.05; ***p<0.01"