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 core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
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"))