summ
prints output for a regression model in a fashion similar to
summary
, but formatted differently with more options.
# S3 method for lm
summ(model, scale = FALSE,
confint = getOption("summ-confint", FALSE),
ci.width = getOption("summ-ci.width", 0.95),
robust = getOption("summ-robust", FALSE), cluster = NULL,
vifs = getOption("summ-vifs", FALSE),
digits = getOption("jtools-digits", 2),
pvals = getOption("summ-pvals", TRUE), n.sd = 1, center = FALSE,
transform.response = FALSE, data = NULL, part.corr = FALSE,
model.info = getOption("summ-model.info", TRUE),
model.fit = getOption("summ-model.fit", TRUE), model.check = FALSE,
which.cols = NULL, ...)
A lm
object.
If TRUE
, reports standardized regression
coefficients. Default is FALSE
.
Show confidence intervals instead of standard errors? Default
is FALSE
.
A number between 0 and 1 that signifies the width of the
desired confidence interval. Default is .95
, which corresponds
to a 95% confidence interval. Ignored if confint = FALSE
.
If not FALSE
, reports heteroskedasticity-robust standard
errors instead of conventional SEs. These are also known as Huber-White
standard errors. There are several options provided by
sandwich::vcovHC()
: "HC0"
, "HC1"
, "HC2"
, "HC3"
, "HC4"
,
"HC4m"
, "HC5"
.
Default is FALSE
.
This requires the sandwich
package to compute the
standard errors.
For clustered standard errors, provide the column name of the cluster variable in the input data frame (as a string). Alternately, provide a vector of clusters.
If TRUE
, adds a column to output with variance inflation
factors (VIF). Default is FALSE
.
An integer specifying the number of digits past the decimal to
report in the output. Default is 2. You can change the default number of
digits for all jtools functions with
options("jtools-digits" = digits)
where digits is the desired
number.
Show p values and significance stars? If FALSE
, these
are not printed. Default is TRUE
.
If scale = TRUE
, how many standard deviations should
predictors be divided by? Default is 1, though some suggest 2.
If you want coefficients for mean-centered variables but don't
want to standardize, set this to TRUE
.
Should scaling/centering apply to response
variable? Default is FALSE
.
If you provide the data used to fit the model here, that data
frame is used to re-fit the model (if scale
is TRUE
)
instead of the stats::model.frame()
of the model. This is particularly useful if you have variable
transformations or polynomial terms specified in the formula.
Print partial (labeled "partial.r") and
semipartial (labeled "part.r") correlations with the table?
Default is FALSE
. See details about these quantities when robust
standard errors are used.
Toggles printing of basic information on sample size, name of DV, and number of predictors.
Toggles printing of model fit statistics.
Toggles whether to perform Breusch-Pagan test for heteroskedasticity and print number of high-leverage observations. See details for more info.
Developmental feature. By providing columns by name, you can add/remove/reorder requested columns in the output. Not fully supported, for now.
This just captures extra arguments that may only work for other types of models.
If saved, users can access most of the items that are returned in the output (and without rounding).
The outputted table of variables and coefficients
The model for which statistics are displayed. This would be
most useful in cases in which scale = TRUE
.
Much other information can be accessed as attributes.
By default, this function will print the following items to the console:
The sample size
The name of the outcome variable
The R-squared value plus adjusted R-squared
A table with regression coefficients, standard errors, t-values, and p values.
There are several options available for robust
. The heavy
lifting is done by vcovHC
, where those are better
described.
Put simply, you may choose from "HC0"
to "HC5"
. Based on the
recommendation of the developers of sandwich, the default is set to
"HC3"
. Stata's default is "HC1"
, so that choice may be better
if the goal is to replicate Stata's output. Any option that is understood
by vcovHC
will be accepted. Cluster-robust standard errors are
computed if cluster
is set to the name of the input data's cluster
variable or is a vector of clusters.
The scale
and center
options are performed via
refitting
the model with scale_mod
and center_mod
,
respectively. Each of those in turn uses gscale
for the
mean-centering and scaling.
If using part.corr = TRUE
, then you will get these two common
effect size metrics on the far right two columns of the output table.
However, it should be noted that these do not go hand in hand with
robust standard error estimators. The standard error of the coefficient
doesn't change the point estimate, just the uncertainty. However,
this function uses t-statistics in its calculation of the
partial and semipartial correlation. This provides what amounts to a
heteroskedasticity-adjusted set of estimates, but I am unaware of any
statistical publication that validates this type of use. Please
use these as a heuristic when used alongside robust standard errors; do
not report the "robust" partial and semipartial correlations in
publications.
There are two pieces of information given for model.check
, provided
that the model is an lm
object. First, a Breusch-Pagan test is
performed with ncvTest
. This is a
hypothesis test for which the alternative hypothesis is heteroskedastic
errors. The test becomes much more likely to be statistically significant
as the sample size increases; however, the homoskedasticity assumption
becomes less important to inference as sample size increases (Lumley,
Diehr, Emerson, & Lu, 2002). Take the result of the test as a cue to check
graphical checks rather than a definitive decision. Note that the use of
robust standard errors can account for heteroskedasticity, though some
oppose this approach (see King & Roberts, 2015).
The second piece of information provided by setting model.check
to
TRUE
is the number of high leverage observations. There are no hard
and fast rules for determining high leverage either, but in this case it is
based on Cook's Distance. All Cook's Distance values greater than (4/N) are
included in the count. Again, this is not a recommendation to locate and
remove such observations, but rather to look more closely with graphical
and other methods.
King, G., & Roberts, M. E. (2015). How robust standard errors expose methodological problems they do not fix, and what to do about it. Political Analysis, 23(2), 159<U+2013>179. https://doi.org/10.1093/pan/mpu015
Lumley, T., Diehr, P., Emerson, S., & Chen, L. (2002). The Importance of the Normality Assumption in Large Public Health Data Sets. Annual Review of Public Health, 23, 151<U+2013>169. https://doi.org/10.1146/annurev.publhealth.23.100901.140546
scale_mod
can simply perform the standardization if
preferred.
gscale
does the heavy lifting for mean-centering and scaling
behind the scenes.
# NOT RUN {
# Create lm object
fit <- lm(Income ~ Frost + Illiteracy + Murder,
data = as.data.frame(state.x77))
# Print the output with standardized coefficients and 3 digits
summ(fit, scale = TRUE, digits = 3)
# }
Run the code above in your browser using DataLab