VIF инфляции дисперсии для модели каретки glm в R - PullRequest
4 голосов
/ 04 августа 2020

Я хочу рассчитать коэффициент инфляции дисперсии (VIF) для модели каретки glm в R. Это мой код, и набор данных взят из 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)
Error in UseMethod("vcov") : 
  no applicable method for 'vcov' applied to an object of class "c('train', 'train.formula')"

Возможно, у меня неправильный код? Любая помощь будет принята с благодарностью.

1 Ответ

4 голосов
/ 04 августа 2020

Вы можете извлечь окончательную обученную модель, а затем вычислить vif с этим:

car::vif(notes_model$finalModel)
    varWav     skeWav    curtWav    entropy 
 63.978111 184.323806 356.526156   1.935005 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...