Extract the variable names from a model to produce a 'LaTeX' equation, which is output to the screen. Supports any model supported by broom::tidy.

```
extract_eq(
model,
intercept = "alpha",
greek = "beta",
raw_tex = FALSE,
ital_vars = 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,
mean_separate,
...
)
```

model

A fitted model

intercept

How should the intercept be displayed? Default is `"alpha"`

,
but can also accept `"beta"`

, in which case the it will be displayed
as beta zero.

greek

What notation should be used for
coefficients? Currently only accepts `"beta"`

(with plans for future
development). Can be used in combination with `raw_tex`

to use any
notation, e.g., `"\hat{\beta}"`

.

raw_tex

Logical. Is the greek code being passed to denote coefficients raw tex code?

ital_vars

Logical, defaults to `FALSE`

. Should the variable names
not be wrapped in the `\operatorname{}`

command?

show_distribution

Logical. When fitting a logistic or probit
regression, should the binomial distribution be displayed? Defaults to
`FALSE`

.

wrap

Logical, defaults to `FALSE`

. Should the terms on the
right-hand side of the equation be split into multiple lines? This is
helpful with models with many terms.

terms_per_line

Integer, defaults to 4. The number of right-hand side
terms to include per line. Used only when `wrap`

is `TRUE`

.

operator_location

Character, one of “end” (the default) or
“start”. When terms are split across multiple lines, they are split
at mathematical operators like `+`

. If set to “end”, each line will
end with a trailing operator (`+`

or `-`

). If set to “start”, each
line will begin with an operator.

align_env

TeX environment to wrap around equation. Must be one of
`aligned`

, `aligned*`

, `align`

, or `align*`

. Defaults
to `aligned`

.

use_coefs

Logical, defaults to `FALSE`

. Should the actual model
estimates be included in the equation instead of math symbols?

coef_digits

Integer, defaults to 2. The number of decimal places to round to when displaying model estimates.

fix_signs

Logical, defaults to `FALSE`

. If disabled,
coefficient estimates that are negative are preceded with a "+" (e.g.
`5(x) + -3(z)`

). If enabled, the "+ -" is replaced with a "-" (e.g.
`5(x) - 3(z)`

).

mean_separate

Currently only support for `lmer`

models. Should the mean structure be inside or separated from the
normal distribution? Defaults to `NULL`

, in which case it will become
`TRUE`

if there are more than three fixed-effect parameters. If
`TRUE`

, the equation will be displayed as, for example,
outcome ~ N(mu, sigma); mu = alpha + beta_1(wave). If `FALSE`

, this
same equation would be outcome ~ N(alpha + beta, sigma).

...

Additional arguments (for future development; not currently used).

A character of class “equation”.

# NOT RUN { # 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 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) # }