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.
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
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