R: прогнозирование нескольких временных рядов из одного фрейма данных - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь прогнозировать данные нескольких временных рядов, которые присутствуют в одном фрейме данных. Кадр данных df выглядит следующим образом. dput(df) также приводится ниже для быстрого воспроизведения.

  Date           Group       Value
01-04-2019      Saffron      62.78
01-04-2019      Green        75.65
01-05-2019      Saffron      67.89
01-06-2019      Saffron      54.56
01-06-2019      Green        77.00
01-07-2019      Green        71.22

structure(list(Date = structure(c(1L, 1L, 2L, 3L, 3L, 4L), .Label = c("01-04-2019", "01-05-2019", "01-06-2019", "01-07-2019"), class = "factor"), 
Group = structure(c(2L, 1L, 2L, 2L, 1L, 1L), .Label = c("Green", 
"Saffron"), class = "factor"), Value = c(62.78, 75.65, 67.89, 
54.56, 77, 71.22)), .Names = c("Date", "Group", "Value"), class = "data.frame", row.names = c(NA, -6L))

Цель: я хочу прогнозировать для каждого Group с использованием пакета forecast.

Итак, мой подход был следующим:

col_name_date     <- "Date"   
col_name_measure  <- "Value"
col_name_sku_depo <- "Group"
dates_to_forecast <- 3
for (v in unique(as.character(df$Group))) {
    temp <-subset(data,Group == v)
    assign(paste0("df_",tolower(v)),temp)
    temp <- temp [order(temp[, col_name_date]), ]
    start_date  <- as.Date(temp[1, col_name_date], date_format) #< ---library(lubridate)
    ts_historic <- ts(temp[, col_name_measure], 
                      start = c(year(start_date), month(start_date)),
                      frequency = 12)
    ----Forecasting process using forecast package, omitting as it is out of scope-----

    forecast_mean   <- rep(NA, dates_to_forecast)
    forecast_mean   <- ts_forecast$mean
    forecast_upper  <- ts_forecast$upper
    forecast_lower  <- ts_forecast$lower
    dates_all_mean  <- as.numeric(c(as.numeric(ts_historic), as.numeric(forecast_mean)))
    dates_all_lower <- as.numeric(c(rep(NA, length(ts_historic)), as.numeric(forecast_lower)))
    dates_all_upper <- as.numeric(c(rep(NA, length(ts_historic)), as.numeric(forecast_upper)))
    result <- data.frame(
                 MONTH = dates_all, 
                 MEASURETYPE = date_types,
                 GROUP = v
                 MEASURE = dates_all_mean, 
                 MEASURELOWER = dates_all_lower, 
                 MEASUREUPPER = dates_all_upper, 
                 MODEL = model_descr)
     }

Приведенный выше код прекрасно работает для одного Group, т. Е. Шафрана. Но это не дает результат для Green группы.

Я ищу следующий вывод:

MONTH          MEASURETYPE    GROUP         MEASURE    MEASUREUPPER   MEASURELOWER    MODEL
01-04-2019     Actual        Saffron         62.78       NA             NA            Test
01-05-2019     Actual        Saffron         67.89       NA             NA            Test
01-06-2019     Actual        Saffron         54.56       NA             NA            Test
01-07-2019     Forecast      Saffron         55.35       56.15          54.23         Test
01-08-2019     Forecast      Saffron         57.29       58.15          56.39         Test
01-04-2019     Actual        Green           75.65       NA             NA            Test
01-05-2019     Actual        Green           77.00       NA             NA            Test
01-06-2019     Actual        Green           71.22       NA             NA            Test
01-07-2019     Forecast      Green           76.35       77.15          75.23         Test
01-08-2019     Forecast      Green           73.29       74.29          72.30         Test

Как видно из кода, я могу сгенерировать вышеуказанный вывод только для Saffron.

Как я могу также добавить Green, как показано в приведенном выше выводе?

Где я пропускаю в for l oop?

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