Как бороться с мультиколлинеарностью при выборе переменных?

28

У меня есть набор данных с 9 непрерывными независимыми переменными. Я пытаюсь выбрать среди этих переменных, чтобы подогнать модель к одной процентной (зависимой) переменной Score. К сожалению, я знаю, что между несколькими переменными будет серьезная коллинеарность.

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

Вот мой код R (поскольку это процентные данные, я использую логит-преобразование для Score):

library(MASS)
library(car)

data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
             Var8 + Var9, data = data.tst)

step = stepAIC(data.lm, direction="both")
summary(step)

По какой-то причине я обнаружил, что переменные, перечисленные в начале уравнения, в конечном итоге выбираются stepAIC()функцией, а результатом можно управлять, перечисляя, например, Var9сначала (после тильды).

Что является более эффективным (и менее спорным) способом подгонки модели здесь? На самом деле я не зациклен на использовании линейной регрессии: единственное, что мне нужно, - это понять, какая из 9 переменных действительно влияет на изменение Scoreпеременной. Предпочтительно, это будет какой-то метод, который учитывает большой потенциал коллинеарности в этих 9 переменных.

Julie
источник
6
Коллинеарность будет означать, однако, как вы делаете анализ, что по существу невозможно определить, управляет ли одна переменная больше или меньше, чем переменная, с которой она сильно коллинеарна. Помня об этом ограничении, вы можете использовать лассо как средство выбора небольшого числа переменных, которые предсказывают оптимально, а затем сообщать о наборе переменных, которые он выбирает, и о тех, с которыми этот набор очень коллинеарен. Сгруппированное лассо - другой вариант.
гость
4
@guest: Лассо не работает особенно хорошо при наличии сильной коллинеарности, особенно в отношении проблемы выбора модели.
кардинал
2
@cardinal, с лассо все в порядке, но если несколько переменных коррелируют, он будет стремиться выбрать только одну из них, поэтому я предложил взглянуть на набор сильно коллинеарных переменных. Решение использовать что-то более сложное, чем это «значение по умолчанию», потребует оценки полезности и более четкого представления о том, для чего предназначена эта модель.
Гость
2
Возможно, вы захотите взглянуть на функцию bicreg {package BMA}. Обратите внимание, что вам нужен полный набор данных для правильной работы. Я считаю это чрезвычайно полезным для выбора модели.
Доминик Комтуа
1
@guest: Ну, это очень сильно зависит от способа выбора параметра регуляризации. На самом деле, в определенных режимах лассо имеет (доказуемую) тенденцию к чрезмерному выбору параметров. ФП спросил: «Единственное, что мне нужно, - это понять, какая из 9 переменных действительно является причиной изменения Scoreпеременной», - на этом предложении я мог бы сосредоточиться. При наличии сильной коллинеарности лассо не поможет с этим, по крайней мере, в более строгих интерпретациях замечания ОП.
кардинал

Ответы:

14

Во-первых, очень хорошим ресурсом для этой проблемы является Т. Кит, «Множественная регрессия» и далее. В книге много материала о моделировании путей и выборе переменных, и я думаю, что вы найдете исчерпывающие ответы на свои вопросы там.

Одним из способов решения мультиколлинеарности является центрирование предикторов, то есть вычитание среднего значения одного ряда из каждого значения. Ридж-регрессия также может быть использована, когда данные сильно коллинеарны. Наконец, последовательная регрессия может помочь в понимании причинно-следственных связей между предикторами в сочетании с анализом временной последовательности событий предикторов.

Все ли 9 переменных показывают коллинеарность? Для диагностики можно использовать коэффициент инфляции дисперсии Cohen 2003. Значение VIF> = 10 указывает на высокую коллинеарность и завышенные стандартные ошибки. Я понимаю, что вас больше интересуют причинно-следственные связи между предикторами и результатами. Если нет, мультиколлинеарность не считается серьезной проблемой для прогнозирования, как вы можете подтвердить, сравнив MAE из выборочных данных с построенными моделями, добавляя ваши предикторы по одному. Если у ваших предикторов есть предельная сила предсказания, вы обнаружите, что MAE уменьшается даже при наличии мультиколлинеарности модели.

Роберт Кубрик
источник
16

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

Фрэнк Харрелл
источник
Могли бы вы просто объяснитьand put summary scores into the model
SIslam
1
Мои заметки по курсу на biostat.mc.vanderbilt.edu/rms подробно описаны
Фрэнк Харрелл,
1

Если вы хотите выполнить выбор переменных при наличии высокой коллинеарности, я могу порекомендовать пакет l0ara , который подходит для штрафованных GLM L0 с использованием итеративной процедуры адаптивного гребня . Поскольку этот метод в конечном счете основан на регуляризованной регрессии гребня, он может очень хорошо справляться с коллинеарностью, и в моих имитациях он давал гораздо меньше ложных срабатываний, в то же время давая отличные результаты прогнозирования, а также по сравнению, например, с LASSO, эластичной сеткой или адаптивным LASSO. Кроме того , можно также попробовать пакет L0Learnс комбинацией штрафа L0 и L2. Тогда штраф L0 благоприятствует разреженности (то есть малым моделям), тогда как штраф L2 регулирует коллинеарность. Эластичная сеть (которая использует комбинацию штрафа L1 и L2) также часто предлагается, но в моих тестах это привело к большему количеству ложных срабатываний, плюс коэффициенты будут сильно смещены. С этим смещением можно избавиться, если вместо этого использовать штрафные методы L0 (или лучшее подмножество) - это так называемая оценка оракула, которая одновременно получает согласованные и несмещенные коэффициенты параметров. Параметры регуляризации во всех этих методах необходимо оптимизировать с помощью перекрестной проверки, чтобы обеспечить оптимальную эффективность прогнозирования вне выборки. Если вы также хотите получить уровни значимости и доверительные интервалы для ваших параметров, вы также можете сделать это с помощью непараметрической начальной загрузки.

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

Если вы анализируете данные о пропорциях, вам лучше использовать модель логистической регрессии, кстати - l0araпакет позволяет вам делать это в сочетании со штрафом L0; для L0Learnпакета это будет поддерживаться в ближайшее время.

Том Венселерс
источник