【问题标题】:fable: Error: Problem with `mutate()` input `arima`寓言:错误:`mutate()` 输入 `arima` 出现问题
【发布时间】:2020-12-29 10:01:01
【问题描述】:

这是我的代码:

library(fpp3)
val <- seq(1,100,1)
time <- seq.Date(as.Date("2010-01-01"),  by = "day", length.out =  100 )
df <- data.frame(val = val, time = time)
fit <- df %>% as_tsibble(., index = time) %>% 
  model(arima = ARIMA(val))

fc<- fit %>% forecast(h=7)

它生成:

Error: Problem with `mutate()` input `arima`.
x Input must be a vector, not a `fcdist` object.
i Input `arima` is `(function (object, ...) ...`.

这与example 基本相同。我错过了什么?我已经仔细检查过胖手指错误。

【问题讨论】:

    标签: r time-series forecast fable-r


    【解决方案1】:

    fableTools ‘0.2.1’fpp3 0.3 工作正常

    fit %>%
         forecast(h = 7)
    # A fable: 7 x 4 [1D]
    # Key:     .model [1]
    #  .model time             val .mean
    #  <chr>  <date>        <dist> <dbl>
    #1 arima  2010-04-11 N(100, 1)   100
    #2 arima  2010-04-12 N(100, 2)   100
    #3 arima  2010-04-13 N(100, 3)   100
    #4 arima  2010-04-14 N(100, 4)   100
    #5 arima  2010-04-15 N(100, 5)   100
    #6 arima  2010-04-16 N(100, 6)   100
    #7 arima  2010-04-17 N(100, 7)   100
    

    【讨论】:

    • 你的fpp3是什么版本?
    • 它是 0.3。你能检查一下吗
    • 我在R 4.0.2上使用了dplyr 1.0.1
    • 我将我的 R 更新到 4.0.2 版本,它解决了所有问题
    • @user1700890 我过去也遇到过fable 的问题。我认为它仍在开发中
    【解决方案2】:

    可能是命名空间问题。例如,加载了一些包,它们掩盖了fablefabletools 函数。

    在这种情况下很容易发生,因为您仅通过 library(fpp3) 调用加载了 fablefabletools。 你没有打电话给例如fable::forecast 在您的代码中,您之前也没有加载 library(fable)

    当您只加载library(fpp3) 时,它不会屏蔽fable 的功能。

    例如

    library(forecast)
    library(fpp3)
    

    在这种情况下,您的代码将调用forecast::forecast()library(fpp3) 调用不会屏蔽其他包的 forecastmodelARIMA 函数。因此,如果您之前在命名空间中加载了 forecast,在这种情况下,您将调用 forecast::forecast() 而不是 fable::forecast()

    如果你打电话

    library("fpp3")
    library("forecast")
    

    你得到:

    Attache Paket: ‘forecast’
    
    The following objects are masked from ‘package:fabletools’:
       accuracy, forecast
    

    因此,如果您之前调用过library(fable)library(fabletools),也许它会起作用,因为这样可以确保类似的命名函数被屏蔽。或使用fabletools::。这也可能是它在更新后工作的原因......因为命名空间当时没有其他功能和加载的包。

    【讨论】: