extract_eq | R Documentation |
Extract the variable names from a model to produce a 'LaTeX' equation.
Supports any model where there is a broom::tidy()
method. This is a generic
function with methods for lmerMod objects obtained with lme4::lmer()
,
glmerMod objects with lme4::glmer()
, forecast_ARIMA with
forecast::Arima()
and default, with the later further covering most "base"
R models implemented in broom::tidy()
like lm objects with stats::lm()
,
glm objects with stats::glm()
or polr objects with MASS::polr()
. The
default method also supports clm objects obtained with ordinal::clm()
.
extract_eq(
model,
intercept = "alpha",
greek = "beta",
greek_colors = NULL,
subscript_colors = NULL,
var_colors = NULL,
var_subscript_colors = NULL,
raw_tex = FALSE,
swap_var_names = NULL,
swap_subscript_names = NULL,
ital_vars = FALSE,
label = NULL,
index_factors = FALSE,
show_distribution = FALSE,
wrap = FALSE,
terms_per_line = 4,
operator_location = "end",
align_env = "aligned",
use_coefs = FALSE,
coef_digits = 2,
fix_signs = TRUE,
font_size = NULL,
mean_separate = NULL,
return_variances = FALSE,
se_subscripts = FALSE,
...
)
model |
A fitted model |
intercept |
How should the intercept be displayed? Default is |
greek |
What notation should be used for
coefficients? Currently only accepts |
greek_colors |
The colors of the greek notation in the equation. Must be a single color (named or HTML hex code) or a vector of colors (which will be recycled if smaller than the number of terms in the model). When rendering to PDF, I suggest using HTML hex codes, as not all named colors are recognized by LaTeX, but equatiomatic will internally create the color definitions for you if HTML codes are supplied. Note that this is not yet implemented for mixed effects models (lme4). |
subscript_colors |
The colors of the subscripts for the greek notation.
The argument structure is equivalent to |
var_colors |
The color of the variable names. This takes a named vector
of the form |
var_subscript_colors |
The colors of the factor subscripts for
categorical variables. The interface for this is equivalent to
|
raw_tex |
Logical. Is the greek code being passed to denote coefficients raw tex code? |
swap_var_names |
A vector of the form c("old_var_name" = "new name"). For example: c("bill_length_mm" = "Bill Length (MM)"). |
swap_subscript_names |
A vector of the form c("old_subscript_name" = "new name"). For example: c("f" = "Female"). |
ital_vars |
Logical, defaults to |
label |
A label for the equation, which can then be used for in-text
references. See example here.
Note that this only works for PDF output. The in-text references also
must match the label exactly, and must be formatted as
|
index_factors |
Logical, defaults to |
show_distribution |
Logical. When fitting a logistic or probit
regression, should the binomial distribution be displayed? Defaults to
|
wrap |
Logical, defaults to |
terms_per_line |
Integer, defaults to 4. The number of right-hand side
terms to include per line. Used only when |
operator_location |
Character, one of “end” (the default) or
“start”. When terms are split across multiple lines, they are split
at mathematical operators like |
align_env |
TeX environment to wrap around equation. Must be one of
|
use_coefs |
Logical, defaults to |
coef_digits |
Integer, defaults to 2. The number of decimal places to round to when displaying model estimates. |
fix_signs |
Logical, defaults to |
font_size |
The font size of the equation. Defaults to default of the output format. Takes any of the standard LaTeX arguments (see here). |
mean_separate |
Currently only support for |
return_variances |
Logical. When |
se_subscripts |
Logical. If |
... |
Additional arguments (for future development; not currently used). |
The different methods all use the same arguments, but not all arguments are suitable to all models. Check here above to determine if a feature is implemented for a given model.
A character of class “equation”.
# Simple model
mod1 <- lm(mpg ~ cyl + disp, mtcars)
extract_eq(mod1)
# Include all variables
mod2 <- lm(mpg ~ ., mtcars)
extract_eq(mod2)
# Works for categorical variables too, putting levels as subscripts
mod3 <- lm(body_mass_g ~ bill_length_mm + species, penguins)
extract_eq(mod3)
set.seed(8675309)
d <- data.frame(
cat1 = rep(letters[1:3], 100),
cat2 = rep(LETTERS[1:3], each = 100),
cont1 = rnorm(300, 100, 1),
cont2 = rnorm(300, 50, 5),
out = rnorm(300, 10, 0.5)
)
mod4 <- lm(out ~ ., d)
extract_eq(mod4)
# Don't italicize terms
extract_eq(mod1, ital_vars = FALSE)
# Wrap equations in an "aligned" environment
extract_eq(mod2, wrap = TRUE)
# Wider equation wrapping
extract_eq(mod2, wrap = TRUE, terms_per_line = 4)
# Include model estimates instead of Greek letters
extract_eq(mod2, wrap = TRUE, terms_per_line = 2, use_coefs = TRUE)
# Don't fix doubled-up "+ -" signs
extract_eq(mod2, wrap = TRUE, terms_per_line = 4, use_coefs = TRUE, fix_signs = FALSE)
# Use indices for factors instead of subscripts
extract_eq(mod2, wrap = TRUE, terms_per_line = 4, index_factors = TRUE)
# Use other model types, like glm
set.seed(8675309)
d <- data.frame(
out = sample(0:1, 100, replace = TRUE),
cat1 = rep(letters[1:3], 100),
cat2 = rep(LETTERS[1:3], each = 100),
cont1 = rnorm(300, 100, 1),
cont2 = rnorm(300, 50, 5)
)
mod5 <- glm(out ~ ., data = d, family = binomial(link = "logit"))
extract_eq(mod5, wrap = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.