Чи стандартизація незалежних змінних зменшує колінеарність?


13

Я натрапив на дуже хороший текст про Bayes / MCMC. ІТ передбачає, що стандартизація ваших незалежних змінних зробить алгоритм MCMC (Metropolis) більш ефективним, але також може зменшити (багато) колінеарність. Чи може це бути правдою? Це щось, що я повинен робити як стандарт . (Вибачте).

Kruschke 2011, Doing Bayesian Analysis Data. (AP)

редагувати: наприклад

     > data(longley)
     > cor.test(longley$Unemployed, longley$Armed.Forces)

Pearson's product-moment correlation

     data:  longley$Unemployed and longley$Armed.Forces 
     t = -0.6745, df = 14, p-value = 0.5109
     alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
     -0.6187113  0.3489766 
     sample estimates:
      cor 
     -0.1774206 

     > standardise <- function(x) {(x-mean(x))/sd(x)}
     > cor.test(standardise(longley$Unemployed), standardise(longley$Armed.Forces))

Pearson's product-moment correlation

     data:  standardise(longley$Unemployed) and standardise(longley$Armed.Forces) 
     t = -0.6745, df = 14, p-value = 0.5109
      alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
      -0.6187113  0.3489766 
      sample estimates:
       cor 
     -0.1774206 

Це не зменшило кореляцію, а отже, хоч і обмежену лінійну залежність векторів.

Що відбувається?

R

Відповіді:


19

Це взагалі не змінює колінеарність між основними ефектами. Масштабування теж не має. Будь-яке лінійне перетворення цього не зробить. Змінюється це співвідношення основних ефектів та їх взаємодій. Навіть якщо A і B є незалежними з кореляцією 0, кореляція між A і A: B буде залежати від коефіцієнтів масштабу.

Спробуйте наступне на консолі R. Зауважте, що rnormпросто генеруються випадкові вибірки з нормального розподілу із встановленими вами популяційними значеннями, у цьому випадку 50 вибірками. scaleФункція стандартизує зразок до середнього значення 0 і 1 SD.

set.seed(1) # the samples will be controlled by setting the seed - you can try others
a <- rnorm(50, mean = 0, sd = 1)
b <- rnorm(50, mean = 0, sd = 1)
mean(a); mean(b)
# [1] 0.1004483 # not the population mean, just a sample
# [1] 0.1173265
cor(a ,b)
# [1] -0.03908718

Для цих незалежних вибірок випадкова кореляція становить близько 0. Тепер нормалізуйте значення 0 і SD 1.

a <- scale( a )
b <- scale( b )
cor(a, b)
# [1,] -0.03908718

Знову ж таки, це саме те саме значення, хоча середнє значення дорівнює 0 і SD = 1 для обох aі b.

cor(a, a*b)
# [1,] -0.01038144

Це також дуже близько 0. (a * b можна вважати терміном взаємодії)

Однак зазвичай рівень SD та середнє значення передбачувачів досить різняться, тому давайте змінимося b. Замість того, щоб брати новий зразок, я перевставлю оригінал, bщоб він мав середнє значення 5 і SD 2.

b <- b * 2 + 5
cor(a, b)
 # [1] -0.03908718

Знову той знайомий зв’язок, який ми бачили весь час. Масштабування не впливає на співвідношення між aта b. Але !!

cor(a, a*b)
# [1,] 0.9290406

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


1
+1 за вичерпну та зрозумілу відповідь (з кодом!)
Пітер Флом

1
Також корисно, якщо ви хочете включити, скажімо, квадратичний термін.
Аніко

абсолютно Аніко
Іван

1
Найкраща відповідь - за це дякую. Можливо, я зробив книгу несправедливою і в тому, що її неправильно трактував, але, можливо, варто було викрити своє незнання.
rosser

7

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

Ідеальна колінеарність

XμXσX

ZX=XμXσX

має середнє значення і стандартне відхилення урахуванням властивостей очікуваного значення та дисперсії, що , і , , де rv і - константи.μZ=0σZ=1E(X+a)=E(X)+aE(bX)=bE(X)Var(X+a)=Var(X)Var(bX)=b2Var(X)Xa,b

Ми говоримо, що дві змінні і є ідеально колінеарними, якщо існують такі значення та щоXYλ0λ1

Y=λ0+λ1X

що далі, якщо має середнє і стандартне відхилення , то має середнє і стандартне відхилення . Тепер, коли ми стандартизуємо обидві змінні (вилучимо їх засоби і розділимо на стандартні відхилення), отримаємо ...μ X σ X Y μ Y = λ 0 + λ 1 μ X σ Y = λ 1 σ X Z X = Z XXμXσXYμY=λ0+λ1μXσY=λ1σXZX=ZX

Кореляція

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

Ви можете помітити різницю? Як бачите, я цілеспрямовано видалив мітки осі, тому, щоб переконати вас, що я не обманюю, дивіться сюжети з доданими мітками:

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

Математично кажучи, якщо кореляція є

Corr(X,Y)=Cov(X,Y)Var(X)Var(Y)

то з колінеарними змінними у нас є

Corr(X,Y)=E[(XμX)(YμY)]σXσY=E[(XμX)(λ0+λ1Xλ0λ1μX)]σXλ1σX=E[(XμX)(λ1Xλ1μX)]σXλ1σX=E[(XμX)λ1(XμX)]σXλ1σX=λ1E[(XμX)(XμX)]σXλ1σX=E[(XμX)(XμX)]σXσX

тепер, оскільки ,Cov(X,X)=Var(X)

=Cov(X,X)σX2=Var(X)Var(X)=1

Хоча зі стандартизованими змінними

Corr(ZX,ZY)=E[(ZX0)(ZY0)]1×1=Cov(ZX,ZY)=Var(ZX)=1

оскільки ...ZX=ZY

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


0

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

Якщо ви хочете усунути мультиколінеарність між вашими змінними, пропоную використовувати аналіз основних компонентів (PCA). Як відомо, PCA дуже ефективний для усунення проблеми мультиколінеарності. З іншого боку, PCA робить комбіновані змінні (основні компоненти P1, P2 тощо) досить непрозорими. Модель PCA завжди набагато складніше пояснити, ніж традиційна багатоваріантна.


Сучасна альтернатива, часто краща, - регуляризація.
kjetil b halvorsen

Я перевірив вибір змінних між стандартними ступінчастими алгоритмами та LASSO. І, LASSO приходить у дуже далеку секунду. LASSO карає змінні впливи, він може вибирати слабкі змінні над сильнішими змінними. Це навіть може спричинити зміни знаків змінних. І це розбиває всі рамки статистичної значущості, інтервалів довіри та прогнозованих інтервалів. LASSO може часом працювати. Але уважно подивіться на графік MSEs та Lambda та графіки Coefficients vs. Lambda. Тут ви зможете візуально спостерігати, чи працювала ваша модель LASSO.
Sympa

0

Це не зменшує колінеарність, може зменшити ВІФ. Зазвичай ми використовуємо VIF як показник для занепокоєння щодо колінеарності.

Джерело: http://blog.minitab.com/blog/adventures-in-statistics-2/what-are-the-effects-of-multicollinenary-and-when-can-i-ignore-them


2
Ласкаво просимо на сайт. В даний час це скоріше коментар, ніж відповідь. Ви можете розширити її, можливо, надавши короткий зміст інформації за посиланням, або ми можемо перетворити її в коментар для вас. Крім того, моє читання пов'язаного допису не зовсім те, що стандартизація зменшує ВІФ, не знижуючи колінеарності. Їх приклад дуже конкретний і більш нюансований, ніж це.
gung - Відновити Моніку

-3

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

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


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

Ні, я втратив ... як це можливо змінити лінійну залежність елементів стовпця в матриці предикторів. (Чи не в цьому полягає колінеарність?)
rosser

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

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