Перетворення змінних для множинної регресії в R


26

Я намагаюся виконати кратну регресію в R. Однак моя залежна змінна має такий сюжет:

DV

Ось матриця розсіювання з усіма моїми змінними ( WARє залежною змінною):

СПЛОМ

Я знаю, що мені потрібно виконати перетворення на цій змінній (а можливо, і незалежних змінних?), Але я не впевнений у необхідній точній трансформації. Чи може хтось вказати мені в правильному напрямку? Я радий надати будь-яку додаткову інформацію про зв’язок між незалежними та залежними змінними.

Діагностична графіка з моєї регресії виглядає наступним чином:

Діагностичні сюжети

EDIT

Після трансформації залежних і незалежних змінних за допомогою перетворень Йо-Джонсона діагностичні схеми виглядають так:

Після перетворення

Якщо я використовую GLM з логін-ланкою, діагностична графіка:

GLM з log-посиланням


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
Загальним підходом до трансформації є трансформації Box-Cox . Що ви можете зробити, це наступне: 1. Встановіть свою регресійну модель за lmдопомогою неперетворених змінних. 2. Використовуйте функцію boxcox(my.lm.model)з MASSпакета для оцінки . Команда також створює графіку, яку ви можете завантажити для нашої зручності. λ
COOLSerdash

Відповіді:


30

Книга Джона Фокса « Супутник R прикладній регресії» є чудовим ресурсом для моделювання прикладної регресії R. Пакет, carякий я використовую протягом цієї відповіді, - це супровідний пакет. У книзі також є веб-сайт із додатковими розділами.


Трансформація відповіді (він же залежить від змінної, результат)

Перетворення Box-Cox пропонують можливий спосіб вибору трансформації відповіді. Після встановлення вашої моделі регресії, що містить неперетворені змінні, з Rфункцією lm, ви можете використовувати функцію boxCoxз carпакету для оцінки (тобто параметра потужності) за максимальною вірогідністю. Оскільки ваша залежна змінна не є строго позитивним, Box-Cox перетворення не буде працювати , і ви повинні вказати опцію , щоб використовувати перетворення Yeo-Джонсона (див оригінальну статтю тут і цю відповідну посаду ):λfamily="yjPower"

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

Це створює сюжет на зразок наступного:

Ламбдаплот Box-Cox

Найкраща оцінка - це значення, яке максимально збільшує профіль, який у цьому прикладі становить приблизно 0,2. Зазвичай оцінка округляється до знайомого значення, яке все ще перебуває в межах 95% інтервалу впевненості, таких як -1, -1/2, 0, 1/3, 1/2, 1 або 2.λλλ

Щоб трансформувати залежну змінну зараз, використовуйте функцію yjPowerз carпакета:

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

У функції lambdaмає бути округлена яку ви знайшли перед використанням . Потім знову підходимо до регресії з перетвореною залежною змінною.λboxCox

Важливо: Замість того, щоб просто перетворити журнал на перетворення залежної змінної, вам слід розглянути можливість підключення GLM до log-посилання. Ось декілька посилань, які надають додаткову інформацію: перша , друга , третя . Для цього 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дохіднеш=1/дохідолг

Ще один дуже цікавий пост на сайті про трансформацію незалежних змінних - це цей .


Недоліки перетворень

1/уλλ


Моделювання нелінійних зв’язків

Два досить гнучких способу пристосування нелінійних співвідношень - це дробові многочлени та сплайни . Ці три статті пропонують дуже хороший вступ до обох методів: першого , другого та третього . Існує також ціла книга про дробові многочлени та R. У R пакетіmfp реалізовано багатовимірні дробові многочлени. Ця презентація може бути інформативною щодо дробових многочленів. Для встановлення сплайнів ви можете використовувати функцію gam(узагальнені моделі добавок, див. Тут для відмінного ознайомлення з R) із пакетуmgcv або функційns(природні кубічні сплайни) та bs(кубічні B-сплайни) з упаковки splines(див. тут приклад використання цих функцій). Використовуючи gamви можете вказати, які предиктори, які ви хочете встановити за допомогою сплайнів за допомогою s()функції:

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

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

Погляньте на цю публікацію з сайту.


1
Гарне пояснення. Я не знаю, що явний Box-Cox - це справді найпоширеніший метод вибору трансформації. Якщо рахувати людей, які просто обирають журнали, я вважаю, що це метод меншості. Ця прискіплива точка, природно, не впливає ні на що інше.
Нік Кокс

@NickCox Спасибі (+1 за вашу відповідь, btw). Заява про те, що Box-Cox - найпоширеніший метод, походить з книги Джона Фокса. Я сприйняв це за номінал, оскільки не маю достатнього досвіду, щоб оцінити твердження. Я видалю заяву.
COOLSerdash

Дуже дякую за детальне пояснення. Я зараз спробую застосувати його до своїх даних.
zgall1

@COOLSerdash Використовуючи детальну інструкцію, я застосував перетворення Box Cox до моїх залежних, а потім незалежних змінних і отримав наступний графік моїх діагностичних змінних - i.imgur.com/eO01djl.jpg Ясно, що вдосконалення є, але все ще здається, що бути питаннями з постійною мінливістю та неупередженістю, і, безумовно, існує проблема з нормальністю. Куди я можу поїхати звідси?
zgall1

1
@ zgall1 Дякую за Ваш відгук, я ціную його. Гм, так, трансформації, здається, не дуже допомогли :). На цьому етапі я б, ймовірно, намагався використовувати сплайни для прогнозів, використовуючи узагальнені моделі добавок (GAM) з mgcvпакетом і gam. Якщо це не допомагає, я боюся, що я закінчую свою кмітливість. Тут є люди, які набагато досвідченіші за мене, і, можливо, вони можуть дати вам подальшу пораду. Я також не обізнаний з бейсболом. Можливо, є більш логічна модель, яка має сенс з цими даними.
COOLSerdash

8

Ви повинні розповісти більше про характер вашої змінної реакції (результат, залежність). З вашого першого сюжету він сильно позитивно перекошений з багатьма значеннями, близькими до нуля та деякими негативними. З цього можливо, але не неминуче, що перетворення допомогло б вам, але найважливіше питання полягає в тому, чи перетворення зробить ваші дані ближчими до лінійних відносин.

Зауважимо, що негативні значення для відповіді виключають пряме логарифмічне перетворення, але не log (відповідь + константа), а не узагальнену лінійну модель з логарифмічним зв’язком.

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

GLM з посиланням на журнал все ще можливий.

Крім того, можливо, що ваша модель відображає якийсь змішаний процес, і в цьому випадку корисною моделлю, яка б більш детально відображала процес генерації даних, була б хорошою ідеєю.

(Пізніше)

ОП має залежну змінну WAR зі значеннями приблизно від 100 до -2. Щоб подолати проблеми з прийняттям логарифмів нульових або від’ємних значень, ОП пропонує підрахунок нулів і негативів до 0,000001. Зараз у логарифмічній шкалі (основа 10) ці значення варіюються від приблизно 2 (100 або більше) до -6 (0,000001). Населення меншості в логарифмічному масштабі зараз є меншиною масових людей. Сюжет log_10 (роздута ВІЙНА) проти всього іншого, щоб побачити це.


Як ви могли б зрозуміти з розміщеної вище розсилки, я використовую набір даних статистики бейсболу. Незалежна змінна WAR - це, по суті, сукупний показник вартості, яку сприяє гравець за свою кар'єру на рівні вищої ліги. Незалежні змінні, AdjSLG, SOPct і BBPct - це статистика другорядних ліг, яка, як правило, передбачають успіх на рівні вищої ліги. Змінна вік - це вік, у якому гравець виробляв статистику другорядних ліг. Фіксовані змінні використовуються для позначення рівня другорядних ліг, на яких проводилася статистика.
zgall1

Що стосується випуску негативної незалежної змінної (WAR), то з причин, що є трохи складними, доцільно перекодувати такі як нулі, якщо це полегшує процес перетворення. У рамках цього набору даних це виправдана процедура. Якщо ви хочете, щоб я детальніше розглядав (попередження - потрібен бейсбольний жаргон), я радий це зробити.
zgall1

1
Здається, що WAR - ваша залежна змінна. Ви надаєте докази мого твердження, оспорюваного в інших місцях на цьому сайті, що два терміни часто плутають. Моя порада - не перекодувати негативні значення до нулів (неправильно обробляти дані), а використовувати GLM з посиланням на журнал. Будь ласка, припустіть нульовий інтерес до чи знань бейсбольних деталей з мого боку.
Нік Кокс

Ви вірні, що ВІЙНА - моя залежна змінна. Я загляну в GLM з посиланням на журнал. Дякую за пораду.
zgall1

1
Можливо, буде корисно дізнатися, як розраховується війна кар’єри тоді (він же розуміє процес генерації даних).
Affine
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.