Una forma de abordar esta pregunta es mirarla al revés: ¿cómo podríamos comenzar con los residuos distribuidos normalmente y organizarlos para que sean heterocedásticos? Desde este punto de vista, la respuesta se vuelve obvia: asocie los residuos más pequeños con los valores pronosticados más pequeños.
Para ilustrar, aquí hay una construcción explícita.
Los datos a la izquierda son claramente heteroscedastic en relación con el ajuste lineal (se muestra en rojo). Esto es conducido a casa por los residuos frente a la gráfica prevista a la derecha. Pero, por construcción, el conjunto desordenado de residuos está cerca de la distribución normal, como muestra su histograma en el medio. (El valor p en la prueba de normalidad de Shapiro-Wilk es 0.60, obtenido con el R
comando shapiro.test(residuals(fit))
emitido después de ejecutar el siguiente código).
Los datos reales también pueden verse así. La moraleja es que la heterocedasticidad caracteriza una relación entre el tamaño residual y las predicciones, mientras que la normalidad no nos dice nada acerca de cómo los residuos se relacionan con otra cosa.
Aquí está el R
código para esta construcción.
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
función del paquete del automóvil paraR
realizar una prueba formal de heterocedasticidad. En el ejemplo de whuber, el comandoncvTest(fit)
produce un valor que es casi cero y proporciona una fuerte evidencia contra la variación constante del error (que se esperaba, por supuesto).