Когда следует преобразовывать переменные предиктора при выполнении множественной регрессии?

10

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

Когда сталкиваются с переменной отклика и несколькими переменными предиктора, какие условия стремятся встретиться с каждой переменной предиктора? Я понимаю, что в конечном итоге мы ищем постоянство дисперсии ошибок и нормально распределенных ошибок (по крайней мере, в тех методах, которым меня учили до сих пор). У меня было много заданий вернуться, где решение было, например y ~ x1 + (1/x2) + log(x3), где один или несколько предикторов был преобразован.

Я понял причину простой линейной регрессии, поскольку было легко взглянуть на y ~ x1 и связанную диагностику (qq графики остатков, остатков по сравнению с y, остатков по сравнению с x и т. Д.) И проверить, есть ли y ~ log ( х1) лучше соответствуют нашим предположениям.

Есть ли хорошее место, чтобы начать понимать, когда преобразовывать предиктор в присутствии многих предикторов?

Заранее спасибо. Matt

Matt
источник

Ответы:

3

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

Графики плотности ядра лучше, чем гистограммы, для начального обзора одномерного распределения каждой переменной. С несколькими переменными матрица рассеяния может быть полезной. Lowess также всегда рекомендуется в начале. Это даст вам быстрый и грязный взгляд на то, являются ли отношения приблизительно линейными. Автомобильный пакет Джона Фокса полезно сочетает в себе:

library(car)
scatterplot.matrix(data)

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

windows()
plot(density(X[,3]))
rug(x[,3])
windows()
plot(x[,3], y)
lines(lowess(y~X[,3]))

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

windows()
qq.plot(model$residuals)
windows()
scatterplot.matrix(cbind(model$residuals,X))

Если что-то выглядит подозрительно, постройте его индивидуально и добавьте abline(h=0)в качестве наглядного пособия. Если у вас есть взаимодействие, вы можете создать переменную X [, 1] * X [, 2] и проверить невязки против этого. Точно так же вы можете составить диаграмму рассеяния невязок по сравнению с X [, 3] ^ 2 и т. Д. Другие типы графиков, кроме невязок по сравнению с x, которые вам нравятся, могут быть выполнены аналогичным образом. Имейте в виду, что все они игнорируют другие x измерения, которые не отображаются. Если ваши данные сгруппированы (т.е. из эксперимента), вы можете создавать частичные графики вместо / в дополнение к маргинальным графикам.

Надеюсь, это поможет.

Gung - Восстановить Монику
источник
2
Я бы рекомендовал более прямой подход: использовать сплайны регрессии для моделирования эффектов предикторов, чтобы (1) не предполагать линейность и (2) оценивать все преобразования одновременно. Это похоже на квадратичную регрессию - добавление квадратного термина для всех предикторов. Например, с ограниченными кубическими сплайнами можно добавить одну или несколько нелинейных базисных функций в модель для каждого предиктора, который, как известно, не работает линейно.
Фрэнк Харрелл
@Frank Мне часто нравятся ограниченные кубические сплайны. Единственный минус - интерпретация, которая немного хитра и часто отвлекает моих клиентов. Добавление полиномиального термина (после центрирования) кажется более понятным
Питер Флом
Спасибо всем за вклад, я очень ценю это. Я думаю, что в настоящее время вы слишком мне доверяете. Мой вопрос на самом деле сосредоточен на том, что искать в отдельных предикторах, чтобы знать, когда / если трансформация применима. Например, если у меня есть строго аддитивная модель с 3 предикторами, как бы я определил подходящее преобразование? В случае множественных предикторов мы вообще стремимся к тем же принципам, которые ищем в простой линейной регрессии? (т.е. благоприятные остатки по сравнению с прогнозируемым графиком и qqplot остатков).
Мэтт
1
Сплайн-регрессионные сплайны не намного сложнее, чем квадратичные. Кто знает, как интерпретировать коэффициент возраста, когда возраст ^ 2 в модели в любом случае? И я не вижу, где помогает центрирование. Я интерпретирую совпадения сплайнов с графиками, которые нравятся моим сотрудникам. Мэтт трансформация почти всегда нужна. Это просто вопрос адекватности размера выборки для оценки достаточного количества параметров, чтобы соответствовать нелинейным эффектам. Сплайны регрессии непосредственно оценивают преобразования и приводят к соответствующим доверительным интервалам, которые штрафуются за «просмотры данных». Остатки включают косвенный подход.
Фрэнк Харрелл
Извините, я все еще получаю удовольствие от публикации здесь. Пожалуйста прости. Чтобы пояснить мой последний комментарий: у недавнего примера, который я прошел в тексте, была результирующая модель y ~ x1 + log (x2), и единственное замечание о преобразовании: «было очевидно, что x2 хорошо подходит для логарифмического преобразования «. Я пытаюсь улучшить свое понимание того, когда преобразования применимы. Достаточно ли просто посмотреть на графики y ~ x_i и продолжить, как мы это сделали бы в случае с одним предиктором? Что еще я должен рассмотреть?
Мэтт