У меня есть набор данных с 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 переменных.
Score
переменной», - на этом предложении я мог бы сосредоточиться. При наличии сильной коллинеарности лассо не поможет с этим, по крайней мере, в более строгих интерпретациях замечания ОП.Ответы:
Во-первых, очень хорошим ресурсом для этой проблемы является Т. Кит, «Множественная регрессия» и далее. В книге много материала о моделировании путей и выборе переменных, и я думаю, что вы найдете исчерпывающие ответы на свои вопросы там.
Одним из способов решения мультиколлинеарности является центрирование предикторов, то есть вычитание среднего значения одного ряда из каждого значения. Ридж-регрессия также может быть использована, когда данные сильно коллинеарны. Наконец, последовательная регрессия может помочь в понимании причинно-следственных связей между предикторами в сочетании с анализом временной последовательности событий предикторов.
Все ли 9 переменных показывают коллинеарность? Для диагностики можно использовать коэффициент инфляции дисперсии Cohen 2003. Значение VIF> = 10 указывает на высокую коллинеарность и завышенные стандартные ошибки. Я понимаю, что вас больше интересуют причинно-следственные связи между предикторами и результатами. Если нет, мультиколлинеарность не считается серьезной проблемой для прогнозирования, как вы можете подтвердить, сравнив MAE из выборочных данных с построенными моделями, добавляя ваши предикторы по одному. Если у ваших предикторов есть предельная сила предсказания, вы обнаружите, что MAE уменьшается даже при наличии мультиколлинеарности модели.
источник
Поскольку очень трудно определить, какие переменные отбрасывать, часто лучше не отбрасывать переменные. Два способа продвинуться по этой линии: (1) использовать метод сокращения данных (например, кластеризацию переменных или главные компоненты) и поместить суммарные оценки в модель вместо отдельных переменных и (2) поместить все переменные в модель, но не тестировать для эффекта одной переменной, скорректированной с учетом влияния конкурирующих переменных. Для (2) тесты с частями конкурирующих переменных являются мощными, потому что коллинеарные переменные объединяют силы в общем тесте ассоциации множественной степени свободы, а не конкурируют друг с другом, как при тестировании переменных по отдельности.
источник
and put summary scores into the model
Если вы хотите выполнить выбор переменных при наличии высокой коллинеарности, я могу порекомендовать пакет l0ara , который подходит для штрафованных GLM L0 с использованием итеративной процедуры адаптивного гребня . Поскольку этот метод в конечном счете основан на регуляризованной регрессии гребня, он может очень хорошо справляться с коллинеарностью, и в моих имитациях он давал гораздо меньше ложных срабатываний, в то же время давая отличные результаты прогнозирования, а также по сравнению, например, с LASSO, эластичной сеткой или адаптивным LASSO. Кроме того , можно также попробовать пакет L0Learnс комбинацией штрафа L0 и L2. Тогда штраф L0 благоприятствует разреженности (то есть малым моделям), тогда как штраф L2 регулирует коллинеарность. Эластичная сеть (которая использует комбинацию штрафа L1 и L2) также часто предлагается, но в моих тестах это привело к большему количеству ложных срабатываний, плюс коэффициенты будут сильно смещены. С этим смещением можно избавиться, если вместо этого использовать штрафные методы L0 (или лучшее подмножество) - это так называемая оценка оракула, которая одновременно получает согласованные и несмещенные коэффициенты параметров. Параметры регуляризации во всех этих методах необходимо оптимизировать с помощью перекрестной проверки, чтобы обеспечить оптимальную эффективность прогнозирования вне выборки. Если вы также хотите получить уровни значимости и доверительные интервалы для ваших параметров, вы также можете сделать это с помощью непараметрической начальной загрузки.
Итеративный алгоритм адаптивного гребня
l0ara
(иногда называемый сломанным адаптивным гребнем), как и эластичная сеть, обладает группирующим эффектом, который заставит его выбирать сильно коррелированные переменные в группах, как только они войдут в вашу модель. Это имеет смысл - например, если бы в вашей модели было две почти коллинеарные переменные, это делило бы эффект одинаково на обе.Если вы анализируете данные о пропорциях, вам лучше использовать модель логистической регрессии, кстати -
l0ara
пакет позволяет вам делать это в сочетании со штрафом L0; дляL0Learn
пакета это будет поддерживаться в ближайшее время.источник