Как я могу исчерпать все комбинации параметров функции и собрать их результаты в одну таблицу? - PullRequest
0 голосов
/ 15 апреля 2020
library(fpp2) # for prison dataset
library(hts) # forecasting function

# prepare group time series
prison.gts <- gts(prison/1e3, characters = c(3,1,9),
                  gnames = c("State", "Gender", "Legal",
                             "State*Gender", "State*Legal",
                             "Gender*Legal"))

# run forecasts
forecast.gts(prison.gts, method="bu", fmethod="arima")
forecast.gts(prison.gts, method="comb", fmethod="arima")
forecast.gts(prison.gts, method="bu", fmethod="ets")
forecast.gts(prison.gts, method="comb", fmethod="ets")
forecast.gts(prison.gts, method="bu", fmethod="rw")
forecast.gts(prison.gts, method="comb", fmethod="rw")

Как видите, я пробую все различные значения, доступные для этих двух параметров: "method" и "fmethod", чтобы сравнить результаты прогноза.

Есть ли более простой способ, которым я могу сделать это в формате Tidyverse? В основном я хочу создать список всех комбинаций параметров, собрать их результаты в одну таблицу.

1 Ответ

2 голосов
/ 15 апреля 2020

Используя tidyverse методы, вы можете использовать crossing для создания всех комбинаций methods и fmethod. Мы можем использовать map2 для применения функции forecast.gts к каждой комбинации.

library(fpp2) 
library(hts)
library(dplyr)

result_obj <- tidyr::crossing(methods = c('bu', 'comb'), 
                              fmethod = c('arima', 'ets', 'rw')) %>%
                  mutate(forecast_result = purrr::map2(methods, fmethod, 
                      ~forecast.gts(prison.gts,method = .x, fmethod = .y)))
...