Один из способов подойти к этому вопросу - посмотреть на него с обратной стороны: как мы можем начать с нормально распределенных остатков и расположить их как гетероскедастичные? С этой точки зрения ответ становится очевидным: связать меньшие невязки с меньшими предсказанными значениями.
Для иллюстрации приведем явную конструкцию.
Данные слева явно гетероскедастичны относительно линейного соответствия (показано красным). Это обусловлено остатками и прогнозируемым участком справа. Но - по построению - неупорядоченный набор остатков близок к нормально распределенному, как показывает их гистограмма в середине. (Значение p в тесте нормальности Шапиро-Уилка равно 0,60, полученное с помощью R
команды, выполненной shapiro.test(residuals(fit))
после запуска приведенного ниже кода.)
Реальные данные тоже могут выглядеть так. Мораль состоит в том, что гетероскедастичность характеризует отношение между остаточным размером и предсказаниями, тогда как нормальность ничего не говорит нам о том, как эти остатки связаны с чем-то еще.
Вот R
код для этой конструкции.
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
функцию автомобильного пакета дляR
проведения формального теста на гетероскедастичность. В примере whuber командаncvTest(fit)
выдает значение, которое почти равно нулю и дает убедительные доказательства против постоянной дисперсии ошибок (что, конечно, ожидалось).