我无法确切地再现这种现象,但是我可以证明VIF不一定会随着类别数量的增加而增加。
直觉很简单:可以通过适当的实验设计使分类变量正交。因此,类别数量和多重共线性之间通常应该没有关系。
这是一个R
用于创建分类数据集的函数,该分类数据集具有指定类别的数量(对于两个自变量)和每个类别的指定复制量。它代表了一项平衡的研究,其中对类别的每种组合进行相同次数的观察:ñ
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不再等于(但随机保持接近)。它们仍然不会随着更多类别而增加:产生可比较的值。1个sapply(1:5, function(i) trial(i, 10, 10))