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


281

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


11
Пов'язаний пост в блозі Ендрю Гельмана.

31
На додаток до вже наданих чудових відповідей, зазначу, що при використанні методів пеналізації, таких як регресія хребта або ласо, результат вже не є інваріантним для стандартизації. Однак часто рекомендується стандартизувати. У цьому випадку не з причин, безпосередньо пов’язаних з інтерпретацією, а тому, що пеналізація буде розглядати різні пояснювальні змінні на рівних умовах.
NRH

6
Ласкаво просимо на сайт @mathieu_r! Ви опублікували два дуже популярних питання. Будь ласка, подумайте про схвалення / прийняття деяких чудових відповідей, які ви отримали на обидва питання;)
Макрос


1
Коли я читав це запитання і відповіді, це нагадало мені про сайт usenet, на який я натрапив багато років тому faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html Це просте слово дає деякі питання та міркування коли хочеться нормалізувати / стандартизувати / змінити масштаб даних. Я не бачив його ніде в відповідях тут. Він розглядає предмет з більшої точки зору машинного навчання, але може допомогти комусь, хто заходить сюди.
Павло

Відповіді:


213

При регресії часто рекомендується центрувати змінні так, щоб прогноктори мали середнє значення . Це робить так, що термін перехоплення інтерпретується як очікуване значення коли значення предиктора встановлені на їх значення . В іншому випадку перехоплення інтерпретується як очікуване значення коли прогноктори встановлені на 0, що може не бути реалістичною чи інтерпретаційною ситуацією (наприклад, що робити, якщо прогноктори були висотою та вагою?). Іншою практичною причиною масштабування при регресії є те, коли одна змінна має дуже великий масштаб, наприклад, якщо ви використовували чисельність населення країни в якості прогнозувача. У цьому випадку коефіцієнти регресії можуть бути дуже0Y i Y i 10 - 6YiYiневеликий порядок (наприклад, ), який може трохи дратувати, коли ви читаєте вихід з комп'ютера, тому ви можете перетворити змінну в, наприклад, розмір сукупності в мільйонах. Конвенція, що ти стандартизуєш прогнози, існує насамперед, щоб одиниці коефіцієнтів регресії були однаковими.106

Як явно показує @gung на і @ MånsT (+1 до обох, btw), центрування / масштабування не впливає на ваші статистичні умовиводи в регресійних моделях - оцінки коригуються належним чином, а будуть однаковими.p

Інші ситуації, коли центрування та / або масштабування можуть бути корисними:

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

  • Для спрощення обчислень та позначень. Наприклад, матриця вибіркової коваріації матриці значень, відцентрованої за допомогою засобів вибірки, є просто . Аналогічно, якщо уніваріантна випадкова величина була середньосередньою, то і дисперсію можна оцінити з вибірки, переглянувши середнє значення вибірки квадратів спостережуваних значення.XXXvar(X)=E(X2)

  • Пов'язане з вищезгаданим, PCA можна інтерпретувати як розклад сингулярного значення матриці даних лише тоді, коли стовпці вперше були відцентровані за допомогою їх засобів.

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


2
+1, це хороші моменти, про які я не думав. Для наочності дозвольте перерахувати кілька конкретних прикладів, коли дослідник, можливо, захоче поєднати пояснювальні змінні перед тим, як запустити регресію, і, таким чином, потрібно стандартизувати. Один випадок може бути дослідженням поведінкових порушень у дітей; дослідники можуть отримати оцінки як від батьків, так і від вчителів, а потім хочуть об'єднати їх у єдину міру виправлення. Іншим випадком може бути дослідження рівня активності в будинку престарілих з саморейтингом мешканців та кількістю підписів на реєстраційних листках для проведення заходів.
gung

2
Але чи не слід теоретично використовувати середнє значення чи стандартне відхилення чисельності населення для центрування / масштабування? На практиці це так просто, як використовувати середнє значення вибірки / SD або є більше?
AlefSin

3
Для повноти дозвольте додати до цієї приємної відповіді, що централізованого та стандартизованого є кореляційною матрицею. XXXX
cbeleites

1
@AlefSin: можливо, ви хочете використовувати щось інше, ніж середнє значення / sd, дивіться мою відповідь. Але ваша думка, що ми повинні думати, що використовувати для центрування / масштабування, дуже добре.
cbeleites

@AlefSin, всі мої коментарі були зроблені при припущенні, що ви використовуєте зразковий середній / SD. Якщо за центром вибірки значить, інтерпретація перехоплення залишається однаковою, за винятком лише очікуваного значення коли передбачувачі встановлюють свої вибіркові засоби . Інформація в трьох моїх кульових точках все ще застосовується, коли ви орієнтуєте / масштабуєте за кількістю зразків. Варто також зазначити, що якщо ви відцентруєте середнє значення вибірки, результат є змінною із середнім значенням 0, але масштабування за стандартним відхиленням вибірки не робить, як правило, результатом із стандартним відхиленням 1 (наприклад, t-статистикою). Yi
Макрос

143

Ви натрапили на загальну віру. Однак, як правило, вам не потрібно централізувати або стандартизувати свої дані для багаторазової регресії. Різні пояснювальні змінні майже завжди є на різних масштабах (тобто вимірюються в різних одиницях). Це не проблема; бета оцінюється таким чином, що вони перетворюють одиниці кожної пояснювальної змінної в одиниці змінної відповіді відповідним чином. Одне, що люди іноді кажуть, це те, що якщо ви спочатку стандартизували свої змінні, ви можете інтерпретувати бета-версію як важливу міру. Наприклад, якщо , а β 2 = .3β1=.6β2=.3, тоді перша пояснювальна змінна вдвічі важливіша за другу. Хоча ця ідея приваблива, на жаль, вона не є дійсною. Існує кілька питань, але, мабуть, найпростіше слідувати - це те, що у вас немає способу контролювати можливі обмеження діапазону в змінних. Висловлення «важливості» різних пояснювальних змінних відносно один одного є дуже складним філософським питанням. Ніщо з цього не дозволяє припустити, що стандартизація є поганою чи неправильною , просто, як правило, це не потрібно .

Єдиний випадок, який я можу придумати вгорі голови, коли центрування корисне, - це перед тим, як створити владні умови. Припустимо , у вас є змінна, , який коливається в діапазоні від 1 до 2, але ви підозрюєте криволінійної відносини зі змінною відгуку, і тому ви хочете створити X 2 член. Якщо спочатку ви не будете центрировать X , ваш термін у квадраті буде сильно співвідноситься з X , що може затуманити оцінку бета-версії. Спочатку центрування вирішує цю проблему. XX2XX


(Оновлення додано набагато пізніше :) Аналогічним випадком, який я забув згадати, є створення термінів взаємодії . Якщо термін взаємодії / продукту створений з двох змінних, які не зосереджені на 0, буде викликано деяку кількість колінеарності (з точною кількістю залежно від різних факторів). Спершу центринг вирішує цю потенційну проблему. Для більш повного пояснення дивіться цю чудову відповідь від @Affine: Діагностика колінеарності проблематична лише тоді, коли включений термін взаємодії .


12
Якщо когось цікавить, я також розповідаю про помилкову ідею використання стандартизованих бета для отримання відносної «важливості» тут: тестування множинної лінійної регресії для гіпотез
gung

Дякуємо за Ваш відповідь. Я думаю, що я зрозумів це тим часом: можна подумати про квадратний термін як X, що взаємодіє між собою, так би мовити, і ваш погляд на взаємодіючу змінну було б більш загальним.
Абхіманью Арора

6
XX

Щодо beta1 = 0,6 і beta2 = 0,3, я не впевнений, чи правильно говорити beta1, ніж beta2, але я подумав, що оскільки вони стандартизовані, вони знаходяться в одній шкалі, тобто одиниці є стандартними відхиленнями від середнього. Сказавши це, відповідь Y буде вдвічі вищою у випадку бета1 (утримуючи х2 константа), ніж для бета2 (утримуючи х1 постійну). Правильно? Або я щось неправильно зрозумів на шляху?
чао

@chao, ви насправді не позбулися одиниць, властивих двом змінним; ти їх просто приховав. Тепер одиниці X1 припадають на 13,9 см, а одиниці X2 - на 2,3 градуса Цельсія.
gung

80

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

y=β0+β1x1+β2x2++ϵ

β1,β2,x1,x2,β0

x1aβ^11/a

β^1(x1)=i=1n(x1,ix¯1)(yiy¯)i=1n(x1,ix¯1)2.

Таким чином

β^1(ax1)=i=1n(ax1,iax¯1)(yiy¯)i=1n(ax1,iax¯1)2=ai=1n(x1,ix¯1)(yiy¯)a2i=1n(x1,ix¯1)2=β^1(x1)a.

β^2

Таким чином, масштабування просто відповідає масштабуванню відповідних схилів.

ai=1/sisix1xi


1
Чи гарна ідея стандартизувати дуже зміщені змінні чи краще просто стандартизувати симетрично розподілені змінні? Чи слід визначити розмір лише вхідних змінних чи результатів?
скан

31

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

> objective <- function(par){ par[1]^2+par[2]^2}  #quadratic function in two variables with a minimum at (0,0)
> optim(c(10,10), objective, method="BFGS")$counts  #returns the number of times the function and its gradient had to be evaluated until convergence
    function gradient 
          12        3 
> objective2 <- function(par){ par[1]^2+0.1*par[2]^2}  #a transformation of the above function, corresponding to unscaled covariates
> optim(c(10,10), objective2, method="BFGS")$counts
function gradient 
      19       10 
> optim(c(10,1), objective2, method="BFGS")$counts  #scaling of initial parameters doesn't get you back to original performance
function gradient 
      12        8

Також для деяких застосувань SVM масштабування може покращити прогнозовану ефективність: Масштабування функцій в описі векторних даних підтримки .


25

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

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

  • середня контрольна група

  • пустий сигнал

Числова стабільність є причиною, пов'язаною з алгоритмом, для центрування та / або масштабування даних.

Також погляньте на подібне питання щодо стандартизації . Що також охоплює "лише центр".


24

Щоб проілюструвати проблему чисельної стабільності, згадану @cbeleites, ось приклад Саймона Вуда про те, як "зламати" lm(). Спочатку ми згенеруємо кілька простих даних і помістимо просту квадратичну криву.

set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))

plot(x,y)
lines(x, predict(b), col='red')

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

Але якщо ми додамо 900 до X, то результат повинен бути майже однаковим, за винятком зсуву вправо, ні? На жаль ні...

X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')

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

Змінити, щоб додати до коментаря @Scortchi - якщо ми подивимось на об’єкт, повернутий lm (), ми побачимо, що квадратичний додаток не був оцінений і відображається як NA.

> B
Call:
lm(formula = y ~ X + I(X^2))

Coefficients:
(Intercept)            X       I(X^2)  
  -139.3927       0.1394           NA  

І справді, як запропонував @Scortchi, якщо ми подивимось на матрицю моделі та спробуємо вирішити безпосередньо, вона "ламається".

> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) : 
  system is computationally singular: reciprocal condition number = 3.9864e-19

Однак lm()не дає мені жодного попередження або повідомлення про помилку, окрім NAs у I(X^2)рядку summary(B)в R-3.1.1. Інші алгоритми, звичайно, можна "поламати" по-різному на різних прикладах.


10
(+1) Примітка lmне дає змоги оцінити коефіцієнт для квадратичного члена і дає попередження про матрицю сингулярного проектування - можливо, більш прямо наочну проблему, ніж ці графіки.
Scortchi

3

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

Для ілюстрації моєї точки зору розглянемо простий приклад.

Припустимо, справжня специфікація має таку форму, що така

yi=b0+b1xi+b2xi2+ui

Таким чином, відповідне рівняння OLS задається через

yi=yi^+ui^=b0^+b1^xi+b2^xi2+ui^

yi^yiuib0^b2^b0b2zi=xi2

xx2yiyi

yi

y¯=b0^+b1^x¯+b2^z¯
y¯x¯z¯yixizi

y¯yi

yiy¯=b1^(xix¯)+b2^(ziz¯)+ui^

yiy¯xix¯ziz¯b1^b2^

xx2xx2corr(x,z)=corr(xx¯,zz¯)

Підсумовуючи це, якщо моє розуміння центрування правильне, я не думаю, що дані центрування допоможуть пом'якшити проблему МС, викликану включенням регресу в квадратні терміни або інші умови більш високого порядку.

Буду радий почути вашу думку!


2
Дякуємо за ваш внесок @ rudi0086021. Ви можете мати рацію, але я бачу тут декілька питань. По-перше, центрування - це віднімання середнього значення x , а не віднімання середнього значення y ; По-друге, вам потрібно спершу провести центрінг, після того як ви зауважуєте, центрирування після нього не має ефекту. Розглянемо: x = c(1,2,3); x2 = x^2; cor(x, x2); # [1] 0.9897433; xc = c(-1,0,1); xc2 = xc^2; cor(xc, xc2) # [1] 0.
gung

Дякую за вашу відповідь, @gung. Ось мої думки. По-перше, особисто я не бачив переконливих причин ставитися до залежних і незалежних змінних по-різному, тобто до незалежних змінних, при цьому не робити цього для залежних змінних.
rudi0086021

2
По-друге, як ви сказали, можливо, ми повинні зосереджувати дані, перш ніж створювати квадратні терміни. Така практика пом'якшить проблему МС. Однак це може призвести до упереджених оцінок або, якщо конкретніше, до опущеної зміщеної зміщення (OVB). Для ілюстрації див. Наступний приклад: припустимо, справжня специфікація: y = b0 + b1 * x + b2 * x ^ 2 + u. Заздалегідь центрування даних дасть: y = b0 + b1 * (x-xhar) + b2 * (x-xbar) ^ 2 + v, де новий термін помилки v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * xbar * x. Зрозуміло, що cov (x-xbar, v)! = 0. Таким чином, на жаль, заздалегідь центрування даних призведе до упереджених оцінок.
rudi0086021

@ rudi0086021 Схоже, що в останньому коментарі ви припускаєте, що при встановленні центрированних даних ви отримали б ті ж коефіцієнти, як і при встановленні безцентризованих даних. Але центрування перед взяттям квадрата не є простим зрушенням на константу, тому не слід очікувати отримання однакових коефіцієнтів. Найкраще підходить після центрування B0 + B1 * (x-xbar) + B2 * (x-xbar) ^ 2, де B0 = b0 + b1 * xbar + b2 * xbar ^ 2, B1 = b1 + 2 * b2 * xbar і B2 = b2. Таким чином, v = u. Вибачте, що відповіли на цей коментар настільки пізно, але завжди можуть бути такі, як я, які бачать його вперше.
Тім Гудмен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.