大数跨境
0
0

R实战—基于AMIMA餐厅销售时间序列分析

R实战—基于AMIMA餐厅销售时间序列分析 大话数据分析
2019-10-06
0
导读:基于ARIMA模型,做餐厅销售量预测分析

近几天郑州下雨
气温骤降
已经习惯于夏季结束后
冬季的到来
已然蜷缩一团
所以,天气转凉,自己多穿点
一个人的时候
自己照顾好自己!
2019年马上过去,我也正在忙一件大事
至于是什么
暂时保密,我也不知道能不能实现
暂且消失一段时间
大家等我消息好了

本文选取2015年1月1日到2015年2月6日某餐厅的菜品销售数据进行建模。对数据进行预处理,建立ARIMA时间序列模型,做平稳性检验,并作一阶差分,通过模型识别与定阶,建立ARIMA(1,1,0)模型,最后应用选定的时间序列方法预测未来的餐厅菜品销售量。
我们预测出,未来五天的餐厅菜品销售量分别为4856.4、4881.4、4897.3、4897.3、4907.4

研究背景

由于餐饮行业是生产和销售同时进行的,因此销售预测对于餐饮企业十分必要。如何基于菜品历史销售数据,做好餐饮销售预测,以便减少菜品脱销现象和避免因备料不足而造成的生产延误,从而减少菜品生产等待时间,提供给客户更优质的服务,同时可以减少安全库存量,做到生产准时制,降低物流成本,餐饮销售预测可以看作是基于时间序列的短期数据预测,预测对象为菜品销售量。

问题分析

在实际生活中,自然界中绝大部分序列都是非平稳的。因而对非平稳序列的分析更普遍、更重要,创造出来的分析方法也更多。对非平稳时间序列的分析方法可以分为确定性因素分解的时序分析和随机时序分析两大类。确定性因素分解的方法把所有序列的变化都归结为四个因素(长期趋势、季节变动、循环变动和随机波动)的综合影响,其中长期趋势和季节变动的规律性信息通常比较容易提取,而由随机因素导致的波动则非常难以确定和分析,对随机信息浪费严重,会导致模型拟合精度不够理想。随机时序分析法的发展就是为了弥补确定性因素分解方法的不足。根据时间序列的不同特点,随机时序分析可以建立的模型有ARIMA模型、残差自回归模型、季节模型、异方差模型等。

模型建立与求解

首先,我们从网站上搜取数据,数据来源于网络
日期
销量
日期
销量
2015/1/1
3023
2015/1/19
3421
2015/1/2
3039
2015/1/20
3443
2015/1/3
3056
2015/1/21
3428
2015/1/4
3138
2015/1/22
3554
2015/1/5
3188
2015/1/23
3615
2015/1/6
3224
2015/1/24
3646
2015/1/7
3226
2015/1/25
3614
2015/1/8
3029
2015/1/26
3574
2015/1/9
2859
2015/1/27
3635
2015/1/10
2870
2015/1/28
3738
2015/1/11
2910
2015/1/29
3707
2015/1/12
3012
2015/1/30
3827
2015/1/13
3142
2015/1/31
4039
2015/1/14
3252
2015/2/1
4210
2015/1/15
3342
2015/2/2
4493
2015/1/16
3365
2015/2/3
4560
2015/1/17
3339
2015/2/4
4637
2015/1/18
3345
2015/2/5
4755
运用ARIMA模型对非平稳时间序列进行建模,研究思路图如下。
图1 研究思路图

差分运算

p阶差分:相距一期的两个序列值之间的减法运算称为1阶差分运算。
k步差分:相距k期的两个序列值之间的减法运算称为k步差分运算。

ARIMA模型

差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后会显示出平稳序列的性质,这时称这个非平稳序列为差分平稳序列。对差分平稳序列可以使用ARMA模型进行拟合ARIMA模型的实质就是差分运算与ARMA模型的组合,掌握了ARMA模型的建模方法和步骤以后,对序列建立ARIMA模型是比较简单的。差分平稳时间序列建模步骤下图所示。
图2 ARMA模型建模流程图

序列平稳性检验

图3 时序图
由时序图可以看出,该序列具有明显的单调递增趋势,可以判断为是非平稳序列。
图4 自相关图
由自相关图可以看出,自相关系数长期大于零,说明序列间具有很强的长期相关性。

单位根检验

stat
cValue
p值
3.6862
-1.9486
0.9748
单位根检验统计量对应的p值显著大于0.05,最终将该序列判断为非平稳序列。

一阶差分

图5 时序图
一阶差分之后序列的时序图在均值附近比较平稳的波动。
图6 自相关图
自相关图有很强的短期相关性。
一阶差分后序列的单位根检验
stat
cValue
p值
-2.6532
-1.9489
0.0169
一阶差分后序列的白噪声检验
stat
cValue
p值
101.6541
12.5916
0.0007
单位根检验p值小于0.05,所以一阶差分之后的序列是平稳序列。

模型定阶

图7 一阶差分后偏自相关图
一阶差分后自相关图显示出1阶截尾,偏自相关图显示出拖尾性,考虑用MA(1)模型拟合1阶差分后的序列,即对原始序列建立ARIMA(0,1,1)模型。
对一阶差分后的序列拟合AR(1)模型进行分析。
模型检验:
残差为白噪声序列,p值为0.627016。
参数检验和参数估计:
对时间序列使用ARIMA(1,1,0)模型,对一阶时间序列使用了ARMA(1,0)模型。估计的参数为0.6353,AIC值为417.68。

ARIMA模型预测

应用ARIMA(1,1,0)对表2015年1月1日到2015年2月6日某餐厅的销售数据做为期5天的预测,结果如下:
2/7
2/8
2/9
2/10
2/11
4856.4
4881.4
4897.3
4897.3
4907.4
图8 销售量散点图
由销售量的散点图,我们可以看出,随着时间的变化,销售量逐渐递增。
本文所使用的代码如下所示:
ARIMA模型程序:library(forecast)library(fUnitRoots)Data <- read.csv("C:/Users/27342/Desktop/arima_data.csv", header = TRUE)[, 2]sales <- ts(Data)plot.ts(sales, xlab = "时间", ylab = "销量 / 元")# 单位根检验unitrootTest(sales)# 自相关图acf(sales)# 一阶差分difsales <- diff(sales)plot.ts(difsales, xlab = "时间", ylab = "销量残差 / 元")# 自相关图acf(difsales)# 单位根检验unitrootTest(difsales)# 白噪声检验Box.test(difsales, type="Ljung-Box") # 偏自相关图pacf(difsales)# ARIMA(1,1,0)模型arima <- arima(sales, order = c(1, 1, 0))arimaforecast <- forecast(arima, h = 5, level = c(99.5))forecast
【声明】内容源于网络
0
0
大话数据分析
数据分析的收集者、整理者、分享者、实践者
内容 408
粉丝 0
大话数据分析 数据分析的收集者、整理者、分享者、实践者
总阅读80
粉丝0
内容408