【问题标题】:NULL model when specifying window for MEAN (fable)为 MEAN 指定窗口时的 NULL 模型(寓言)
【发布时间】:2021-08-03 19:22:34
【问题描述】:

我是 R Coding 和 Fable 的新手,目前正在创建一些基本的移动平均预测模型,我的目的是创建几个采用不同周期长度的平均值。
我尝试指定~window for MEAN(),但它返回NULL 模型。

这是一些测试数据:

Units <- sample(1:30)
Date  <- ymd(paste0("2019-01-",1:30))
key[1:30] <- "test1"
trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
  as_tsibble(index=Date, key=key)

fit <- trial %>% 
  model(Avg = MEAN(Units~window(size = 12)))

运行代码我得到以下结果:


> Units <- sample(1:30)
> Date  <- ymd(paste0("2019-01-",1:30))
> key[1:30] <- "test1"
> trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
+   as_tsibble(index=Date, key=key)
> 
> fit <- trial %>% 
+   model(Avg = MEAN(Units~window(size = 12)))
Advarselsbesked:
1 error encountered for Avg
[1] `slide()` was deprecated in tsibble 0.9.0 and is now defunct.
Please use `slider::slide()` instead.
 
> 
> fit
# A mable: 1 x 2
# Key:     key [1]
  key            Avg
  <chr>      <model>
1 test1 <NULL model>

任何关于我如何让MEAN() 仅取最后 12 次观察的平均值的指针,将不胜感激。

【问题讨论】:

    标签: forecasting forecast fable


    【解决方案1】:

    这适用于使用最新版本的软件包:

    library(tsibble)
    library(fable)
    library(lubridate)
    library(dplyr)
    
    Units <- sample(1:30)
    Date  <- ymd(paste0("2019-01-",1:30))
    key <- "test1"
    trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
      as_tsibble(index=Date, key=key)
    
    fit <- trial %>% 
      model(Avg = MEAN(Units ~ window(size = 12)))
    
    # .fitted shows mean of previous 12 observations
    augment(fit) %>% tail()
    #> # A tsibble: 6 x 7 [1D]
    #> # Key:       key, .model [1]
    #>   key   .model Date       Units .fitted .resid .innov
    #>   <chr> <chr>  <date>     <int>   <dbl>  <dbl>  <dbl>
    #> 1 test1 Avg    2019-01-25    24    16.4   7.58   7.58
    #> 2 test1 Avg    2019-01-26    27    18.1   8.92   8.92
    #> 3 test1 Avg    2019-01-27    26    18.9   7.08   7.08
    #> 4 test1 Avg    2019-01-28    18    20.5  -2.5   -2.5 
    #> 5 test1 Avg    2019-01-29    11    19.6  -8.58  -8.58
    #> 6 test1 Avg    2019-01-30     3    20.1 -17.1  -17.1
    
    # Check
    mean(trial$Units[18:29])
    #> [1] 20.08333
    

    由reprex package (v2.0.0) 于 2021-08-04 创建

    【讨论】:

    • 谢谢!更新软件包解决了这个问题。
    猜你喜欢
    • 2022-07-29
    • 1970-01-01
    • 2020-08-22
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多