Я пытаюсь подогнать модель пуассоновской регрессии к набору данных с перекрестным подтверждением в k-кратном размере, используя crossv_kfold моделира, а затем получить прогнозы, используя функцию увеличения метлы.В данных, которые я моделирую, у меня есть счетчик, который я пытаюсь предсказать, но он должен быть компенсирован переменной экспозиции.Ради воспроизводимости я включил расширенный набор данных для иллюстрации.
library(tidyverse)
library(modelr)
non_breaks = rpois(dim(warpbreaks)[1],20)
warp = warpbreaks %>%
mutate(total = breaks + non_breaks)
Так что в этом примере я буду моделировать количество разрывов для заданных категориальных переменных и смещение по общей экспозиции.Я обнаружил, что, если я не включаю смещение в мою модель, все прекрасно работает:
library(broom)
warp_no_offset = crossv_kfold(warp, k = 10) %>%
mutate(model = map(train, ~ glm(breaks~ wool*tension, ., family=poisson))) %>%
mutate(predicted = map2(model, test, ~ augment(.x, newdata = .y, predict.type= "response")))
Но если я добавлю смещение:
warp_offset = crossv_kfold(warp, k = 10) %>%
mutate(model = map(train, ~ glm(breaks~ offset(log(total)) + wool*tension, ., family=poisson))) %>%
mutate(predicted = map2(model, test, ~ augment(.x, newdata = .y, predict.type= "response")))
выдает ошибку:
Error in mutate_impl(.data, dots) :
Evaluation error: arguments imply differing number of rows: 5, 49.