Как я могу манипулировать объектом GLM, чтобы обойти эту ошибку? Я хотел бы для прогнозирования рассматривать невидимые уровни как базовые случаи (то есть дать им нулевой коэффициент).
> master <- data.frame(x = factor(floor(runif(100,0,3)), labels=c("A","B","C")), y = rnorm(100))
> part.1 <- master[master$x == 'C',]
> part.2 <- master[master$x == 'A' | master$x == 'B',]
> model.2 <- glm(y ~ x, data=part.2)
> predict.1 <- predict(model.2, part.1)
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : factor 'x' has new level(s) C
Я пытался сделать это:
> model.2$xlevels$x <- c(model.2$xlevels, "C")
> predict.1 <- predict(model.2, part.1)
Но это не правильно оценивает модель:
> predict.1[1:5]
2 3 6 8 10
0.03701494 0.03701494 0.03701494 0.03701494 0.03701494
> summary(model.2)
Call:
glm(formula = y ~ x, data = part.2)
<snip>
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.12743 0.18021 0.707 0.482
xB -0.09042 0.23149 -0.391 0.697
Предсказание 1 должно быть только 0,12743.
Это, очевидно, просто урезанная версия - моя реальная модель содержит около 25 переменных, поэтому ответ predict.1 <- rep(length(part.1), 0.12743)
мне не нужен.
Спасибо за любую помощь!