Une façon d'aborder cette question est de la regarder à l'envers: comment pourrions-nous commencer avec des résidus normalement distribués et les arranger pour qu'ils soient hétéroscédastiques? De ce point de vue, la réponse devient évidente: associer les plus petits résidus aux plus petites valeurs prédites.
Pour illustrer, voici une construction explicite.
Les données de gauche sont clairement hétéroscédastiques par rapport à l'ajustement linéaire (montré en rouge). Ceci est déterminé par les résidus par rapport au graphique prévu à droite. Mais - par construction - l' ensemble non ordonné de résidus est proche de la distribution normale, comme le montre leur histogramme au milieu. (La valeur de p dans le test de normalité de Shapiro-Wilk est de 0,60, obtenue avec la R
commande shapiro.test(residuals(fit))
émise après l'exécution du code ci-dessous.)
Les données réelles peuvent également ressembler à ceci. La morale est que l' hétéroscédasticité caractérise une relation entre la taille résiduelle et les prédictions alors que la normalité ne nous dit rien sur la façon dont les résidus sont liés à autre chose.
Voici le R
code de cette construction.
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
fonction du package de voiture pourR
effectuer un test formel d'hétéroscédasticité. Dans l'exemple de whuber, la commandencvTest(fit)
produit une valeur qui est presque nulle et fournit des preuves solides contre la variance d'erreur constante (ce qui était prévu, bien sûr).