Uma maneira de abordar essa questão é analisá-la ao contrário: como poderíamos começar com resíduos normalmente distribuídos e organizá-los para serem heterocedásticos? Desse ponto de vista, a resposta se torna óbvia: associe os resíduos menores aos menores valores previstos.
Para ilustrar, aqui está uma construção explícita.
Os dados à esquerda são claramente heterocedásticos em relação ao ajuste linear (mostrado em vermelho). Isso é levado para casa pelos resíduos versus a previsão do gráfico à direita. Mas - por construção - o conjunto não ordenado de resíduos está quase distribuído normalmente, como mostra o histograma no meio. (O valor p no teste de normalidade Shapiro-Wilk é 0,60, obtido com o R
comando shapiro.test(residuals(fit))
emitido após a execução do código abaixo.)
Dados reais também podem se parecer com isso. A moral é que a heterocedasticidade caracteriza uma relação entre tamanho residual e previsões, enquanto a normalidade não nos diz nada sobre como os resíduos se relacionam com qualquer outra coisa.
Aqui está o R
código para esta construção.
set.seed(17)
n <- 256
x <- (1:n)/n # The set of x values
e <- rnorm(n, sd=1) # A set of *normally distributed* values
i <- order(runif(n, max=dnorm(e))) # Put the larger ones towards the end on average
y <- 1 + 5 * x + e[rev(i)] # Generate some y values plus "error" `e`.
fit <- lm(y ~ x) # Regress `y` against `x`.
par(mfrow=c(1,3)) # Set up the plots ...
plot(x,y, main="Data", cex=0.8)
abline(coef(fit), col="Red")
hist(residuals(fit), main="Residuals")
plot(predict(fit), residuals(fit), cex=0.8, main="Residuals vs. Predicted")
ncvTest
função do pacote veicular paraR
realizar um teste formal de heterocedasticidade. No exemplo do whuber, o comandoncvTest(fit)
gera um valor-