Как я могу интерпретировать этот подобранный график против остатков?


17

введите описание изображения здесь

Я не очень понимаю гетероскедастичность. Я хотел бы знать, подходит ли моя модель в соответствии с этим сюжетом.


Пожалуйста, подготовьте график остатков в зависимости от наблюдаемых значений. Если изменчивость ошибок связана с наблюдаемой
оценкой,

1
@IrishState остатки против наблюдаемых покажет корреляцию. Их сложнее интерпретировать из-за этого. Отклонения от подгонки показывают наилучшее приближение, которое мы имеем к тому, как ошибки связаны со средним значением популяции, и несколько полезно для изучения более обычного рассмотрения регрессии того, связана ли дисперсия со средним значением.
Glen_b

Ответы:


18

Как прокомментировал @IrishStat, вам нужно сравнить наблюдаемые значения с ошибками, чтобы увидеть, есть ли проблемы с изменчивостью. Я вернусь к этому ближе к концу.

Точно так же вы получите представление о том, что мы подразумеваем под гетероскедастичностью: когда вы подгоняете линейную модель к переменной вы, по сути, говорите, что делаете предположение, что ваш y N ( X β , σ 2 ) или с точки зрения непрофессионала, что ваш Ожидается, что y будет равняться X β плюс некоторые ошибки, которые имеют дисперсию σ 2 . Это практически ваша линейная модель y = X β + ϵ , где погрешности ϵ N ( 0 , σ 2 )YY~N(Иксβ,σ2)YИксβσ2Yзнак равноИксβ+εε~N(0,σ2), Хорошо, пока что, давайте посмотрим, что в коде:

set.seed(1);            #set the seed for reproducability
N = 100;                #Sample size
x = runif(N)            #Independant variable
beta = 4;               #Regression coefficient
epsilon = rnorm(N);     #Error with variance 1 and mean 0
y = x * beta + epsilon  #Your generative model
lin_mod <- lm(y ~x)  #Your linear model

так правильно, как ведет себя моя модель:

x11(); par(mfrow=c(1,3));   #Make a new 1-by-3 plot
plot(residuals(lin_mod)); 
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = ""); 
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod)); 
title("Residual vs Fit. value - OK model");

что должно дать вам что-то вроде этого: введите описание изображения здесь это означает, что ваши остатки, кажется, не имеют явной тенденции, основанной на вашем произвольном индексе (1-й график - наименее информативный на самом деле), кажется, не имеют реальной корреляции между ними (2-й график - довольно важный вероятно, более важно, чем гомоскедастичность), и что установленные значения не имеют явной тенденции к провалу, т.е. ваши установленные значения против ваших остатков кажутся довольно случайными. Исходя из этого, мы бы сказали, что у нас нет проблем гетероскедастичности, поскольку наши остатки, по-видимому, имеют одинаковую дисперсию везде.

Хорошо, вы хотите гетероскедастичность, хотя. Учитывая те же предположения о линейности и аддитивности, давайте определим еще одну порождающую модель с «очевидными» проблемами гетероскедастичности. А именно после некоторых значений наше наблюдение будет намного более шумным.

epsilon_HS = epsilon;               
epsilon_HS[ x>.55  ] = epsilon_HS[x>.55 ] * 9       #Heteroskedastic errors

y2 = x * beta + epsilon_HS      #Your generative model
lin_mod2 <- lm(y2 ~x)            #Your unfortunate LM

где простые диагностические участки модели:

 par(mfrow=c(1,3));   #Make a new 1-by-3 plot
 plot(residuals(lin_mod2)); 
 title("Simple Residual Plot - Fishy model")
 acf(residuals(lin_mod2), main = ""); 
 title("Residual Autocorrelation Plot - Fishy model");
 plot(fitted(lin_mod2), residuals(lin_mod2)); 
 title("Residual vs Fit. value - Fishy model");

должен дать что-то вроде: введите описание изображения здесь здесь первый сюжет кажется немного «странным»; похоже, у нас есть несколько остатков, которые сгруппированы в небольших величинах, но это не всегда проблема ... Второй график в порядке, означает, что у нас нет корреляции между вашими остатками в разных лагах, поэтому мы могли бы дышать на мгновение. И третий сюжет проливает бобы: совершенно ясно, что, когда мы достигли более высоких значений, наши остатки взрываются. У нас определенно есть гетероскедастичность в остатках этой модели, и нам нужно что-то предпринять (например, IRLS , регрессия Тейла -Сен и т. Д.)

Здесь проблема была действительно очевидной, но в других случаях мы могли бы пропустить; чтобы уменьшить наши шансы пропустить его, еще один проницательный сюжет был упомянут IrishStat: «Остаточные значения в сравнении с наблюдаемыми значениями» или для нашей проблемы с игрушкой:

 par(mfrow=c(1,2))
 plot(y, residuals(lin_mod) ); 
 title( "Residual vs Obs. value - OK model")
 plot(y2, residuals(lin_mod2) ); 
 title( "Residual vs Obs. value - Fishy model")

который должен дать что-то вроде:

введите описание изображения здесьр2р20,59890,03919

Справедливости ради вашей ситуации, ваш график вычетов по сравнению с подгонкой значений выглядит относительно нормально. Проверка ваших остатков по сравнению с вашими наблюдаемыми значениями, вероятно, была бы полезна, чтобы убедиться, что вы в безопасности. (Я не упомянул QQ-графики или что-то в этом роде, чтобы не сбивать с толку вещи, но вы также можете кратко их проверить.) Я надеюсь, что это поможет вам понять гетероскедастичность и то, на что вам следует обратить внимание.


4
Вы не должны удивляться или беспокоиться, чтобы увидеть связь между остатками и наблюдаемыми значениями. Попробуйте рассчитать теоретический результат для правильно указанной модели.
Scortchi - Восстановить Монику


+1 к обоим вашим комментариям. Спасибо за указание на эту проблему; Ваш комментарий был / был на месте. Я отредактировал этот отрывок, чтобы он теперь читался правильно.
usεr11852 говорит восстановить Monic

1
Пожалуйста. Я все еще не уверен, какое значение, по вашему мнению, добавляет график остатков к наблюдаемым значениям отклика; существование и характер гетероскедастичности менее очевидны, чем на графике остатков в зависимости от установленных значений отклика.
Scortchi - Восстановить Монику

Я (в основном) согласен. Как вы видели, это был не мой первый диагностический сюжет. Это было предложено IrishStat, хотя, и я подумал, что это необходимо для полного ответа на ФП.
usεr11852 говорит восстановить Monic

9

Ваш вопрос, кажется, о гетероскедастичности (потому что вы упомянули это по имени и добавили тег), но ваш явный вопрос (например, в заголовке и), заканчивающий ваш пост, носит более общий характер: «Подходит ли моя модель в соответствии с этим? участок". Определить, является ли модель неподходящей, - это не только оценка гетероскедастичности.

Я удалил ваши данные с помощью этого сайта (ht @Alexis). Обратите внимание, что данные отсортированы в порядке возрастания fitted. Основываясь на регрессии и верхнем левом графике, это кажется достаточно точным:

mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
#   Min       1Q   Median       3Q      Max 
# -0.78374 -0.13559  0.00928  0.19525  0.48107 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.06406    0.35123   0.182    0.856
# fitted      -0.01178    0.05675  -0.208    0.836
# 
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared:  0.0008118,  Adjusted R-squared:  -0.01804 
# F-statistic: 0.04306 on 1 and 53 DF,  p-value: 0.8364

введите описание изображения здесь

Я не вижу здесь никаких признаков гетероскедастичности. Сверху справа (qq-plot), похоже, нет никаких проблем с предположением о нормальности.

С другой стороны, кривая «S» в красной подгонке под низ (в верхнем левом графике) и графики acf и pacf (внизу) действительно проблематичны. Крайне слева большая часть остатков находится выше серой линии 0. При перемещении вправо основная масса остатков падает ниже 0, затем выше, а затем снова ниже. Результатом этого является то, что, если я скажу вам, что я смотрю на определенный остаток, и что он имеет отрицательное значение (но я не сказал вам, какой именно я смотрю), вы могли бы с большой точностью догадаться, что остатки поблизости были также отрицательно оценены. Другими словами, остатки не являются независимыми - знание чего-либо об одном дает вам информацию о других.

В дополнение к участкам, это можно проверить. Простой подход заключается в использовании теста прогонов :

library(randtests)
runs.test(residuals)
#  Runs Test
# 
# data:  residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness

Икс2Икс3

Чтобы ответить на ваши явные вопросы: ваш график показывает последовательные автокорреляции / не независимость ваших остатков. Это означает, что ваша модель не соответствует текущей форме.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.