обрабатывать ошибки с примерить басни - PullRequest
1 голос
/ 23 мая 2019

Этот код работает правильно

require(fable)   
it <-  tsibbledata::global_economy %>%
    filter(Country == "Italy")
fm0 <-  model(.data = it, 
    ARIMA(log(GDP) ~ Population), 
    ETS(log(GDP)))

Следующая не будет работать

fm1 <-  model(.data = it, 
    ARIMA(log(GDP) ~ Population + pdq(3,1,7) +PDQ(5,1,1)),
    ETS(log(GDP)))

Очевидно, что это не работает из-за модели ARIMA. ETS отлично работает

Я мог бы сделать:

fm2 <-  try(
    model(.data = it, 
    ARIMA(log(GDP) ~ Population + pdq(3,1,7) +PDQ(5,1,1)), 
    ETS(log(GDP))))

Но это приведет к отказу обеих моделей

Я бы хотел что-то вроде

fm3 <-  try(
    model(.data = it, 
    try(ARIMA(log(GDP) ~ Population + pdq(3,1,7) +PDQ(5,1,1))), 
    ETS(log(GDP))))

, чтобы fm3 содержал правильные результаты для ETS и объект класса try-error для ARIMA

Возможно, изменение fablelite ::: оценивать так, чтобы оно могло обрабатывать ошибки, может быть решением?

Любая помощь будет очень ценится

1 Ответ

0 голосов
/ 30 мая 2019

Отличное предложение, это особенность, о которой мы уже давно думаем (https://github.com/tidyverts/fable/issues/74).

Я добавил аргумент .safely к аргументу model(), который будет возвращать отформатированные предупреждения и возвращать null_model() вместо ошибки (https://github.com/tidyverts/fablelite/commit/1c7dccd7e48211125cf566bcce9ba8c9fc4e47ce).

A null_model() - это модель без оценки, и все методы модели (forecast(), accuracy() и т. Д.) Будут давать соответственно структурированные NA значения.

Я установил .safely=TRUE по умолчанию, поэтому приведенный выше код теперь дает:

library(fable)
library(tidyverse)
it <-  tsibbledata::global_economy %>%
  filter(Country == "Italy")
fm1 <-  model(.data = it, 
              ARIMA(log(GDP) ~ Population + pdq(3,1,7) +PDQ(5,1,1)),
              ETS(log(GDP)))
#> Warning: 1 error encountered for ARIMA(log(GDP) ~ Population + pdq(3, 1, 7) + PDQ(5, 1, 1))
#> [1] There are no ARIMA models to choose from after imposing the `order_constraint`, please consider allowing more models.
fm1
#> # A mable: 1 x 3
#> # Key:     Country [1]
#>   Country `ARIMA(log(GDP) ~ Population + pdq(3, 1, 7) + PD… `ETS(log(GDP))`
#>   <fct>   <model>                                           <model>        
#> 1 Italy   <NULL model>                                      <ETS(M,Ad,N)>

Создано в 2019-05-30 пакетом Представить (v0.2.1)

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