if (!require("pacman")) install.packages("pacman") # solo la primera vez
pacman::p_load(lme4,
reghelper,
haven,
stargazer,
ggplot2, # gráficos
texreg, # tablas de regresion (screenreg)
dplyr, # manipulacion de datos
equatiomatic) # paquetes a cargar
mlm = read_dta("http://www.stata-press.com/data/mlmus3/hsb.dta")
mlm = mlm %>%
select(minority,female,ses,mathach,size,sector,pracad,disclim,himinty,mnses,schoolid) %>%
as.data.frame()MathJax
Correspondiente a la sesión del viernes, 13 de junio de 2025

MathJax es una biblioteca de JavaScript que permite mostrar notación matemática escrita en LaTeX, MathML o AsciiMath directamente en páginas web. Fue creada para que las expresiones matemáticas se vean bien, sean accesibles y funcionen en todos los navegadores modernos sin necesidad de software adicional.
En Quarto, MathJax se utiliza automáticamente para renderizar fórmulas matemáticas cuando el formato de salida es HTML o Reveal.js. No tienes que instalar nada extra ni importar manualmente
Formato de ecuaciones con MathJax
Para representar ecuaciones en la misma línea de texto, se deben escribir dentro de un par de signos ‘$’. Ejemplo:
Este texto contiene la siguiente ecuación: $E = mc^2$
genera:
- Este texto contiene la siguiente ecuación: \(E = mc^2\)
Para visualizar las ecuaciones en una siguiente línea, centrado, van dos pares del signo ‘$’. Ejemplo:
$$
E = mc^2
$$
genera:
\[ E = mc^2 \]
Elementos de MathJax
Fracciones
$$
\frac{1}{2}
$$
\[ \frac{1}{2} \]
Subíndice y exponenciales
$$
Y = X_1 + X_2
$$
\[ Y = X_1 + X_2 \]
$$
a^2 + b^2 = c^2
$$
\[ a^2 + b^2 = c^2 \]
Raíz cuadrada
$$
\sqrt{p}
$$
\[ \sqrt{p} \]
$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
Sumatoria
$$
\sum_{i = 1}^{n}{(\bar{x} - x_i)^2}
$$
\[ \sum_{i = 1}^{n}{(\bar{x} - x_i)^2} \]
Modelo lineal
$$
Y \sim X\beta_0 + X\beta_1 + \epsilon
$$
\[ Y \sim X\beta_0 + X\beta_1 + \epsilon \]
y como todo en R… ya casi todo se puede automatizar
Equatiomatic
reg_lineal<- lm(mathach~ses+female+sector+minority, data=mlm)
extract_eq(reg_lineal)\[ \operatorname{mathach} = \alpha + \beta_{1}(\operatorname{ses}) + \beta_{2}(\operatorname{female}) + \beta_{3}(\operatorname{sector}) + \beta_{4}(\operatorname{minority}) + \epsilon \]
Sin embargo, aún no disponible para estimaciones con lmer
results_3 = lmer(mathach ~ 1 + ses + female + sector + mnses + (1 | schoolid), data = mlm)
extract_eq(results_3)\[ \begin{aligned} \operatorname{mathach}_{i} &\sim N \left(\alpha_{j[i]} + \beta_{1}(\operatorname{ses}) + \beta_{2}(\operatorname{female}), \sigma^2 \right) \\ \alpha_{j} &\sim N \left(\gamma_{0}^{\alpha} + \gamma_{1}^{\alpha}(\operatorname{sector}) + \gamma_{2}^{\alpha}(\operatorname{mnses}), \sigma^2_{\alpha_{j}} \right) \text{, for schoolid j = 1,} \dots \text{,J} \end{aligned} \]
Por lo tanto, se deben hacer manualmente:
$$
y_{ij} = \gamma_{00} + \gamma_{01} \text{ses} + \gamma_{02} \text{female} + \gamma_{03} \text{sector} + \gamma_{04} \text{mnses} + u_{0j} + r_{ij}
$$
\[ mathach_{ij} = \gamma_{00} + \gamma_{01} \text{ses} + \gamma_{02} \text{female} + \gamma_{03} \text{sector} + \gamma_{04} \text{mnses} + u_{0j} + r_{ij} \]
un intento de solución:
lmer_to_mathjax <- function(model, response_name = "y_{ij}") {
# Extrae los términos del modelo
terms_fixed <- attr(terms(model), "term.labels")
re_terms <- lme4::findbars(formula(model)[[3]])
# Construye la parte fija de la ecuación
gamma_terms <- paste0("\\gamma_{0", seq_along(terms_fixed), "} \\text{", terms_fixed, "}")
gamma_0 <- "\\gamma_{00}"
fixed_part <- paste(c(gamma_0, gamma_terms), collapse = " + ")
# Construye la parte aleatoria
random_parts <- c()
for (re in re_terms) {
var_name <- as.character(re[[2]])
if (length(re[[2]]) == 1) {
random_parts <- c(random_parts, paste0("u_{0j}"))
} else {
random_parts <- c(random_parts, paste0("u_{1j}"))
}
}
random_part <- paste(unique(random_parts), collapse = " + ")
# Ruido
noise_part <- "r_{ij}"
# Construcción final
rhs <- paste(c(fixed_part, random_part, noise_part), collapse = " + ")
equation <- paste0("$$\n", response_name, " = ", rhs, "\n$$")
cat(equation)
}# Generate MathJax
cat(lmer_to_mathjax(results_3))\[ y_{ij} = \gamma_{00} + \gamma_{01} \text{ses} + \gamma_{02} \text{female} + \gamma_{03} \text{sector} + \gamma_{04} \text{mnses} + u_{0j} + r_{ij} \]