Builds a regression table based on a set of user-specified models or a single model and a partitioning variable.
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
stargazerastypeto 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
stargazercontaining 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"
