R: GLM: уровень фактора отсутствует в наборе данных, но я все еще хочу коэффициент - PullRequest
0 голосов
/ 18 мая 2018

Когда я тренирую модель и затем прогнозирую данные тестирования, иногда некоторый уровень фактора, которого нет в данных обучения, отображается в данных тестирования, и это дает мне ошибку, потому что уровень фактора был недоступен, когдаобучение модели.

Рабочий пример:

mtcars2<-mtcars
mtcars2$gear<-as.factor(mtcars2$gear)
mtcars_train<-mtcars2[1:10,]
mtcars_test<-mtcars2[11:nrow(mtcars2),]
model<-glm(formula = cyl ~ gear,data = mtcars_train,family=poisson(link="log"))
predict(object = model, newdata = mtcars_test)


Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = >object$xlevels) : 
  factor gear has new levels 5

Я хочу получить коэффициенты для всех уровней факторов для фактора, который я указываю в моем GLM, и если некоторый уровень отсутствует в данныхЯ хочу, чтобы этот коэффициент был установлен в 1 в моем объекте GLM.Как я могу это сделать?

1 Ответ

0 голосов
/ 18 мая 2018

Предупреждение: это не очень хороший способ справиться с невидимыми уровнями, и результат будет выключен.Я не рекомендую это.

Сказав это, вы можете сделать следующее.А именно добавление недостающего уровня к уровням в модели glm.

model$xlevels$gear
[1] "3" "4"

, как вы можете видеть, отсутствующий уровень 5

# adding level 5
model$xlevels$gear[3] <- "5"

exp(predict(object = model, newdata = mtcars_test))
          Merc 280C          Merc 450SE          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental   Chrysler Imperial 
                  5                   7                   7                   7                   7                   7                   7 
           Fiat 128         Honda Civic      Toyota Corolla       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
                  5                   5                   5                   7                   7                   7                   7 
   Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa      Ford Pantera L        Ferrari Dino       Maserati Bora 
                  7                   5                   7                   7                   7                   7                   7 
         Volvo 142E 
                  5 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...