Apakah multikolinearitas tersirat dalam variabel kategori?

10

Saya perhatikan ketika bermain-main dengan model regresi multivariat ada efek multikolinieritas yang kecil tapi nyata, yang diukur dengan faktor inflasi varians, dalam kategori variabel kategori (tentu saja tidak termasuk kategori referensi, tentu saja).

Sebagai contoh, katakanlah kita memiliki dataset dengan variabel kontinu y dan satu variabel kategorikal nominal x yang memiliki k kemungkinan nilai yang saling eksklusif. Kami mengkode nilai-nilai mungkin sebagai 0/1 variabel dummy . Kemudian kita menjalankan model regresi . Skor VIF untuk variabel dummy ternyata tidak nol. Bahkan, ketika jumlah kategori meningkat, VIF meningkat. Memusatkan variabel dummy tampaknya tidak mengubah VIF.kx1,x2,,xky=b0+b1x1+b2x2++bk-1xk-1k-1

Penjelasan intuitif tampaknya bahwa kondisi yang saling eksklusif dari kategori dalam variabel kategorikal menyebabkan sedikit multikolinieritas ini. Apakah ini temuan yang sepele atau itu masalah yang perlu dipertimbangkan ketika membangun model regresi dengan variabel kategori?

RobertF
sumber

Jawaban:

8

Saya tidak dapat mereproduksi dengan tepat fenomena ini, tetapi saya dapat menunjukkan bahwa VIF tidak serta merta meningkat ketika jumlah kategori meningkat .

Intuisinya sederhana: variabel kategori dapat dibuat ortogonal dengan desain eksperimental yang sesuai. Oleh karena itu, secara umum seharusnya tidak ada hubungan antara jumlah kategori dan multikolinieritas.

Berikut adalah Rfungsi untuk membuat dataset kategori dengan jumlah kategori yang dapat ditentukan (untuk dua variabel independen) dan jumlah replikasi yang dapat ditentukan untuk setiap kategori. Ini merupakan penelitian yang seimbang di mana setiap kombinasi kategori diamati jumlah yang sama kali, :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)
}

Menerapkannya, saya menemukan VIF selalu pada nilai serendah mungkin, , mencerminkan keseimbangan (yang diterjemahkan ke kolom ortogonal dalam matriks desain). Beberapa contoh: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

Ini menunjukkan multikolinearitas mungkin tumbuh karena ketidakseimbangan yang tumbuh dalam desain . Untuk menguji ini, masukkan baris

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

sebelum fitbaris dalam trial. Ini menghapus setengah data secara acak. Menjalankan kembali

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

menunjukkan bahwa VIF tidak lagi sama dengan (tetapi mereka tetap dekat dengannya, secara acak). Mereka masih tidak bertambah dengan lebih banyak kategori: menghasilkan nilai yang sebanding.1sapply(1:5, function(i) trial(i, 10, 10))

whuber
sumber
2

Anda memiliki batasan yang dapat Anda lihat melekat pada distribusi multinomial, yaitu bahwa satu dan hanya satu dari s akan menjadi 1 dan sisanya adalah 0. Jadi Anda memiliki batasan linier . Itu berarti katakanlah mana jumlah diambil alih . Ini adalah efek collinearity yang Anda perhatikan. Tidak ada yang aneh atau mengganggu tentang hal itu.xsayaxsaya=1x1=1-xsayasaya1

Michael R. Chernick
sumber
Saya tidak mengerti apa hubungan multinomial dengan situasi ini. Bisakah Anda jelaskan?
Whuber