Box-Cox як перетворення для незалежних змінних?


53

Чи існує трансформація типу Box-Cox для незалежних змінних? Тобто перетворення, яке оптимізує змінну так, що волевиявлення зробить більш розумним пристосування для лінійної моделі?xy~f(x)

Якщо так, чи є функція для цього R?


1
Я не знаю жодних засобів для цього, Rі, подумавши про це на мить, я не впевнений, як саме це зробити. Які критерії ви б оптимізували для забезпечення "найбільш лінійної" трансформації? є заманливим, але, як видно з моєї відповіді тут , поодинці не може бути використаний для того, щоб побачити, чи задоволено припущення про лінійність моделі. Чи мали на увазі якісь критерії? R2R2
Макрос

1
Я під враженням, що вже бачив газету, яка говорила про це. Можливо, гуглінг із "коваріатом" замість "незалежної змінної" є більш розумним.
Стефан Лоран

Я думаю (із пам’яті…) є деяка реалізація цього в автомобільному пакеті (R). Але ви також досліджуєте ігри, як у пакеті gmcv.
kjetil b halvorsen

Нитка, яка обговорює автоматичне виведення параметрів Box-Cox ( одночасно перетворюючи всі незалежні змінні разом із залежною змінною), з'явилася на сайті stats.stackexchange.com/questions/60431/… .
whuber

Відповіді:


73

Джон Тукі виступав за свій " триточний метод " для пошуку повторних виразів змінних для лінеаризації відносин.

Я проілюструю вправою з його книги « Розвідувальний аналіз даних» . Це дані тиску пари ртуті в експерименті, в якому змінювали температуру і вимірювали тиск пари.

pressure <- c(0.0004, 0.0013, 0.006, 0.03, 0.09, 0.28, 0.8, 1.85, 4.4, 
              9.2, 18.3, 33.7, 59, 98, 156, 246, 371, 548, 790) # mm Hg
temperature <- seq(0, 360, 20) # Degrees C

Відношення сильно нелінійне: див. Ліву панель на ілюстрації.

Сюжети

Оскільки це дослідницька вправа, ми очікуємо, що вона буде інтерактивною. Аналітику пропонують почати з визначення трьох «типових» точок у сюжеті : по одній біля кожного кінця і по одній посередині. Я зробив це тут і позначив їх червоним кольором. (Коли я давно вперше робив цю вправу, я використав різний набір балів, але досяг результатів.)

У трехточковому методі можна шукати - грубою силою чи іншим чином - перетворення Box-Cox, яке при застосуванні до однієї з координат - y або x - (a) розмістить типові точки приблизно на рядок і (b) використовує "приємну" потужність, зазвичай вибирається з "драбини" повноважень, яка може бути інтерпретована аналітиком.

З причин, які стануть очевидними пізніше, я розширив сімейство Box-Cox, дозволивши "змістити" так, щоб перетворення були у формі

x(x+α)λ1λ.

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

box.cox <- function(x, parms=c(1,0)) {
  lambda <- parms[1]
  offset <- parms[2]
  if (lambda==0) log(x+offset) else ((x+offset)^lambda - 1)/lambda
}
threepoint <- function(x, y, ladder=c(1, 1/2, 1/3, 0, -1/2, -1)) {
  # x and y are length-three samples from a dataset.
  dx <- diff(x)
  f <- function(parms) (diff(diff(box.cox(y, parms)) / dx))^2
  fit <- nlm(f, c(1,0))
  parms <- fit$estimate #$
  lambda <- ladder[which.min(abs(parms[1] - ladder))]
  if (lambda==0) offset = 0 else {
    do <- diff(range(y))
    offset <- optimize(function(x) f(c(lambda, x)), 
                       c(max(-min(x), parms[2]-do), parms[2]+do))$minimum    
  }
  c(lambda, offset)
}

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

data <- cbind(temperature, pressure)
n <- dim(data)[1]
i3 <- c(2, floor((n+1)/2), n-1)
parms <- threepoint(temperature[i3], pressure[i3])
y <- box.cox(pressure, parms)

У цьому випадку parmsвиявляється рівним : метод вибирає log-перетворення тиску.(0,0)

Ми дійшли точки, аналогічної контексту питання: з будь-якої причини (зазвичай для стабілізації залишкової дисперсії) ми повторно виразили залежну змінну, але виявимо, що зв’язок із незалежною змінною є нелінійним. Тож тепер ми переходимо до повторного вираження незалежної змінної у прагненні лінеаризувати відношення. Це робиться так само, просто повертаючи ролі x і y:

parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)

Значення parmsдля незалежної змінної (температури) є : іншими словами, ми повинні виразити температуру у градусах Цельсія вище ° С і використати її зворотну ( потужність ). (З технічних причин, перетворення Боксу-Кокса далі додає до результату.) Отримане співвідношення показано в правій панелі.- 254(1,253.75)254111


На сьогоднішній день будь-хто з найменшим науковим досвідом визнав, що дані "говорять" нам використовувати абсолютні температури - де зміщення становить замість тому що вони матимуть фізичний зміст. (Коли останній графік повторно намальований за допомогою зміщення замість , мало помітних змін. Фізик тоді позначить вісь x : тобто зворотна абсолютна температура.)254 273 254 1 / ( 1 - x )2732542732541/(1x)

Це хороший приклад того, як статистичне дослідження має взаємодіяти з розумінням предмета дослідження . Насправді, взаємні абсолютні температури весь час відображаються у фізичних законах. Отже, використовуючи поодинці прості методи EDA для дослідження цього старого, простого, набору даних, ми знову виявили відношення Клавзіус-Клапейрон : логарифм тиску пари є лінійною функцією зворотної абсолютної температури. Мало того, ми маємо не дуже погану оцінку абсолютного нуля (0254градусів С), зі схилу правої ділянки ми можемо обчислити питому ентальпію випаровування, і - як виявилося - ретельний аналіз залишків ідентифікує вибух (значення при температурі градусів С), показує нам, як ентальфія випаровування змінюється (дуже незначно) від температури (тим самим порушуючи Закон про ідеальний газ), і в кінцевому підсумку може дати нам точну інформацію про ефективний радіус молекул ртутного газу! Все це з 19 точок даних та деяких базових навичок EDA.0


2
Привіт, дорогий Вюбер. Яка цікава відповідь, я читаю із задоволенням, дякую! (і я також трохи пограю з ним, щоб побачити, як це може відповідати проблемі, з якою я працюю)
Тал Галілі

3
@Andre Щоб використовувати останню частину цього коду, вам потрібно зв'язати змінні x та y в матрицю по , як у . (Це було зроблено для того, щоб відповідати тому, як зазвичай зберігаються дані (x, y) , або як матриця, або кадр даних. що працює. 2n2data <- cbind(temperature, pressure)R
whuber

2
@landroni Інтегральні та малі дрібні сили часто виникають у фізичних, хімічних та біологічних теоріях, а також через геометричні міркування. (Наприклад, коли змінна є об'ємом, її кубічний корінь - це довжина - яку можна інтерпретувати - тоді як, скажімо, її сьомий корінь не має простої геометричної інтерпретації.) Інші повноваження рідко мають таку інтерпретацію.
whuber

3
@Frank Правильно; це явно і безперечно дослідницька техніка. Зауважте, що він навіть не претендує на прогнозованість. Дослідження може лише запропонувати способи продовження. Однак можна уявити, щоб виділити чотири df бюджету для моделювання для оцінки цих перетворень, - і оцінка може бути автоматично включена в алгоритм підгонки, використовуючи підхід Тукі або іншим способом (ML - очевидна можливість).
whuber

5
Вони не враховують (дуже значну кількість) невизначеності у -трансформі, якщо тільки центрування та оцінка є явними частинами інформаційної матриці. Y λYYλ
Френк Харрелл

11

Погляньте на ці слайди на тему "Регресійна діагностика" Джона Фокса (доступна тут , у комплекті із посиланнями), де коротко обговорюється питання трансформації нелінійності. Він охоплює "правило випинання" Тукі для вибору силових перетворень (на що йдеться у прийнятій відповіді), але також згадує сімейства трансформацій сімейства Box-Cox та Yeo-Johnson. Див. Розділ 3.6 слайдів. Для більш офіційного сприйняття того ж автора див. Дж. Фокс, Прикладний регресійний аналіз та Узагальнені лінійні моделі, Друге видання (Sage, 2008) .

Що стосується фактичних пакетів R, які допомагають у цьому, то абсолютно подивіться на автомобільний пакет, автором якого є Дж. Фокс та С. Вайсберг. Цей пакет супроводжує Дж. Фокса та С. Вайсберга, «Другої супутниці до прикладної регресії», друге видання, (Sage, 2011) , іншого обов'язкового читання. Використовуючи цей пакет, ви можете почати з basicPower()(прості перетворення потужності), bcPower()(перетворення Box-Cox) та yjPower()(перетворення Йе-Джонсона). Є також powerTransform () :

Функція powerTransform використовується для оцінки нормалізуючих перетворень одновимірної або багатоваріантної випадкової величини.

Перегляньте обидві книги для отримання більш детальної інформації про теорію цих перетворень та обчислювальний підхід.


9

Існує багато переваг, щоб зробити оцінку перетворень коваріату формальною частиною процесу оцінки. Це визнає кількість задіяних параметрів і забезпечить хороше охоплення інтервалу довіри та збереження помилок типу I. Регресійні сплайни - одні з найкращих підходів. І сплайни будуть працювати з нульовими та від’ємними значеннями на відміну від логарифмічних підходів.X

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.