This function allows users to use the features of
summ()
(e.g., standardization, robust standard errors)
in the context of shareable HTML, LaTeX, and
Microsoft Word tables. It relies heavily on huxtable::huxreg()
to do the table formatting. This is particularly useful for putting
the results of multiple models into a single table.
export_summs(..., error_format = "({std.error})", error_pos = c("below", "right", "same"), ci_level = 0.95, statistics = NULL, model.names = NULL, coefs = NULL, to.file = NULL, file.name = NULL)
...  At minimum, a regression object(s). See details for more arguments. 

error_format  Which of standard error, confidence intervals, test statistics, or p values should be used to express uncertainty of estimates for regression coefficients? See details for more info. Default: "(std.error)" 
error_pos  Where should the error statistic defined in

ci_level  If reporting confidence intervals, what should the
confidence level be? By default, it is .95 if
confidence intervals are requested in 
statistics  Which model summary statistics should be included?
See 
model.names  If you want to give your model(s) names at the top of each column, provide them here as a character vector. Otherwise, they will just be labeled by number. Default: NULL 
coefs  If you want to include only a subset of the coefficients in the table, specify them here in a character vector. If you want the table to show different names for the coefficients, give a named vector where the names are the preferred coefficient names. See details for more. 
to.file  Export the table to a Microsoft Word, PDF, or HTML document?
This functionality relies on 
file.name  File name with (optionally) file path to save the
file. Ignored if 
A huxtable
.
There are many optional parameters not documented above. Any
argument that you would want to pass to summ()
, for instance,
will be used. Of particular interest may be the robust and scale
arguments. Note that some summ
arguments may not have any bearing
on the table output.
The default model summary statistics reporting follows this logic:
summ.lm = c(N = "nobs", R2 = "r.squared")
,
summ.glm = c(N = "nobs", AIC = "AIC", BIC = "BIC",
`Pseudo R2` = "pseudo.r.squared")
,
summ.svyglm = c(N = "nobs", R2 = "r.squared")
,
summ.merMod = c(N = "nobs", AIC = "AIC", BIC = "BIC",
`R2 (fixed)` = "r.squared.fixed",
`R2 (total)` = "r.squared")
summ.rq = c(N = "nobs", tau = "tau", R1 = "r.1", AIC = "AIC", BIC = "BIC")
Be sure to look at the summ()
documentation for more on the calculation
of these and other statistics, especially for mixed models.
If you set statistics = "all"
, then the statistics argument
passed to huxreg
will be NULL
, which reports whichever
model statistics are available via glance
. If you want no
model summary statistics, set the argument to character(0)
.
You have a few options for the error_format
argument.
You can include anything returned by broom::tidy()
(see also tidy.summ()
). For the most part, you will
be interested in std.error
(standard error), statistic
(test statistic, e.g. tvalue or zvalue), p.value
, or
conf.high
and conf.low
, which correspond to the
upper and lower bounds of the confidence interval for the estimate.
Note that the default ci_level
argument is .95, but you
can alter that as desired.
To format the error statistics, simply put the statistics desired in
curly braces wherever you want them in a character string. For example,
if you want the standard error in parentheses, the argument would be
"({std.error})"
, which is the default. Some other ideas:
"({statistic})"
, which gives you the test statistic in
parentheses.
"({statistic}, p = {p.value})"
, which gives the test
statistic followed by a "p =" p value all in parentheses. Note that
you'll have to pay special attention to rounding if you do this to keep
cells sufficiently narrow.
"[{conf.low}, {conf.high}]"
, which gives the confidence
interval in the standard bracket notation. You could also explicitly
write the confidence level, e.g.,
"CI [{conf.low}, {conf.high}]"
.
For coefs
, the argument is slightly different than what is default
in huxreg
. If you provide a named vector of coefficients, then
the table will refer to the selected coefficients by the names of the
vector rather than the coefficient names. For instance, if I want to
include only the coefficients for the hp
and mpg
but have
the table refer to them as "Horsepower" and "Miles/gallon", I'd provide
the argument like this:
c("Horsepower" = "hp", "Miles/gallon" = "mpg")
You can also pass any argument accepted by the
huxtable::huxreg()
function. A few that are likely to be
oftused are documented above, but visit huxreg
's documentation
for more info.
For info on converting the huxtable::huxtable()
object to
HTML or LaTeX, see huxtable
's documentation.
states < as.data.frame(state.x77) fit1 < lm(Income ~ Frost, data = states) fit2 < lm(Income ~ Frost + Illiteracy, data = states) fit3 < lm(Income ~ Frost + Illiteracy + Murder, data = states) if (requireNamespace("huxtable")) { # Export all 3 regressions with "Model #" labels, # standardized coefficients, and robust standard errors export_summs(fit1, fit2, fit3, model.names = c("Model 1","Model 2","Model 3"), coefs = c("Frost Days" = "Frost", "% Illiterate" = "Illiteracy", "Murder Rate" = "Murder"), scale = TRUE, robust = TRUE) }#>#> ───────────────────────────────────────────────────────────────────────────── #> Model 1 Model 2 Model 3 #> ────────────────────────────────────────────────────────── #> Frost Days 139.04 75.52 65.19 #> (94.89) (138.74) (149.01) #> % Illiterate 319.31 * 372.25 ** #> (124.83) (120.00) #> Murder Rate 85.18 #> (136.02) #> ────────────────────────────────────────────────────────── #> N 50 50 50 #> R2 0.05 0.20 0.21 #> ───────────────────────────────────────────────────────────────────────────── #> All continuous predictors are meancentered and scaled by 1 #> standard deviation. Standard errors are heteroskedasticity #> robust. *** p < 0.001; ** p < 0.01; * p < 0.05. #> #> Column names: names, Model 1, Model 2, Model 3