Пример использования пакета tidyverse
:
Сначала вам нужно подготовить один набор данных с данными обучения и тестирования, помеченными столбцом (train_test
в моем примере):
data <-
tibble(
Customer = sample(str_c('C', 1:5), 1000, replace = TRUE),
Product = sample(str_c('P', 1:5), 1000, replace = TRUE),
STOCK_IN_HAND = rpois(1000, 10),
PREVIOUS_QTY = rpois(1000, 20),
ORDERED_QTY = rpois(1000, 25),
train_test = sample(c('train', 'test'), 1000, replace = TRUE)
)
Затем вы можете подгонять линейные модели к каждой комбинации Клиент-Продукт отдельно и делать прогнозы для соответствующих данных, например:
data %>%
group_by(Customer, Product) %>%
nest() %>%
mutate(
train = map(data, ~filter(.x, train_test == 'train')),
test = map(data, ~filter(.x, train_test == 'test') %>% select(-ORDERED_QTY)),
model = map(train, ~lm(ORDERED_QTY ~ STOCK_IN_HAND + PREVIOUS_QTY, data = .x)),
pred = map2(model, test, ~predict(.x, newdata = .y))
) %>%
select(Customer, Product, test, pred) %>%
unnest()
Пожалуйста, просмотрите мой пример и дайте мне знать, если что-то неясно.