预测多个产品数据
forecasting multiples products data
我想预测接下来的 5 个订单以及每个订单中 3 种产品的数量。
我是使用 r
和 timeseries
的初学者,我看到了使用 arima
的示例,但它们仅适用于衡量一个事物,而不是像我的示例中的多个产品。
我应该使用华宇吗?
我应该怎么做?
抱歉我的英语不好。提前谢谢你。
dateordrer,product1,product2,product3
12/01/2012,2565,3254,635
25/01/2012,2270,3254,670
01/03/2012,2000,785,0
05/05/2012,300,3254,750
26/06/2012,3340,0,540
30/06/2012,0,3254,0
21/06/2012,3360,3356,830
01/07/2012,2470,3456,884
03/07/2012,3680,3554,944
05/07/2012,2817,3854,0
09/07/2012,4210,4254,32
09/08/2012,0,3254,1108
13/09/2012,4560,5210,952
25/09/2012,4452,4256,1143
31/09/2012,5090,5469,199
25/11/2012,5100,5569,0
10/12/2012,5440,5789,1323
11/12/2012,5528,5426,1350
你的问题太笼统了,所以只能笼统的回答。此外,这个问题更多地与预测理论有关,而不是 R
。
我会给你两个指导,让你开始......
您似乎需要做一些预处理,即:您的时间间隔是多少?你的基本时间单位是什么? (周?月?)。您应该根据该时间单位聚合数据。对于这些类型的操作,您可以使用 tidyr
和 lubridate
包。这是我稍微整理后的数据集示例:
data.raw <- read_csv("data1.csv") %>%
mutate(date.re = as.POSIXct(dateordrer, format = "%d/%m/%Y"))
complete.dates <- range(data.raw$date.re)
dates.seq <- seq(complete.dates[1], complete.dates[2], by = "month")
系列 <- data.frame(sale.month = 月(dates.seq), sale.year = 年(dates.seq))
data.post <- data.raw %>%
mutate(sale.month = month(date.re), sale.year = year(date.re)) %>%
select(product1:product3, sale.month, sale.year) %>%
group_by(sale.month, sale.year) %>%
summarize_all(funs(sum(.))) %>%
right_join(series) %>%
replace_na(list(product1 = 0, product2 = 0, product3 = 0))
看起来像这样:
sale.month sale.year product1 product2 product3
1 2012 4835 6508 1305
2 2012 0 0 0
3 2012 2000 785 0
4 2012 0 0 0
etc...
看到第 2 个月和第 4 个月没有数据(最初),因此它们显示为 0。
请注意,不要掉以轻心进行预处理,我使用月作为基本单位,但这可能不正确或与您的目标不相关。您甚至可以在继续并尝试查看不同的聚合是否提供更好的结果后修改它。
- 只有在预处理之后你才能转向预测。如果三个产品是独立的,则可以独立预测它们(例如使用 Arima / Holt-Winters / 任何其他模型 * 三次)。但是,您拥有三个可能相互关联的产品这一事实将我们引向分层时间序列(包
hts
)。当各种产品之间存在统计关系时,此包中的函数 hts()
能够最佳拟合预测模型。例如,当某种产品与另一种产品(补充产品)一起购买时,或者当您缺货时,这会导致出现不同的产品(替代产品)。
由于这对于如此广泛的主题来说远非独立的,下一个最好的办法是查看以下在线书籍:
Forecasting: principles and practice
作者:Hyndman 和 Athanasopoulos。当我开始研究时间序列时,我读到了它。这是一本很好的书。具体来说,对于多个时间序列,您应该涵盖章节:
9.4 Forecasting hierarchical or grouped time series
确保您还阅读了那本书的第 7 章(在转到 9.4 之前)。
我想预测接下来的 5 个订单以及每个订单中 3 种产品的数量。
我是使用 r
和 timeseries
的初学者,我看到了使用 arima
的示例,但它们仅适用于衡量一个事物,而不是像我的示例中的多个产品。
我应该使用华宇吗? 我应该怎么做?
抱歉我的英语不好。提前谢谢你。
dateordrer,product1,product2,product3
12/01/2012,2565,3254,635
25/01/2012,2270,3254,670
01/03/2012,2000,785,0
05/05/2012,300,3254,750
26/06/2012,3340,0,540
30/06/2012,0,3254,0
21/06/2012,3360,3356,830
01/07/2012,2470,3456,884
03/07/2012,3680,3554,944
05/07/2012,2817,3854,0
09/07/2012,4210,4254,32
09/08/2012,0,3254,1108
13/09/2012,4560,5210,952
25/09/2012,4452,4256,1143
31/09/2012,5090,5469,199
25/11/2012,5100,5569,0
10/12/2012,5440,5789,1323
11/12/2012,5528,5426,1350
你的问题太笼统了,所以只能笼统的回答。此外,这个问题更多地与预测理论有关,而不是 R
。
我会给你两个指导,让你开始......
您似乎需要做一些预处理,即:您的时间间隔是多少?你的基本时间单位是什么? (周?月?)。您应该根据该时间单位聚合数据。对于这些类型的操作,您可以使用
tidyr
和lubridate
包。这是我稍微整理后的数据集示例:data.raw <- read_csv("data1.csv") %>% mutate(date.re = as.POSIXct(dateordrer, format = "%d/%m/%Y")) complete.dates <- range(data.raw$date.re) dates.seq <- seq(complete.dates[1], complete.dates[2], by = "month")
系列 <- data.frame(sale.month = 月(dates.seq), sale.year = 年(dates.seq))
data.post <- data.raw %>% mutate(sale.month = month(date.re), sale.year = year(date.re)) %>% select(product1:product3, sale.month, sale.year) %>% group_by(sale.month, sale.year) %>% summarize_all(funs(sum(.))) %>% right_join(series) %>% replace_na(list(product1 = 0, product2 = 0, product3 = 0))
看起来像这样:
sale.month sale.year product1 product2 product3
1 2012 4835 6508 1305
2 2012 0 0 0
3 2012 2000 785 0
4 2012 0 0 0
etc...
看到第 2 个月和第 4 个月没有数据(最初),因此它们显示为 0。 请注意,不要掉以轻心进行预处理,我使用月作为基本单位,但这可能不正确或与您的目标不相关。您甚至可以在继续并尝试查看不同的聚合是否提供更好的结果后修改它。
- 只有在预处理之后你才能转向预测。如果三个产品是独立的,则可以独立预测它们(例如使用 Arima / Holt-Winters / 任何其他模型 * 三次)。但是,您拥有三个可能相互关联的产品这一事实将我们引向分层时间序列(包
hts
)。当各种产品之间存在统计关系时,此包中的函数hts()
能够最佳拟合预测模型。例如,当某种产品与另一种产品(补充产品)一起购买时,或者当您缺货时,这会导致出现不同的产品(替代产品)。
由于这对于如此广泛的主题来说远非独立的,下一个最好的办法是查看以下在线书籍:
Forecasting: principles and practice
作者:Hyndman 和 Athanasopoulos。当我开始研究时间序列时,我读到了它。这是一本很好的书。具体来说,对于多个时间序列,您应该涵盖章节:
9.4 Forecasting hierarchical or grouped time series
确保您还阅读了那本书的第 7 章(在转到 9.4 之前)。