Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用tslm()预测时间序列组(&;三角帆_R_Time Series_Tidyverse - Fatal编程技术网

R 使用tslm()预测时间序列组(&;三角帆

R 使用tslm()预测时间序列组(&;三角帆,r,time-series,tidyverse,R,Time Series,Tidyverse,我想使tslm模型适合每个时间序列组。 我遵循的是ets模型的示例,但我不想拟合ets模型,而是想拟合tslm 我调整了代码,使其如下所示: library(tidyverse) library(timetk) library(sweep) library(forecast) monthly_qty_by_cat2 <- bike_sales %>% mutate(order.month = as_date(as.yearmon(order.date))) %>%

我想使tslm模型适合每个时间序列组。 我遵循的是ets模型的示例,但我不想拟合ets模型,而是想拟合tslm

我调整了代码,使其如下所示:

library(tidyverse)
library(timetk)
library(sweep)
library(forecast)

monthly_qty_by_cat2 <- 
  bike_sales %>%
  mutate(order.month = as_date(as.yearmon(order.date))) %>%
  group_by(category.secondary, order.month) %>%
  summarise(total.qty = sum(quantity)) %>% 
  mutate(trendx = row_number())

monthly_qty_by_cat2_nest <- 
  monthly_qty_by_cat2 %>%
  group_by(category.secondary) %>%
  nest() %>%
  mutate(data.ts = map(.x       = data, 
                       .f       = tk_ts, 
                       select   = -order.month, 
                       start    = 2011,
                       freq     = 12)) %>%
  mutate(fit.ts = map(data.ts, ~tslm(total.qty ~ season, data=.x))) %>%
  mutate(fcast.ts = map(fit.ts, forecast))

我得到一个错误:

错误:
mutate()
input
fcast.ts
有问题。 找不到x对象“trendx” 输入
fcast.ts
map(fit.ts,forecast)

如何使用tslm模型中的自定义预测器预测这些数据

编辑 为了使用fable软件包,我重写了代码:

monthly_qty_by_cat2 <- 
  bike_sales %>%
  mutate(order.month = as_date(as.yearmon(order.date))) %>%
  group_by(category.secondary, order.month) %>%
  summarise(total.qty = sum(quantity)) %>% 
  mutate(trendx = row_number())

monthly_qty_by_cat2_nest <- 
  monthly_qty_by_cat2 %>%
  group_by(category.secondary) %>% 
  as_tsibble(key = category.secondary)
  
monthly_qty_by_cat2_nest %>%
  model(tslm = TSLM(total.qty ~ trendx)) %>% 
  forecast()
按类别划分的每月数量2%
变异(order.month=as_date(as.yearmon(order.date)))%>%
分组依据(类别.次要,订单.月份)%>%
汇总(总数量=总和(数量))%>%
突变(trendx=行数()
每月数量(按类别2)
组别(中学组别)%>%
as_tsible(key=category.secondary)
每月按类别2分类的数量%>%
型号(tslm=tslm(总数量~trendx))%>%
预测()
并接收错误:

错误:
mutate()
input
tslm
有问题。 找不到x对象“trendx” 无法根据提供的新数据计算所需变量。 您的模型是否需要额外的变量来生成预测

库(tidyverse)
图书馆(TSIBLE)
图书馆(寓言)
图书馆(lubridate)
按类别划分的每月数量2%
突变(order.month=yearmonth(order.date))%>%
分组依据(类别.次要,订单.月份)%>%
汇总(总数量=总和(数量))%>%
as_tsible(索引=order.month,键=category.secondary)%>%
变异(x=rnorm(长度(总数量)))
#>`summary()`按'category.secondary'重新分组输出(用'.groups'参数重写)
未来x%
突变(x=2)
每月数量(按类别2%>%
型号(tslm=tslm(总数量~趋势()+x))%>%
预测(新数据=未来数据)
#>#寓言:9x6[1M]
#>#键:category.secondary、.model[9]
#>类别.二级.型号订单.月总数.数量平均数x
#>                                     
#>2016年1月1日越野赛tslm(369187840)369。2.
#>2 Cyclocross tslm 2016年1月N日(-2.575604)-2.50 2
#>3 Elite Road tslm 2016年1月N日(78432470)784。2.
#>4耐力路tslm 2016年1月N日(159117760)159。2.
#>5肥胖自行车tslm 2016年1月N(9566320)94.6 2
#>6山地tslm 2016年1月N日(19457732)194。2.
#>7体育tslm 2016年1月N日(12081568)120。2.
#>2016年1月第8次tslm试验N(21456269)214。2.
#>9 Triathalon tslm 2016年1月N(10294449)102。2.

由(v0.3.0)于2020年7月20日创建的寓言软件包就是为了实现这一点而设计的。如果没有可复制的数据结构示例,我无法提供更多帮助。bike_sales是随sweep package提供的数据集。我编辑了代码,使用了fable package,但仍然收到错误。在我的示例中,我使用了“trendx”,它是一个虚拟变量,而不是trend()。使用trend()或season()可以很好地工作,当我尝试使用额外的预测器时会出现问题。您可以像往常一样使用任何额外的预测器。你不需要在这里使用一个,因为trend()将为你创建相关变量。如果我使用任何额外的预测器,我会得到这个错误“object”,我已经更新了我的答案来说明如何做。如果使用其他预测值,则必须提供这些变量的未来值。
mutate(fit.ts = map(data.ts, ~tslm(total.qty ~ trendx, data=.x)))
monthly_qty_by_cat2 <- 
  bike_sales %>%
  mutate(order.month = as_date(as.yearmon(order.date))) %>%
  group_by(category.secondary, order.month) %>%
  summarise(total.qty = sum(quantity)) %>% 
  mutate(trendx = row_number())

monthly_qty_by_cat2_nest <- 
  monthly_qty_by_cat2 %>%
  group_by(category.secondary) %>% 
  as_tsibble(key = category.secondary)
  
monthly_qty_by_cat2_nest %>%
  model(tslm = TSLM(total.qty ~ trendx)) %>% 
  forecast()