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
stargazer
astype
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"