Справа з мультиколінеарністю


13

Я дізнався, що, використовуючи vif()метод carпакету, ми можемо обчислити ступінь мультиколінеарності вхідних даних у моделі. З вікіпедії , якщо vifзначення більше, ніж 5тоді, ми можемо вважати, що вхід страждає від проблеми мультиколінеарності. Наприклад, я розробив лінійну регресійну модель за допомогою lm()методу і vif()дає наступне. Як ми можемо бачити, входи ub, lbі tbстраждають від мультиколінеарності.

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

Для того , щоб уникнути проблем мультіколлінеарності і , таким чином , щоб зробити мою модель більш стійкою, я прийняв взаємодія ubі lb, і тепер VIF стіл нової моделі виглядає наступним чином :

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

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

Мої запитання:

  1. Чи добре уникати проблеми мультиколінеарності, приймаючи взаємодію, як показано вище?

  2. Чи є кращий спосіб представити проблему мультиколінеарності порівняно з результатами вищезгаданого методу vif.

Надайте, будь ласка, свої пропозиції.

Дякую.


Чи є ваша модельна регрес-журнал (взаємодія як обмеження, як нормально)? У Вікі є більш повна стаття, що стосується питання мультиколінеарності en.wikipedia.org/wiki/Мультіколінеарність Також я пропоную вивчити тег мультиколінеарності на цьому веб-сайті, це, здається, часто задається питанням.
Дмитро Челов

@Dmitrij Celov: Дякую. Ні, моя модель - це проста лінійна регресія без журналів ...
samarasa

Відповіді:


11

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

VЯЖj - це просто де - значення коли ви запускаєте регресію з оригінальною змінною предиктора як критерій, передбачений усіма іншими передбачувачами (це також -й діагональний елемент , обернений матрицею кореляції предикторів). ПНП-значення 50 , таким чином , вказує на те, що ви отримаєте з .98 при прогнозуванні з іншими провісників, вказуючи , що майже повністю надлишковими ( то ж саме для , з .97).11-Rj2Rj2R2jjRх-1R2ubublbR2

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

Більш вдосконалена мультиколінеарна діагностика використовує структуру власних значень де - матриця проектування регресії (тобто, всі предиктори як стовпці-вектори). Умова - де λ m a x і λ m i n - найбільші і найменші ( 0 ) власні значення X т X . У R ви можете використовувати , де модель зазвичай використовує стандартизовані змінні.ХтХХκλмахλмiнλмахλмiн0ХтХkappa(lm(<formula>))lm()

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

κκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))


ub lbажурналуб+ажурналлб=ажурналублбуб-лб

@Dmitrij: Ні, ub + lb + sb = 100.
samarasa

Чи є приємне графічне зображення для мультиколінеарності? Будь ласка, підкажіть мені, чи є якийсь метод у R для ті.
самараса

2
pairs()scatterplot3dκ2perturb

1

Ви також повинні врахувати значення P під час розгляду змінної.

  1. Якщо значення P дуже низьке (p <0,05), а VIF високе (> 5), можливо, слід врахувати інші незначні змінні. І відновіть свою модель.
  2. Якщо у вас значення P і VIF високе, ця змінна буде незначною.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.