La multicolinéarité est-elle implicite dans les variables catégorielles?


10

J'ai remarqué en bricolant avec un modèle de régression multivariée qu'il y avait un effet de multicolinéarité petit mais notable, mesuré par les facteurs d'inflation de la variance, dans les catégories d'une variable catégorielle (après avoir exclu la catégorie de référence, bien sûr).

Par exemple, supposons que nous ayons un ensemble de données avec une variable continue y et une variable catégorielle nominale x qui a k ​​possibles valeurs mutuellement exclusives. Nous codons ces k valeurs possibles en tant que variables factices 0/1 x1,x2,,xk . Ensuite, nous exécutons un modèle de régression y = b_0 + b_1x_1 + b_2x_2 + \ dots + b_ {k-1} x_ {k-1}y=b0+b1x1+b2x2++bk1xk1 . Les scores VIF pour les variables fictives k1 se révèlent être non nuls. En fait, à mesure que le nombre de catégories augmente, les VIF augmentent. Le centrage des variables factices ne semble pas modifier les VIF.

L'explication intuitive semble être que la condition mutuellement exclusive des catégories au sein de la variable catégorielle provoque cette légère multicolinéarité. Est-ce une constatation triviale ou est-ce un problème à considérer lors de la construction de modèles de régression avec des variables catégorielles?

Réponses:


8

Je ne peux pas reproduire exactement ce phénomène, mais je peux démontrer que VIF n'augmente pas nécessairement à mesure que le nombre de catégories augmente .

L'intuition est simple: les variables catégorielles peuvent être rendues orthogonales par des plans expérimentaux appropriés. Par conséquent, il ne devrait généralement pas y avoir de relation entre le nombre de catégories et la multicolinéarité.

Voici une Rfonction pour créer des ensembles de données catégoriels avec un nombre spécifiable de catégories (pour deux variables indépendantes) et une quantité de réplication spécifiable pour chaque catégorie. Il représente une étude équilibrée dans laquelle chaque combinaison de catégories est observée un nombre égal de fois, :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)
}

En l'appliquant, je trouve que les VIF sont toujours à leurs valeurs les plus basses possibles, , reflétant l'équilibrage (ce qui se traduit par des colonnes orthogonales dans la matrice de conception). Quelques exemples: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

Cela suggère que la multicolinéarité peut augmenter en raison d'un déséquilibre croissant dans la conception . Pour tester cela, insérez la ligne

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

avant la fitligne trial. Cela supprime la moitié des données au hasard. Re-exécution

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

montre que les VIF ne sont plus égaux à (mais ils en restent proches, au hasard). Ils n'augmentent toujours pas avec plus de catégories: produit des valeurs comparables.1sapply(1:5, function(i) trial(i, 10, 10))


2

Vous avez la contrainte que vous pouvez voir est inhérente aux distributions multinomiales, à savoir qu'un et un seul des sera 1 et tout le reste sera 0. Vous avez donc la contrainte linéaire . Cela signifie que où la somme est reprise sur . C'est l'effet de colinéarité que vous remarquez. Il n'y a rien d'inhabituel ou de dérangeant à ce sujet.xixi=1x1=1xii1


Je ne comprends pas ce que les distributions multinomiales ont à voir avec cette situation. Pourriez-vous expliquer?
whuber
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.