我正在尝试在已建立的多项逻辑回归模型中测试多重共线性。数据包含超过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.
为什么问题不断发生?
谢谢
答案 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>