Регрессия для каждой комбинации клиента и продукта с использованием R - PullRequest
0 голосов
/ 07 января 2019

Я относительно новичок в области Data Science & R программирования. Существует требование, при котором нам необходимо выполнить линейную регрессию для комбинации клиент и продукт. Переменная Response здесь - это ORDERED_QTY, а зависимые переменные - STOCK_IN_HAND, PREVIOUS_QTY. Пример данных будет выглядеть примерно так.

Customer Product STOCK_IN_HAND  PREVIOUS_QTY   ORDERED_QTY

C1         P1      10             20              30

C1         P1      5              30              20 

C1         P1      15             20              25 

C1         P2      5              10              20 

C1         P2      5              20              25 

C1         P2      10             25              30 

C2         P1      20             20              30 

C2         P1      10             30              35 
. . . .  

Согласно приведенному выше набору данных, мы должны создать регрессионную модель для различных комбинаций клиента и продукта (например, C1 + P1). Обычно мы создаем модель, используя lm () в наборе обучающих данных, и прогнозируем результат, используя предикат (), используя набор тестовых данных. В этом случае мы должны предсказать ORDERED_QTY, когда в качестве входных данных передаются Customer, Product, STOCK_IN_HAND & PREVIOUS_QTY.
Это первый раз, когда мы сталкиваемся с такого рода требованиями и не получаем подсказки, как действовать дальше. Любой вклад или предложение окажет огромную помощь.

1 Ответ

0 голосов
/ 07 января 2019

Пример использования пакета 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()

Пожалуйста, просмотрите мой пример и дайте мне знать, если что-то неясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...