尝试寓言来处理错误

时间:2019-05-22 23:43:52

标签: r

此代码正常工作

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的正确结果和ARIMA的“ try-error”类对象

可能会修改fablelite ::: estimate,以便它可以处理错误,这是解决方案吗?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

很好的建议,这是我们已经考虑了一段时间的功能(https://github.com/tidyverts/fable/issues/74)。

我在if(a) b=a if(a) b=true 参数上添加了.safely参数,它将返回格式化的警告并返回model()而不是错误(https://github.com/tidyverts/fablelite/commit/1c7dccd7e48211125cf566bcce9ba8c9fc4e47ce)。

null_model()是一个没有估计的模型,所有模型方法(null_model()forecast()等)将给出适当结构化的accuracy()值。

我将NA设置为默认值,因此上述代码现在提供:

.safely=TRUE

reprex package(v0.2.1)于2019-05-30创建