Assim como a maioria dos usuários mais antigos do R, eu comecei a criar gráficos na linguagem utilizando suas funções padrão, como plot
, hist
e boxplot
. Assim, a análise de resíduos que eu fazia seguia o mesmo estilo dos gráficos que eu construía.
library(palmerpenguins)
# estimacao do modelo linear
ajuste <- lm(body_mass_g ~ flipper_length_mm, data = penguins)
# analise exploratoria e modelo ajustado
plot(body_mass_g ~ flipper_length_mm, data = penguins)
abline(ajuste)
# analise dos residuos
par(mfrow = c(2, 2))
plot(ajuste)
Entretanto, desde que mudei o estilo dos meus gráficos para adaptá-los ao uso do tidyverse
, eu passei a procurar uma ferramenta que me permitisse analisar os resíduos dos modelos que ajusto, de maneira que o estilo dos gráficos da análise exploratória e da análise de resíduos ficassem similares.
A primeira destas tentativas foi com o pacote ggfortify
:
library(palmerpenguins)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.6 ✓ dplyr 1.0.7
## ✓ tidyr 1.1.4 ✓ stringr 1.4.0
## ✓ readr 2.1.1 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
theme_set(theme_bw())
library(ggfortify)
# estimacao do modelo linear
ajuste <- lm(body_mass_g ~ flipper_length_mm, data = penguins)
# analise exploratoria e modelo ajustado
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
## `geom_smooth()` using formula 'y ~ x'
# analise dos residuos
autoplot(ajuste)
Usei esta solução durante muito tempo, apesar dela me desagradar um pouco. Meu principal problema com ela é o fato de não mostrar os limites da Distância de Cook, o que inviabiliza a fácil detecção de pontos de influência.
Até que, em um determinado momento, conheci o pacote performance
. Com ele, consegui gerar os gráficos no estilo do ggplot
, como sempre quis, além de ter os limites da Distância de Cook. E, para melhorar, cada gráfico vem com uma pequena descrição do que é possível avaliar em cada um deles, facilitando a vida de quem é iniciante.
library(palmerpenguins)
library(tidyverse)
theme_set(theme_bw())
library(performance)
# estimacao do modelo linear
ajuste <- lm(body_mass_g ~ flipper_length_mm, data = penguins)
# analise exploratoria e modelo ajustado
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
## `geom_smooth()` using formula 'y ~ x'
# analise dos residuos
check_model(ajuste,
check = c("linearity", "qq", "homogeneity", "outliers"))