Лучший способ справиться с гетероскедастичностью?

19

У меня есть график остаточных значений линейной модели в зависимости от подогнанных значений, где гетероскедастичность очень ясна. Однако я не уверен, как мне поступить сейчас, потому что, насколько я понимаю, эта гетероскедастичность делает мою линейную модель недействительной. (Это правильно?)

  1. Используйте надежную линейную аппроксимацию, используя rlm()функцию MASSпакета, потому что он явно устойчив к гетероскедастичности.

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

Какой метод лучше всего использовать для решения моей проблемы? Если я использую решение 2, мои возможности предсказания моей модели совершенно бесполезны?

Тест Брейша-Пэгана подтвердил, что дисперсия не постоянна.

Мои остатки в зависимости от установленных значений выглядят так:

https://i.gyazo.com/9407a829a168492b31dfa3d1dd33a21d.png

(увеличенная версия)

TristanDM
источник
Вы имеете в виду «stackoverflow», а не «stackexchange»? (вы все еще здесь на stackexchange.) Если это так, лучше перенести вопрос, а не публиковать вторую копию (помощь просит не публиковать один и тот же Q несколько раз, а выбрать одно из лучших мест).
Glen_b
Различия в разбросе не настолько велики, что воздействие будет серьезным (то есть, хотя оно сместит ваши стандартные ошибки и, таким образом, повлияет на вывод, это, вероятно, не будет иметь большого значения). Я был бы склонен рассмотреть, был ли разброс связан со средним, и, возможно, взглянуть на GLM или, возможно, на трансформацию (она, конечно, выглядит связанной с подобранной). Что такое у-переменная?
Glen_b
2
Другая возможность состоит в том, чтобы смоделировать гетероскедастичность, например, используя glsодну из дисперсионных структур из пакета nlme.
Роланд

Ответы:

18

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

outliers > nonlinearity > heteroscedasticity > non-normality

(например, не беспокойтесь о нелинейности перед проверкой, есть ли странные наблюдения, которые искажают подгонку; не беспокойтесь о нормальности, прежде чем беспокоиться о гетероскедастичности).

В этом конкретном случае я бы подобрал квадратичную модель y ~ poly(x,2)(или poly(x,2,raw=TRUE)или y ~ x + I(x^2)и посмотрю, не устранит ли она проблему).

Бен Болкер
источник
Участок маленький, а оси не помечены. Я не знаю, если это остатки против встроенного участка. Я предположил, что ОП включает квадратный термин, например. Если нет, то вы явно правы.
gung - Восстановить Монику
1
в моем браузере я вижу, что диапазон по оси Y изменяется от -4 до 3, что, по-видимому, указывает на то, что остатки по сравнению с подогнанным
графиком
1
Привет, Бен, люби то, что ты делаешь. Можете ли вы расширить идею о том, что "выбросы" являются самой большой проблемой? Включаете ли вы единичные точки с высоким левереджем как «выбросы», даже если они имеют небольшой остаток? Я все время занимаюсь наблюдениями экстремальных ценностей в своей области деятельности (статистика окружающей среды) и обнаруживаю, что некоторые люди (в частности, EPA) стремятся выбить выбросы из пропорции (извините за непреднамеренный каламбур) и очень стараются исключить их. Я склонен проявлять терпимое отношение к выбросам, если не могу найти убедительных доказательств того, что они явно являются результатом ошибки в данных (сбор, ввод).
Далтон Ханс
1
@DaltonHance: мы, вероятно, в значительной степени на той же странице. Моя точка зрения заключается в том, что если у вас есть выбросы (по любому определению), и они не учитываются какой бы то ни было статистической моделью / подходом, который вы используете (смешанные модели, надежная статистика, распределения с "толстыми хвостами" и т. Д.), То это будет иметь тенденцию испортить всю остальную часть вашей диагностики - это заставит остатки выглядеть нелинейными / гетероскедастичными / ненормальными. Я, конечно, согласен, что вы не должны просто бездумно / рефлексивно выбрасывать их.
Бен Болкер
8

Я перечислю ряд методов работы с гетероскедастичностью (с Rпримерами) здесь: Альтернативы одностороннему ANOVA для гетероскедастических данных . Многие из этих рекомендаций были бы менее идеальными, потому что у вас есть одна непрерывная переменная, а не многоуровневая категориальная переменная, но в любом случае было бы неплохо прочитать ее в качестве обзора.

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

Вот несколько ответов на ваши конкретные вопросы:

  1. Робастная регрессия - жизнеспособный вариант, но, на мой взгляд, было бы лучше, если бы в сочетании с весами. Если вас не беспокоит, что гетероскедастичность обусловлена ​​выбросами, вы можете просто использовать регулярную линейную регрессию с весами. Помните, что дисперсия может быть очень чувствительной к выбросам, а ваши результаты могут быть чувствительными к несоответствующим весам, поэтому, что может быть важнее, чем использование надежной регрессии для окончательной модели, будет использовать надежную меру дисперсии для оценки весов. Например, в связанной ветке я использую 1 / IQR.
  2. Стандартные ошибки неверны из-за гетероскедастичности. Вы можете откорректировать стандартные ошибки с помощью сэндвич-оценки Huber-White. Это то, что @GavinSimpson делает в связанной ветке SO.

ИксИкс

Gung - Восстановить Монику
источник
1
использование надежной регрессии из пакета lmrob автоматически выведет некоторые веса, почему бы не использовать их вместо этого в # 1?
tool.ish
1

Загрузите sandwich packageи вычислите матрицу var-cov вашей регрессии с помощью var_cov<-vcovHC(regression_result, type = "HC4")(прочитайте руководство sandwich). Теперь с lmtest packageпомощью coeftestфункции:

coeftest(regression_result, df = Inf, var_cov)
Джакомо Росаспина
источник
0

Как выглядит распределение ваших данных? Это похоже на кривую колокола вообще? Из предмета, может ли он вообще нормально распределяться? Например, длительность телефонного звонка не может быть отрицательной. Так что в этом конкретном случае вызовов гамма-распределение хорошо описывает это. А с гаммой вы можете использовать обобщенную линейную модель (GLM в R)

Диего
источник