Использование прогноза Arima с возможно не работает - PullRequest
0 голосов
/ 27 марта 2020

У меня есть две части кода: одна работает, другая нет. Может быть, у кого-то есть идеи, почему это не работает.

PS. Я знаю, что это не полностью воспроизводимый пример, но если это будет необходимо, я предоставлю один.

arima_cv = forecast_data_ini_split %>% 
  unnest(training_splits_for_cv_models) %>% 
  crossing(arima_models_for_cv %>% slice(17:18)) %>% 
  mutate(analysis_data = map(.x = splits, ~tk_analysis_fun(.x))) %>% 
  mutate(assessment_data = map(.x = splits, ~tk_assessment_fun(.x)))

Этот работает

good = arima_cv %>% 
  mutate(models = furrr::future_pmap(list(analysis_data, p, d, q, P, D, Q),
                                     .f = ~Arima(y = ..1, order = c(..2, ..3, ..4), seasonal = c(..5, ..6, ..7), xreg = NULL,
                                                          include.mean = TRUE, include.drift = FALSE, method ="CSS-ML"))) %>% 
  mutate(models_metrics_ass = map2(.x = models, .y = assessment_data,  ~accuracy_assessment_fun(.x, .y)))

Этот не

bad = arima_cv %>% 
  mutate(models = pmap(list(analysis_data, p, d, q, P, D, Q),
                                     ~possibly(Arima, otherwise = NULL )(y = ..1, order = c(..2, ..3, ..4), seasonal = c(..5, ..6, ..7), xreg = NULL,
                                                 include.mean = TRUE, include.drift = FALSE, method ="ML"))) %>% 
  mutate(models_metrics_ass = map2(.x = models, .y = assessment_data,  ~accuracy_assessment_fun(.x, .y)))

Сообщение об ошибке:

Error in eval(expr, p) : the ... list contains fewer than 4 elements

Проблема с последней строкой кода:

mutate(models_metrics_ass = map2(.x = models, .y = assessment_data,  ~accuracy_assessment_fun(.x, .y)))

Кажется, что, возможно, что-то изменится вывод модели, и я не могу сделать прогноз и точность подсчета.

Заранее спасибо, Сью

1 Ответ

0 голосов
/ 31 марта 2020

Итак, проблема была в Arima, а не в возможности.
Я поставил константу для параметра include.drift, тогда как он должен быть переменной.
Кстати. Примеров с возможно и pmap очень мало, так что если хотите и рабочий пример, напишите мне в личку.

  unnest(training_splits_for_cv_models) %>%
  left_join(arima_models_for_cv) %>% 
  # crossing(arima_models_for_cv %>% 
  # slice(17:19) %>%
  mutate(analysis_data = map(.x = splits, ~tk_analysis_fun(.x))) %>% 
  mutate(assessment_data = map(.x = splits, ~tk_assessment_fun(.x))) %>% 
  mutate(models = furrr::future_pmap(list(analysis_data, p, d, q, P, D, Q, include.drift),
                                       .f = ~possibly(Arima, otherwise = NULL)(y = ..1, 
                                                   order = c(..2, ..3, ..4), 
                                                   seasonal = c(..5, ..6, ..7), 
                                                   include.drift = ..8, method ="CSS-ML"))) %>%
    mutate(models_metrics_ass = map2(.x = models, .y = assessment_data,  ~accuracy_assessment_fun(.x, .y)))
...