Коли трансформувати змінні предиктора під час множинної регресії?


10

В даний час я беру свій перший застосований клас лінійної регресії на рівні випускників, і я борюся з змінними перетвореннями предиктора в множинній лінійній регресії. Текст, який я використовую, Кутнер та ін "Прикладні лінійні статистичні моделі", схоже, не охоплює питання, яке у мене виникає. (окрім припущення, що існує метод Box-Cox для перетворення декількох предикторів).

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

Я зрозумів обгрунтування в простому лінійному регресії, оскільки було легко подивитися на y ~ x1 та пов'язану з цим діагностику (qq графіки залишків, залишків проти y, залишків проти x і т. Д.) І перевірити, чи y ~ log ( x1) краще відповідає нашим припущенням.

Чи є хороше місце, щоб почати розуміти, коли трансформувати предиктора в присутності багатьох предикторів?

Спасибі заздалегідь. Метт

Відповіді:


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 і т.д. Майте на увазі, що всі вони ігнорують інші х розміри, які не нанесені на графіку. Якщо ваші дані згруповані (тобто експеримент), ви можете зробити часткові графіки замість / на додаток до граничних.

Сподіваюся, що це допомагає.


2
Я б закликав більш прямий підхід: використовувати регресійні сплайни для моделювання ефектів предикторів, щоб (1) не брати на себе лінійність і (2) оцінювати всі перетворення одночасно. Це схоже на квадратичну регресію - додавання квадратного терміна для всіх прогнозів. Наприклад, з обмеженими кубічними сплайнами, наприклад, в модель додається одна чи більше нелінійних базових функцій для кожного предиктора, який, як відомо, не працює лінійно.
Френк Харрелл

@Frank Мені часто подобаються обмежені кубічні сплайни. Єдиний мінус - це інтерпретація, яка трохи хитра і часто відмовляє моїх клієнтів. Додавання поліноміального терміна (після центрування) здається більш інтерпретаційним
Пітер Флом

Дякую всім за вклад, я дуже вдячний. Я думаю, що ти зараз мені даєш занадто багато кредитів. Моє запитання насправді зосереджено на тому, на що слід звернути увагу в окремих прогнозах, щоб знати, коли / чи застосовується трансформація. Наприклад, якщо у мене є суворо придатна модель, що має три прогнози, як би я міг вирішити питання про відповідне перетворення? У випадку численних предикторів ми загалом прагнемо до тих самих принципів, які ми шукаємо в простому лінійному регресії? (тобто сприятливі залишки проти прогнозованої ділянки та qqplot залишків).
Мет

1
Пітерегресійні сплайни не набагато складніші за квадратику. Хто знає, як інтерпретувати коефіцієнт віку, коли вік ^ 2 у моделі все одно? І я не бачу, де допомагає центрування. Я інтерпретую суміш шпонки з графіками, що подобається моїм співробітникам. Метт трансформація майже завжди потрібна. Це лише питання адекватності розміру вибірки для оцінки достатньої кількості параметрів, щоб відповідати нелінійним ефектам. Регресійні сплайни безпосередньо оцінюють трансформації та призводять до відповідних інтервалів довіри, які штрафуються за "перегляд даних". Залишки передбачають непрямий підхід.
Френк Харрелл

Вибачте, тут все ще висить публікація. Пробачте, будь ласка. Щоб пояснити мій останній коментар: Недавній приклад, який я пройшов у тексті, мав результуючу модель y ~ x1 + log (x2), і єдине зауваження про перетворення - це було очевидно, що x2 добре підходить для логарифмічної трансформації . " Я намагаюся покращити своє відчуття, коли трансформації застосовуються. Чи достатньо просто подивитися на графіки y ~ x_i та продовжувати так, як ми б мали робити у випадку з одним провісником? Що ще слід врахувати?
Метт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.