多重共线性是否隐含在分类变量中?


10

我注意到,在修补多元回归模型时,分类变量的类别内(当然,在排除参考类别之后),有一个很小但引人注目的多元共线性效应,以方差膨胀因子来衡量。

例如,假设我们有一个包含连续变量y和一个名义分类变量x的数据集,该变量具有k个可能的互斥值。我们将这可能的值编码为0/1虚拟变量。然后,我们运行回归模型。虚拟变量的VIF分数结果为非零。实际上,随着类别数量的增加,VIF也随之增加。使虚拟变量居中似乎不会更改VIF。x 1x 2x k y = b 0 + b 1 x 1 + b 2 x 2 + + b k - 1 x k - 1 k - 1kx1,x2,,xky=b0+b1x1+b2x2++bk1xk1k1

直观的解释似乎是类别变量内类别的互斥条件导致了这种轻微的多重共线性。这是一个琐碎的发现,还是在建立带有分类变量的回归模型时要考虑的问题?

Answers:


8

我无法确切地再现这种现象,但是我可以证明VIF不一定会随着类别数量的增加而增加

直觉很简单:可以通过适当的实验设计使分类变量正交。因此,类别数量和多重共线性之间通常应该没有关系。

这是一个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)
}

应用它,我发现VIF 始终处于最低可能值,反映了平衡(这转换为设计矩阵中的正交列)。一些例子: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))

显示VIF不再等于(但随机保持接近)。它们仍然不会随着更多类别而增加:产生可比较的值。1sapply(1:5, function(i) trial(i, 10, 10))


2

您具有在多项式分布中固有的约束,即的一个且只有一个为1,其余所有为0。因此您具有线性约束。这意味着说 其中总和接管。这是您注意到的共线性效应。没有什么异常或困扰。xixi=1x1=1xii1


我不了解这种情况下的多项式分布。你能解释一下吗?
whuber
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.