Como criar um histograma de resíduos em r
Uma das principais suposições da regressão linear é que os resíduos são normalmente distribuídos.
Uma forma de verificar visualmente esta suposição é criar um histograma dos resíduos e observar se a distribuição segue ou não um “formato de sino” que lembra a distribuição normal .
Este tutorial fornece um exemplo passo a passo de como criar um histograma de resíduos para um modelo de regressão em R.
Etapa 1: crie os dados
Primeiro, vamos criar alguns dados falsos para trabalhar:
#make this example reproducible set.seed(0) #createdata x1 <- rnorm(n=100, 2, 1) x2 <- rnorm(100, 4, 3) y <- rnorm(100, 2, 3) data <- data.frame(x1, x2, y) #view first six rows of data head(data) x1 x2 y 1 3.262954 6.3455776 -1.1371530 2 1.673767 1.6696701 -0.6886338 3 3.329799 2.1520303 5.8081615 4 3.272429 4.1397409 3.7815228 5 2.414641 0.6088427 4.3269030 6 0.460050 5.7301563 6.6721111
Passo 2: Ajustar o modelo de regressão
A seguir, ajustaremos um modelo de regressão linear múltipla aos dados:
#fit multiple linear regression model
model <- lm(y ~ x1 + x2, data=data)
Etapa 3: Crie um histograma de resíduos
Por fim, usaremos o pacote de visualização ggplot para criar um histograma dos resíduos do modelo:
#load ggplot2
library (ggplot2)
#create histogram of residuals
ggplot(data = data, aes (x = model$residuals)) +
geom_histogram(fill = ' steelblue ', color = ' black ') +
labs(title = ' Histogram of Residuals ', x = ' Residuals ', y = ' Frequency ')
Observe que também podemos especificar o número de caixas para colocar os resíduos usando o argumento bin .
Quanto menos caixas houver, mais largas serão as barras no histograma. Por exemplo, poderíamos especificar 20 compartimentos :
#create histogram of residuals
ggplot(data = data, aes (x = model$residuals)) +
geom_histogram(bins = 20 , fill = ' steelblue ', color = ' black ') +
labs(title = ' Histogram of Residuals ', x = ' Residuals ', y = ' Frequency ')
Ou poderíamos especificar 10 compartimentos :
#create histogram of residuals
ggplot(data = data, aes (x = model$residuals)) +
geom_histogram(bins = 10 , fill = ' steelblue ', color = ' black ') +
labs(title = ' Histogram of Residuals ', x = ' Residuals ', y = ' Frequency ')
Não importa quantas caixas especifiquemos, podemos ver que os resíduos têm distribuição aproximadamente normal.
Também poderíamos realizar um teste estatístico formal como Shapiro-Wilk, Kolmogorov-Smirnov ou Jarque-Bera para testar a normalidade.
No entanto, tenha em mente que estes testes são sensíveis a amostras grandes – ou seja, muitas vezes concluem que os resíduos não são normais quando o tamanho da amostra é grande.
Por esta razão, muitas vezes é mais fácil avaliar a normalidade criando um histograma dos resíduos.