Чи мультиколінеарність неявна категоричним змінним?


10

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

Наприклад, скажімо, у нас є набір даних із суцільною змінною y та однією номінальною категоріальною змінною x, яка має k можливих взаємовиключних значень. Ми закодувати ці можливі значення, 0/1 фіктивні змінні . Потім запускаємо регресійну модель . Оцінки VIF для фіктивних змінних виявляються не нульовими. Насправді, у міру збільшення кількості категорій збільшуються ВІФ. Центрирування фіктивних змінних, схоже, не змінює VIF.kx1,x2,,xky=b0+b1x1+b2x2++bk1xk1k1

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

Відповіді:


8

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

Інтуїція проста: категоричні змінні можна зробити ортогональними відповідними експериментальними конструкціями. Таким чином, не повинно бути, взагалі НЕ відносини між кількістю категорій і мультіколлінеарності.

Ось Rфункція створення категоричних наборів даних із визначеним числом категорій (для двох незалежних змінних) та визначеним кількістю реплікацій для кожної категорії. Він являє собою збалансоване дослідження, в якому кожне поєднання категорій спостерігається рівною кількістю разів, :n

trial <- function(n, k1=2, k2=2) {
  df <- expand.grid(1:k1, 1:k2)
  df <- do.call(rbind, lapply(1:n, function(i) df))
  df$y <- rnorm(k1*k2*n)
  fit <- lm(y ~ Var1+Var2, data=df)
  vif(fit)
}

Застосовуючи це, я знаходжу, що ВІФ завжди знаходяться на найнижчих можливих значеннях , відображаючи врівноваження (що перекладається на ортогональні стовпці в проектній матриці). Деякі приклади:1

sapply(1:5, trial) # Two binary categories, 1-5 replicates per combination
sapply(1:5, function(i) trial(i, 10, 3)) # 30 categories, 1-5 replicates

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

  df <- subset(df, subset=(y < 0))

перед fitрядком в trial. Це видаляє половину даних навмання. Повторний запуск

sapply(1:5, function(i) trial(i, 10, 3))

показує, що ВІФ вже не дорівнює (але вони залишаються близькими до нього випадковим чином). Вони все ще не збільшуються з більшою кількістю категорій: дає порівнянні значення.1sapply(1:5, function(i) trial(i, 10, 10))


2

У вас є обмеження, яке ви можете бачити, притаманне багаточленним розподілам, а саме, що один і лише один з s буде дорівнює 1, а всі інші будуть 0. Отже, у вас лінійне обмеження . Це означає, що скажіть де сума взята над . Це ефект колінеарності, який ви помічаєте. У цьому немає нічого незвичайного або тривожного.xixi=1x1=1xii1


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