如何在R中使用VIF?

问题描述

我是R语言的新手,正在使用caret学习ml。我当时正在处理UCI银行的市场营销响应数据,但此处使用iris数据来提高可重复性。

问题是我在error模型上从vif运行car package时得到classification

library(tidyverse)
library(caret)
library(car)

iris

# to make it binary classification
iris_train <- iris %>% filter(Species %in% c("setosa","versicolor"))
iris_train$Species <- factor(iris_train$Species)

创建模型


model_iris3 <- train(Species ~ .,data = iris_train,method = "gbm",verbose = FALSE
                      # tuneLength = 5,# metric = "Spec",# trControl = fitCtrl
                      )

vif错误

# vif
car::vif(model_iris3)

UseMethod(“ vcov”)中的错误:没有适用于'vcov'的适用方法应用于类“ c('train','train.formula')”的对象

我从以下Variance inflation VIF for glm caret model in R帖子中了解了将finalModel用于vif

但仍然出现错误

car::vif(model_iris3$finalModel)

UseMethod(“ vcov”)中的错误:没有适用于“ vcov”的适用于“ gbm”类对象的方法

adaboostearth等相同的错误。

感谢任何帮助或建议来解决此问题。

更新

最后,此方法有效(如果仍然出现错误,请参见Answers中的完整解决方案):

vifclassification模型上不起作用,因此将dependent变量转换为numeric并在其上运行linear regression,然后运行vif


model_iris4 <- train(as.numeric(Species) ~ .,method = "lm",# trControl = fitCtrl
                      )

car::vif(model_iris4$finalModel)

######## output ##########

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    4.803414     2.594389    36.246326    25.421395 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)