R中glm caret模型的方差膨胀因子VIF

3
我想为R中的caret glm模型计算VIF(方差膨胀因子)。这是我的代码,数据集来自UCI:
library(caret)
library(tidyverse)

url <- paste0("https://archive.ics.uci.edu/ml/machine-learning-databases/",
              "00267/data_banknote_authentication.txt")

dataset <- read_csv(url, col_names = c("varWav","skeWav","curtWav","entropy","class"))
dataset$class <- as.factor(ifelse(dataset$class == 0,"Authentic","Forgery"))

idx <- createDataPartition(dataset$class, p = 0.8, list = FALSE)
train_set <- dataset[idx,]
test_set <- dataset[-idx,]

notes_model <- train(class ~.,
                   data = train_set,
                   method = "glm")

但是当我尝试运行这段代码时,它会返回一个错误:

car::vif(notes_model)

使用方法("vcov")出错: 针对类别为 "c('train', 'train.formula')" 的对象未应用可适用的方法。

也许我的代码有误?请帮忙看看,非常感谢。

1个回答

4
你可以提取最终训练模型,然后使用它来计算 vif
car::vif(notes_model$finalModel)
    varWav     skeWav    curtWav    entropy 
 63.978111 184.323806 356.526156   1.935005 

1
太好了!现在我看到一些变量具有很高的多重共线性。谢谢@astrofunkswag。 - Alexis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接