Box Cox Трансформації для регресії


9

Я намагаюся встановити лінійну модель на деякі дані лише з одним предиктором (скажімо, (x, y)). Дані є такими, що для малих значень x значення y дають чітке прилягання до прямої лінії, однак у міру збільшення значень x значення y стають більш мінливими. Ось приклад таких даних (код R)

y = c(3.2,3.4,3.5,3.8,4.2,5.5,4.5,6.8,7.4,5.9)
x = seq(1,10,1)

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

fit = lm(y ~ x)

Як я розумію, мета таких перетворень, як Box Cox, полягає не в тому, щоб краще підходити, а відповідати припущенням моделі. Це може отримати кращу форму, гіршу форму або не сильно змінити, але це буде придатність, яка не порушує припущення.
— Пітер Флом

нелінійне перетворення зробить лінійне відношення нелінійним (хоча іноді ви можете перетворити х так само і виправити це). Однак трансформація також може випрямити вигнуту і в той же час знизити гетероскідкастичність (хоча не завжди можливо зробити обидва з однаковою трансформацією). Для цих даних дещо допомагає перетворення журналу.
— Glen_b -Встановіть Моніку

4
Використовуючи два крайніх та середніх (п'ятих) значень , метод, показаний на stats.stackexchange.com/questions/35711/…, вказує, що логарифм (перетворення Box-Кокса з параметром 0) був би доречним для лінеаризації відносин. Використання першого, шостого та останнього значень вказує, що зворотне (параметр -1) було б добре. Це говорить про те, що майже будь-який параметр між 0 і -1 може працювати. Діапазон не дивно, враховуючи, наскільки мало даних. Жодне монотонне повторне вираження не стабілізує варіацію цих даних. у
— whuber

Відповіді:


6

У пакеті MASS, який вже постачається з вашим R, є boxcox()функція, яку ви можете використовувати: Після читання даних виконайте:

library(MASS)
boxcox(y ~ x)

Потім подивіться на отриманий графік, який графічно показує 95% довірчий інтервал для параметра трансформації boxcox. Але у вас дійсно не вистачає даних (n = 10) для цього, отриманий довірчий інтервал становить майже від -2 до 2 !, з максимальною оцінкою ймовірності приблизно 0 (log-перетворення, як було сказано раніше). Якщо у ваших реальних даних є більше спостережень, вам слід спробувати це.

Як говорили інші, ця трансформація справді намагається стабілізувати дисперсії. Це зовсім не очевидно з теорії: те, що це робить, полягає у намаганні максимізувати функцію ймовірності, засновану на нормальному розподілі, яка передбачає постійну дисперсію. Можна подумати, що максимізація ймовірності на основі нормальних норм намагатиметься нормалізувати розподіл залишків, але на практиці основний внесок у максимізацію ймовірності походить від стабілізації дисперсій. Це, можливо, не так дивно, враховуючи, що ймовірність, яку ми максимізуємо, ґрунтується на постійній дисперсії сімейства нормального розподілу!

Я колись написав демонстрацію на основі слайдера в XLispStat, яка це наочно продемонструвала!


3

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

Процедуру AVAS можна використовувати, щоб запропонувати можливі перетворення.


Погляньте на дані: у тенденції монотонно для Росії х з 1 до 5, то систематично коливається багато х між 5 і 10. Це означає, що не існує безперервного монотонного повторного вираженняувдасться стабілізувати дисперсії. Ваша пропозиція про зважені найменші квадрати виглядає перспективною з огляду на це обмеження, але як слід обирати ваги?
— whuber

Погодьтеся з @whuber
— брокколі

1
Я погоджуюся з @whuber для цього конкретного набору даних, я просто припустив, що ці дані були швидко створені для ілюстрації (і тому показують відсутність випадковості / реальності у людини). Моя відповідь - це більше загальна порада для загального випадку неоднакових розбіжностей.
— Грег Сноу

З огляду на те, що дисперсія збільшується з x, чи glmрозрізає би її рамка з функцією Пуассона зв'язку?
— Роман Луштрик

3
@ RomanLuštrik, пуассонова регресія - це щось, що слід враховувати, але вибір слід робити на основі науки, а не даних. Наведені вище дані мають нецілі числа дляу, тож для пуассонової регресії потрібно мати певний тип ваги або спостереження для нецілих чисел. Це слід враховувати лише в тому випадку, якщо змінна відповіді представляє підрахунки і наука, що стоїть на даних, узгоджується з розподілом Пуассона.
— Грег Сніг

1

Ну, в R ви можете спробувати це:

library(MASS)
boxcox(y~x)
plot(1/y^2~x) # since the profile likelihood has a maximum near 2

введіть тут опис зображення

Але це дійсно залежить від того, що ви маєте на увазі під «кращим пристосуванням до даних»


-2

добре, якщо всі ваші дані для x є негативними, то ви можете використовувати перетворення коксу коксу ... для оцінки ідеального значення параметра лямбда параметра перетворення ви можете використовувати матлаб ... http://www.mathworks.in/ help / finance / boxcox.html


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