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"))