Преобразование переменных для множественной регрессии в R

26

Я пытаюсь выполнить множественную регрессию в R. Однако моя зависимая переменная имеет следующий график:

DV

Вот матрица диаграммы рассеяния со всеми моими переменными ( WARэто зависимая переменная):

SPLOM

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

Диагностические графики из моей регрессии выглядят следующим образом:

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

РЕДАКТИРОВАТЬ

После преобразования зависимых и независимых переменных с использованием преобразований Йео-Джонсона диагностические графики выглядят следующим образом:

После трансформации

Если я использую GLM с лог-ссылкой, диагностические графики:

GLM с лог-ссылкой

zgall1
источник
3
Привет @ zglaa1 и добро пожаловать. Почему вы думаете, что вы должны преобразовать переменные? Первым шагом будет согласование регрессии с исходными вариабельными значениями, а затем проверка соответствия (остатки и т. Д.). Остатки должны приблизительно нормально распределяться, а не переменные. Может быть, вы найдете этот пост интересным.
COOLSerdash
Спасибо за ссылку и предложение. Я запустил регрессию и знаю, что переменные необходимо преобразовать на основе следующего графика: i.imgur.com/rbmu14M.jpg Я вижу непредвзятость и отсутствие постоянной изменчивости в остатках. Кроме того, они не являются нормальными.
zgall1
@COOLSerdash Я посмотрел на ссылку. У меня есть базовые знания в области статистики, поэтому я понимаю обсуждение. Однако моя проблема в том, что у меня ограниченный опыт практического применения тех методов, которые я изучил, поэтому я изо всех сил пытаюсь понять, что именно мне нужно делать с моими данными (в Excel или R), чтобы фактически выполнить необходимые преобразования.
zgall1
Спасибо за графику. Вы абсолютно правы, говоря, что это соответствие неоптимально. Не могли бы вы изготовить матрицу рассеяния с регрессией DV и IV? Это можно сделать Rс помощью команды, pairs(my.data, lower.panel = panel.smooth)где my.dataбудет ваш набор данных.
COOLSerdash
2
lmboxcox(my.lm.model)MASSλ

Ответы:

30

Книга Джона Фокса Компаньон R в прикладной регрессии является отличным источником информации о прикладном регрессионном моделировании R. Пакет, carкоторый я использую в этом ответе, является прилагаемым пакетом. Книга также имеет как веб-сайт с дополнительными главами.


Преобразование ответа (он же зависимая переменная, результат)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Это создает сюжет, подобный следующему:

Box-Cox lambdaplot

Лучшая оценка λλ

Чтобы преобразовать вашу зависимую переменную сейчас, используйте функцию yjPowerиз carпакета:

depvar.transformed <- yjPower(my.dependent.variable, lambda)

В функции lambdaдолжно быть округленоλboxCox

Важное замечание: Вместо того, чтобы просто лог-преобразовать зависимую переменную, вы должны рассмотреть возможность установки GLM с лог-ссылкой. Вот некоторые ссылки, которые предоставляют дополнительную информацию: первый , второй , третий . Для этого Rиспользуйте glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

где yваша зависимая переменная и x1, и x2т.д. ваши независимые переменные.


Преобразования предикторов

Преобразования строго положительных предикторов могут быть оценены по максимальной вероятности после преобразования зависимой переменной. Для этого используйте функцию boxTidwellиз carпакета (оригинал см. Здесь ). Используйте его так: boxTidwell(y~x1+x2, other.x=~x3+x4). Здесь важно то, что эта опция other.xуказывает условия регрессии, которые не должны быть преобразованы. Это были бы все ваши категориальные переменные. Функция производит вывод следующего вида:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomeдоходNевесзнак равно1/доходоLd

Еще один очень интересный пост на сайте о преобразовании независимых переменных это одна .


Недостатки преобразований

Хотя логически преобразованные зависимые и / или независимые переменные можно интерпретировать относительно легко , интерпретация других, более сложных преобразований менее интуитивна (по крайней мере, для меня). Как бы вы, например, интерпретировали коэффициенты регрессии после того, как зависимые переменные были преобразованы1/Yλλ


Моделирование нелинейных отношений

Два довольно гибких метода для подбора нелинейных отношений - это дробные полиномы и сплайны . Эти три статьи предлагают очень хорошее введение в оба метода: первый , второй и третий . Существует также целая книга о дробных полиномах и R. В R пакетеmfp реализует MultiVariable дробных многочленов. (естественные кубические сплайны) и (кубические B-сплайны) из пакета (см.Эта презентация может быть информативной в отношении дробных полиномов. Для подгонки сплайнов вы можете использовать функцию gam(обобщенные аддитивные модели, см. Здесь отличное введение R) из пакетаmgcv или функцийnsbssplines здесь пример использования этих функций). Используя, gamвы можете указать, какие предикторы вы хотите использовать, используя сплайны, используя s()функцию:

my.gam <- gam(y~s(x1) + x2, family=gaussian())

здесь, x1будет соответствовать сплайну и x2линейно, как в обычной линейной регрессии. Внутри gamвы можете указать семейство рассылки и функцию связи, как в glm. Таким образом , чтобы соответствовать модели с функцией логарифмической связи, вы можете указать опцию family=gaussian(link="log")в gamкачестве в glm.

Посмотрите на этот пост с сайта.

COOLSerdash
источник
1
Хорошее объяснение. Я не знаю, что явный Box-Cox - действительно самый распространенный метод выбора преобразования. Если вы считаете, что люди просто выбирают журналы, я догадываюсь, что это метод меньшинства. Эта придирчивая точка, естественно, ни на что не влияет.
Ник Кокс
@NickCox Спасибо (+1 за ваш ответ, кстати). Утверждение, что Бокс-Кокс является наиболее распространенным методом, взято из книги Джона Фокса. Я принял это за чистую монету, так как у меня недостаточно опыта, чтобы судить о высказывании. Я удалю заявление.
COOLSerdash
Большое спасибо за подробное объяснение. Я постараюсь применить его к своим данным сейчас.
zgall1
@COOLSerdash Используя ваше подробное пошаговое руководство, я применил преобразование Box Cox к моим зависимым, а затем независимым переменным и получил следующий график моих диагностических переменных - i.imgur.com/eO01djl.jpg Ясно, что есть улучшение, но все еще кажется, что быть проблемы с постоянной изменчивостью и непредвзятостью, и, безусловно, есть проблема с нормой. Куда я могу пойти отсюда?
zgall1
1
@ zgall1 Спасибо за ваш отзыв, я ценю это. Хм, да, похоже, преобразования не сильно помогли :). На этом этапе я, вероятно, попытался бы использовать сплайны для предикторов, используя обобщенные аддитивные модели (GAM) с mgcvпакетом и gam. Если это не поможет, я в своем уме, боюсь. Здесь есть люди, которые гораздо опытнее меня, и, возможно, они могут дать вам дальнейший совет. Я также не разбираюсь в бейсболе. Может быть, есть более логичная модель, которая имеет смысл с этими данными.
COOLSerdash
8

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

Обратите внимание, что отрицательные значения для отклика исключают прямое логарифмическое преобразование, но не логарифм (отклик + константа) и не обобщенную линейную модель с логарифмической связью.

На этом сайте есть много ответов, посвященных обсуждению журнала (отклик + константа), который разделяет статистиков: некоторым людям не нравится, что он является специальным, и с ним трудно работать, в то время как другие считают его законным устройством.

GLM со ссылкой на журнал все еще возможен.

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

(ПОЗЖЕ)

OP имеет зависимую переменную WAR со значениями в диапазоне примерно от 100 до -2. Чтобы преодолеть проблемы с получением логарифмов нулевых или отрицательных значений, OP предлагает помадку нулей и отрицательных значений до 0,000001. Теперь в логарифмическом масштабе (основание 10) эти значения варьируются от 2 (100 или около того) до -6 (0,000001). Меньшая часть вымышленных точек в логарифмическом масштабе - теперь меньшинство массивных выбросов. Сюжет log_10 (выдуманная WAR) против всего остального, чтобы увидеть это.

Ник Кокс
источник
Как вы могли бы сказать по графику рассеяния, приведенному выше, я использую набор данных бейсбольной статистики. Независимая переменная WAR - это, по сути, совокупный показатель ценности, которую вкладывает игрок в течение своей карьеры на уровне высшей лиги. Независимые переменные, AdjSLG, SOPct и BBPct, представляют собой статистику низшей лиги, которая, как считается, предсказывает успех на уровне высшей лиги. Переменная Age - это возраст, в котором игрок создал статистику Малой лиги. Фиктивные переменные используются для обозначения уровня младшей лиги, на котором производилась статистика.
zgall1
Что касается проблемы с отрицательной независимой переменной (WAR), то по несколько сложным причинам целесообразно перекодировать их в нули, если это облегчает процесс преобразования. В рамках этого набора данных это оправданная процедура. Если вы хотите, чтобы я более подробно (предупреждение - требуется бейсбольный жаргон), я с удовольствием это сделаю.
zgall1
1
Кажется, что WAR - ваша зависимая переменная. Вы предоставляете доказательства моего утверждения, оспариваемого в другом месте на этом сайте, о том, что эти два термина часто путают. Мой совет - не перекодировать отрицательные значения в нули (плохо обрабатывает данные), а использовать GLM со ссылкой на журнал. Пожалуйста, примите во внимание нулевой интерес или знание бейсбольных подробностей на моей стороне.
Ник Кокс
Вы правы, что WAR - моя зависимая переменная. Я посмотрю в GLM со ссылкой на журнал. Спасибо за совет.
zgall1
1
Может быть полезно знать, как рассчитывается WAR карьеры (иначе понимать процесс генерации данных).
Affine