Equações no RMarkdown: dica rápida

Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Equações no RMarkdown: dica rápida. Campo Grande-MS,Brasil: RStudio/Rpubs, 2020. Disponível em http://rpubs.com/amrofi/dica-equations e https://adrianofigueiredo.netlify.app/post/dica-equations/.

Descrição

Esta é uma dica rápida para fazer equações no seu texto.

Exemplo 1

Seja um dataset como do script abaixo:

dados <- structure(list(y = c(70, 65, 90, 95, 110, 115, 120, 140, 155, 150), x = c(80, 
    100, 120, 140, 160, 180, 200, 220, 240, 260), obs = c(1, 2, 3, 4, 5, 6, 7, 8, 
    9, 10)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
attach(dados)
library(knitr)  # pacote para a funcao kable
kable(dados, caption = "Dados básicos.")  # funcao para visualizar os dados em uma forma de tabela
Dados básicos.
y x obs
70 80 1
65 100 2
90 120 3
95 140 4
110 160 5
115 180 6
120 200 7
140 220 8
155 240 9
150 260 10

Agora farei a regressão pela função nativa lm:

reg1 <- lm(y ~ x)  # regressao pela funcao lm nativa do R 
summary(reg1)  # ver o sumario de resultados do objeto reg1: saída da regressao

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-10.364  -4.977   1.409   4.364   8.364 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 24.45455    6.41382   3.813  0.00514 ** 
x            0.50909    0.03574  14.243 5.75e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.493 on 8 degrees of freedom
Multiple R-squared:  0.9621,    Adjusted R-squared:  0.9573 
F-statistic: 202.9 on 1 and 8 DF,  p-value: 5.753e-07

Agora posso fazer a equação que representa essa saída utilizando o pacote equatiomatic (https://github.com/datalorax/equatiomatic) desenvolvido por Daniel Anderson et al. Você precisará instalá-lo a partir do GitHub.

remotes::install_github("datalorax/equatiomatic")

Após a instalação, faço então a representação da equação teórica com o script e a função extract_eq pegará o formato da regressão reg1:

library(equatiomatic)
equatiomatic::extract_eq(reg1)
$$
\operatorname{y} = \alpha + \beta_{1}(\operatorname{x}) + \epsilon
$$

O resultado sai em formato Latex e então você pode inserir em seu Rmd.

\[ \operatorname{y} = \alpha + \beta_{1}(\operatorname{x}) + \epsilon \]

Posso ainda realizar a exibição da equação com os coeficientes estimados:

equatiomatic::extract_eq(reg1, use_coefs = TRUE)
$$
\operatorname{y} = 24.45 + 0.51(\operatorname{x}) + \epsilon
$$

O resultado saída em formato Latex e então você pode inserir em seu Rmd.

\[ \operatorname{y} = 24.45 + 0.51(\operatorname{x}) + \epsilon \] Atentar que o pacote não avalia se o parâmetro é não-signicativo e inclui mesmo que não seja. Caberá ao leitor fazer essa avaliação.

Exemplo 2:

O exemplo citado no pacote equatiomatic usa o dataset mtcars:

library(equatiomatic)

# Fit a simple model
reg2 <- lm(mpg ~ cyl + disp, mtcars)

# Give the results to extract_eq
extract_eq(reg2)
$$
\operatorname{mpg} = \alpha + \beta_{1}(\operatorname{cyl}) + \beta_{2}(\operatorname{disp}) + \epsilon
$$
# > $$ > \operatorname{mpg} = \alpha + \beta_{1}(\operatorname{cyl}) +
# \beta_{2}(\operatorname{disp}) + \epsilon > $$

cuja equação teórica será:

\[ \operatorname{mpg} = \alpha + \beta_{1}(\operatorname{cyl}) + \beta_{2}(\operatorname{disp}) + \epsilon \]

E a equação com parâmetros estimados será:

equatiomatic::extract_eq(reg2, use_coefs = TRUE)
$$
\operatorname{mpg} = 34.66 - 1.59(\operatorname{cyl}) - 0.02(\operatorname{disp}) + \epsilon
$$

\[ \operatorname{mpg} = 34.66 - 1.59(\operatorname{cyl}) - 0.02(\operatorname{disp}) + \epsilon \]

Compare com os resultados do modelo:

summary(reg2)

Call:
lm(formula = mpg ~ cyl + disp, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.4213 -2.1722 -0.6362  1.1899  7.0516 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34.66099    2.54700  13.609 4.02e-14 ***
cyl         -1.58728    0.71184  -2.230   0.0337 *  
disp        -0.02058    0.01026  -2.007   0.0542 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.055 on 29 degrees of freedom
Multiple R-squared:  0.7596,    Adjusted R-squared:  0.743 
F-statistic: 45.81 on 2 and 29 DF,  p-value: 1.058e-09

Referências

Anderson, Daniel; Heiss, Andrew (2020). equatiomatic: Transform Models into ‘LaTeX’ Equations. R package version 0.1.0. https://github.com/datalorax/equatiomatic

Xie, Yihui (2020). bookdown: Authoring Books and Technical Documents with R Markdown. R package version 0.20.

Xie, Yihui (2016). bookdown: Authoring Books and Technical Documents with R Markdown. Chapman and Hall/CRC. ISBN 978-1138700109

Avatar
Adriano M R Figueiredo
Professor of Regional Economics and Econometrics

My research interests include regional economics, econometrics, sustainable public policies and agricultural economics.

Related