评估多项式Lo​​gistic回归模型时,“汽车”包中的VIF函数返回NA

时间:2020-04-07 15:00:13

标签: r regression multinomial

我正在尝试在已建立的多项逻辑回归模型中测试多重共线性。数据包含超过33000个观测值的13个变量。变量中的9个是分类因子变量,其余3个是数字/连续变量。我从nnet包中运行了多元Logistic回归模型,看起来像这样

my.model = multinom(dependent.var ~., data = training data)

起作用了(尽管效果不是很好)。然后,我从汽车上运行了VIF函数,每个变量的GVIF结果以“ NaN”的形式返回并显示警告消息:

Warning message: In vif.default(multi.model) : No intercept: vifs may not be sensible.

为什么问题不断发生?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您查看名为(car ::: vif.default)的vif,则代码中会有一行:

if (names(coefficients(mod)[1]) == "(Intercept)") {
        v <- v[-1, -1]
        assign <- assign[-1]
    }
    else warning("No intercept: vifs may not be sensible.")

因此,我们可以使用下面的示例演示为什么它返回错误:

library(nnet)
fit = multinom(Species ~.,data=iris)
vif(fit)
 Sepal.Length   Sepal.Width  Petal.Length   Petal.Width 
-1.878714e+16 -8.846005e+15 -1.827592e+15 -4.954974e+15 
Warning message:
In vif.default(fit) : No intercept: vifs may not be sensible.

相同的误差,我们看一下系数:

coefficients(fit)
           (Intercept) Sepal.Length Sepal.Width Petal.Length Petal.Width
versicolor    18.69037    -5.458424   -8.707401     14.24477   -3.097684
virginica    -23.83628    -7.923634  -15.370769     23.65978   15.135301

names(coefficients(fit))
NULL

由于它是多项式,因此系数存储为矩阵(使用一个类作为参考,您估计其他类的对数),因此names()函数不起作用,并返回错误。 / p>