A heterocedasticidade e a leptokurtosis são facilmente confundidas na análise dos dados. Pegue um modelo de dados que gere um termo de erro como Cauchy. Isso atende aos critérios de homocedasticidade. A distribuição de Cauchy tem variação infinita. Um erro de Cauchy é a maneira de um simulador incluir um processo de amostragem externa.
Com esses erros de cauda pesados, mesmo quando você se encaixa no modelo médio correto, o outlier leva a um grande resíduo. Um teste de heterocedasticidade inflou bastante o erro do tipo I neste modelo. Uma distribuição Cauchy também possui um parâmetro de escala. A geração de termos de erro com um aumento linear na escala produz dados heterocedásticos, mas o poder de detectar esses efeitos é praticamente nulo, portanto o erro do tipo II também é inflado.
Deixe-me sugerir, então, que a abordagem analítica de dados adequada não seja atolada nos testes. Os testes estatísticos são principalmente enganosos. Onde isso é mais óbvio do que os testes destinados a verificar as suposições de modelagem secundárias. Eles não substituem o bom senso. Para seus dados, você pode ver claramente dois grandes resíduos. Seu efeito sobre a tendência é mínimo, se houver algum resíduo compensado em uma partida linear da linha 0 no gráfico de resíduos versus ajustado. Isso é tudo que você precisa saber.
O que se deseja, então, é um meio de estimar um modelo de variação flexível que permita criar intervalos de previsão em um intervalo de respostas ajustadas. Curiosamente, essa abordagem é capaz de lidar com a maioria das formas sãs de heterocedasticidade e kurtotis. Por que não usar uma abordagem de spline de suavização para estimar o erro quadrático médio.
Veja o seguinte exemplo:
set.seed(123)
x <- sort(rexp(100))
y <- rcauchy(100, 10*x)
f <- lm(y ~ x)
abline(f, col='red')
p <- predict(f)
r <- residuals(f)^2
s <- smooth.spline(x=p, y=r)
phi <- p + 1.96*sqrt(s$y)
plo <- p - 1.96*sqrt(s$y)
par(mfrow=c(2,1))
plot(p, r, xlab='Fitted', ylab='Squared-residuals')
lines(s, col='red')
legend('topleft', lty=1, col='red', "predicted variance")
plot(x,y, ylim=range(c(plo, phi), na.rm=T))
abline(f, col='red')
lines(x, plo, col='red', lty=2)
lines(x, phi, col='red', lty=2)
Fornece o seguinte intervalo de previsão que "aumenta" para acomodar os valores extremos. Ainda é um estimador consistente da variação e diz às pessoas: "Ei, essa observação grande e instável em torno de X = 4 e não podemos prever valores muito úteis lá".