Отображение auto.arima () в список подмножеств временных рядов - PullRequest
0 голосов
/ 21 мая 2018

У меня есть список данных временных рядов, таких как:

> str(ffz2$time_series)
List of 89
 $ 1_1  : Time-Series [1:47] from 2013 to 2017: 6.95 7.03 7.06 7.03 7.09 ...
 $ 1_10 : Time-Series [1:47] from 2013 to 2017: 7.1 7.13 7.12 7.13 7.21 ...
 $ 1_2  : Time-Series [1:47] from 2013 to 2017: 7.28 7.31 7.3 7.32 7.35 ...
 $ 1_3  : Time-Series [1:47] from 2013 to 2017: 6.85 6.92 6.92 6.92 6.98 ...

Когда я отображаю на него функцию auto.arima () из пакета прогноза, она отлично работает.

ffz2_models <- ffz2 %>%
    mutate(
      model = time_series %>% map(auto.arima)
)

Однако, если я выполняю операцию поднабора, кажется, что либо карта, либо функция auto.arima перестают работать.

train <- dam_models$time_series %>%
    map(subset, end = 36)

> str(train)
List of 89
 $ 1_1  : Time-Series [1:36] from 2013 to 2016: 6.95 7.03 7.06 7.03 7.09 ...
 $ 1_10 : Time-Series [1:36] from 2013 to 2016: 7.1 7.13 7.12 7.13 7.21 ...
 $ 1_2  : Time-Series [1:36] from 2013 to 2016: 7.28 7.31 7.3 7.32 7.35 ...
 $ 1_3  : Time-Series [1:36] from 2013 to 2016: 6.85 6.92 6.92 6.92 6.98 ...

Тогда карта (auto.arima) возвращает эту ошибку:

> trainingmodels <- train %>%
+     map(auto.arima)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

Кроме того, если я извлекаю одну временную серию из списка и сохраняю ее как отдельное значение, то выполняю auto.arima для этого значения - это работает!

> timeseries1_2 <- train$`1_2` 

> modeltimeseries1_2 <- auto.arima(timeseries1_2)  

> head(modeltimeseries1_2)
$coef
        ma1       drift 
-0.43701717  0.01173471 

$sigma2
[1] 0.0004384713

$var.coef
                 ma1           drift
ma1    0.02429125831 -0.000025689037
drift -0.00002568904  0.000003959022

$mask
[1] TRUE TRUE

$loglik
[1] 86.63868

$aic
[1] -167.2774

Обходной путь здесь заключается в том, что я могу извлечь каждый отдельный элемент в списке к его собственному значению и запустить auto.arima для каждого из них отдельно без использования map () или lapply (), однако я89 из них.Таким образом, это 89 наборов обучающих данных, которые я пытаюсь смоделировать, и еще 89 наборов тестов, которые нужно извлечь (при условии, что я использую этот метод) и спрогнозировать.

Любая помощь с отображением auto.arima для подмножества временных рядов очень ценится!

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