我国快消品市场空间大。根据数据,2016 年我国包含包装食品、含酒精饮料、软饮料、日化品在内的快消品零售额为 3.2 万亿元,同比增长 5.1%,市场空间庞大。从流通渠道看,快消品的流通渠道总共可以分为三大类,一类是现代流通渠道,包括大卖场、超市、连锁便利店、品类专卖店;二是电商渠道;三是传统通路,即夫妻店,店主即店员,店面积大小不一,一般在 200 平米以内,主要销售食品饮料烟酒等商品。目前的快消品销售渠道除了传统通路外,还新进入了许多现代通路,比如微商代理。线上快消品销售在整个零售交易额的比重逐年递增,如图1-1。
零售业快消品销售渠道的元化不仅要求商家对产品本身销量预测的高准确性,同时也要求整个零售业快消品供应链上的各节点企业的紧密配合。本文根据零售业所处背景,选择销售渠道单一,内部组织结构较为稳定的大型超市为研究对象,在仅考虑一个企业在某一地区的连锁超市快消品的历史销售数据,采用时间序列分析方法对其销售得快消品进行预测,通过对快消品种类的进一步细分,将大型连锁超市的某一件产品作为预测的对象。本文选取某一大型连锁超市的牛奶历史销售数据进行研究,通过多方验证保证时间序列模型模拟的精确性后,利用最终的模型对牛奶销量进行预测,以得出超市后两年每个月的牛奶销量。本文的意义在于,通过现实条件选择时间序列模型,根据牛奶销量预测的案例阐述快消品预测的过程,进而把这一方法推广到所有快消品销量预测中去。本文不足:对快消品所处背景简单化,仅考虑处于稳定条件下的某一销售渠道下的快消品销量预测。销售预测是指根据以往的销售情况以及使用系统内部内置或用户自定义的销售预测模型获得的对未来销售情况的预测。销售预测可以直接生成同类型的销售计划。销售计划的中心任务之一就是销售预测,无论企业的规模大小、销售人员的多少,销售预测影响到包括计划、预算和销售额确定在内的销售管理的各方面工作。
在统计研究中,常用按时间顺序排列的一组随机变量 ...,X1,X2,....,Xt,...来表示一个随机时间的时间序列,简记为,或者。用{x1,x2,...,xn或xt,t=1,2,...,xn}表示该随机序列的n个有序观测值,称之为序列长度n的观测值序列。时间序列分析法,就是将经济发展、购买力大小、销售变化等同一变数的一组观察值,按时间顺序加以排列,构成统计的时间序列,然后运用一定的数字方法使其向外延伸,预计市场末来的发展变化趋势,确定市场预测值。时间序列分析法的主要特点,是以时间的推移研究来预测市场需求趋势,不受其他外在因素的影响。时间序列分析方法的分类如图2-1所示。
本文主要介绍时域分析法。时域分析法主要是从序列自相关的角度揭示时间序列的发展规律。相对于频谱分析法,时域分析法具有理论基础扎实、操作步骤规范、分析结果易于解释的优点。目前它已广泛应用于自然科学和社会科学的各个领域,成为时间序列分析的主流方法。时域分析方法的基本理论思想是源于事件的发展通常具有一定关系。这种惯性统计的语言来描述就是序列值之间存在一定的相关关系,且这种相关关系具有某种统计规律。时域分析方法的分析步骤如下:
1. 考查观测值序列的特征
2. 根据序列的特征选择适当的拟合模型;
3. 根据序列的观测数据确定模型;
4. 利用拟合好的模型来推断序列其他的统计性质或预测序列将来的发展。
时域分析方法的模型根据时间序列p、q、d来进行确定.p为自回归项,可以看自相关图来估计;MA为移动平均,q为移动平均项数,可以看偏相关图来估计,d为时间序列成为平稳时所做的差分次数。p、d、q与模型选择的关系如表2-1。ARIMA实质是差分运算与ARMA的组合。ARIMA模型要求p、q、d三项大于零。也即原始时间序列具有波动大、存在季节性等稳定时间序列不具备的特征。下文用于牛奶销量预测的时间序列经过验证应该采用ARIMA模型进行分析,所以此处仅针对ARIMA模型进行详细研究。ARIMA模型建模流程图如图2-3。
表2-1 p、d、q与模型选择
时间序列模型 |
p(平稳性) |
q(为移动平均项数) |
D(差分次数) |
AR |
>0 |
=0 |
=0 |
MR |
=0 |
>0 |
=0 |
ARMA |
>0 |
>0 |
=0 |
ARIMA |
>0 |
>0 |
>0 |
特点 |
均值、方差为为常数,量间隔k时段的数据组的协方差相同 |
时序图无上升或下降的趋势 |
呈周期性变化 |
R软件判别方法 |
1. Augmented Dickey-Fuller(ADF)-test 2.Kwiatkowski-Philips-Shin(KPSS)-test |
1.acf、pacf图(直观判断) 2.Mann-Kendal(MK)-test |
时序图 |
R软件判别函数 |
tseries包中的函数adf.test()、acf() |
forecast包中pacf() |
plot() |
library(xlsx) Data<-read.xlsx(“源数据路径”) #把原始数据转化为时间序列 Data1<-ts(data,frequency=12,start=c(2004,1)) #绘制时序图、acf、pacf图 Plot(data1) Acf(data1) Pacf(data1) #自动获取时间序列模型 Auto.arima(data1) Arima1<-arima(data1,order=c(),seasonal=list()) |
#白噪声检验判断数据是否有分析意义 Box.test(data1) #模型拟合原始时间序列 Dataforecast<-HoltWinters(data1) Plot(dataforecast) #模型预测销量图绘制 Dataforecast1<-HoltWinters(dataforecast) Plot(dataforecast) |
1. 假设原始数据命名为data1,利用R软件,流程中涉及的函数表示如下:
经归纳总结,不平稳时间序列主要可以分为三种:
第一种情况:时间序列波动大(var大)。此时可采取的使时间序列平稳的方法是对数据取对数:log(data)
第二种情况:时间序列存在明显趋势(一条直线、上升或下降)。采取办法是做一阶差分:diff(data)。
第三种情况:存在s期季节性。做法是做s阶差分,消除季节性。
三种情况下指数平滑α值的选择分别为α=0.1~0.4、α=0.6~0.8、α=0.6~1.此外,对于平稳时间序列,由于过去数据与当前一致,此时α取较小的值,一般为α=0.05~0.2.
经平稳性检验,判定牛奶销量时间序列具有增长性和季节性,为非平稳数据,通过R软件中forecast程序包自动建模,得出04年到17年的牛奶销量的(p,q,d)值分别为(1,0,1)。在时间序列分析中,只有具有密切相关关系、历史数据对未来的发展有一定影响的序列才值得分析。如果序列值彼此之间没有相关性,则意味着该序列是一个没有记忆的序列,过去的行为对将来的发展没有丝毫影响,这种讯我们称之为纯随机序列。从统计分析的角度来看,纯随机序列是没有任何分析价值的序列。纯随机序列也称为白噪声序列,原因是最初人们发现白光具有纯随机序列的一切特征,如图2-4为随机产生1000个服从标准正态分布的白噪声序列观察值的时序图。
为了确定平稳序列值不值得继续分析下去,我们需要对平稳序列进行纯随机性检验。
白噪声是最简单的纯随机序列,它有两个重要性质在分析中经常要用到。
一、纯随机性
纯随机性指纯随机序列各项之间没有任何相关关系:
方差齐性,是指序列中每个变量的方差都相等:
时间序列分析中,方差齐性是一个非常重要的限制条件。因为根据马尔可夫定理,只有方差齐性假定成立时,我们用最小二乘法得到的未知参数估计值才是准确的、有效的。如果假定不成立,那么最小二成估计值就不是方差最小线性无偏估计,拟合模型的预测精度会受到很大影响。所以在进行模型拟合时,检验内容之一就是要检验拟合模型的残差是否满足方差齐性。如果假定不成立,那么最小二乘估计值就不是方差最小线性无偏估计,拟合模型的预测精度会受到很大影响。
纯随机想检验的方法有两个:Q统计量和LB统计量。根据正态分布和卡方分布之间的关系,我们很容易推导出Q统计量近似服从自由度为m的卡方分布:当Q统计量大于,或该统计量的P值小于a时,则可以以1-a的置信水平拒绝原假设,认为该序列为非白噪声序列;否则,接受原假设,认为该序列为纯随机序列。
LB统计量。经证明,LB统计量同样近似服从自由度为m的卡方分布。
拿到观察值序列之后,无论是采用确定性时序分析方法还是随机时序分析方法,分析的第一步都是要通过有效的手段提取序列中蕴涵的确定性信息。
确定性提取的方法有很多,前面介绍的构造季节指数、拟合长期趋势模型、移动平均、指数平滑等诸多信息的提取方法,但是它们对确定性信息的提取都不够充分。
Box与Jenkins特别强调差分方法的使用,而Cramer分解定理则在理论上保证了适当阶数差分一定可以充分提取确定性信息d。
在R语言中,diff函数可以完成各种差分运算。diff的命令格式如下: diff(x , lag = ,differences = )当序列蕴涵显著的线性趋势,1阶差分就可以实现趋势平稳,序列蕴涵趋势,通常低阶(2阶或者3阶)差分就可以提取曲线趋势。
本文从UCI-MRL上提取了CE超市2004年-2017年牛奶销量进行时间序列分析。采用的数据分析工具为R3.3.4,涉及的R函数分析包有forecast、tseries、TTR。
首先对把牛奶销量数据转化为时间序列值,并画出未处理过的牛奶销量时间序列值的时序图对时间序列值进行初步判断,相关的图有时间序列散点图、acf图、pacf图。
从图中可以看出,04年到17年的牛奶销量是稳定增加的,说明CE超市从04年
到17年运营状况良好。
acf(Autocorrelation Function)相关系数度量的是两个不同事件彼此之间的相互影响程度;而自相关系数度量的是同一事件在两个不同时期之间的相关程度,形象的讲就是度量自己过去的行为对自己现在的影响。自相关函数等同于自协方差(autocovariance)。在多元相关分析中,简单相关系数可能不能够真实的反映出变量X和Y之间的相关性,因为变量之间的关系很复杂,它们可能受到不止一个变量的影响。这个时候pacf偏相关系数是一个更好的选择。
偏相关系数是在排除了其他变量的影响下计算变量间的相关系数。假设我们需要计算X和Y之间的相关性,Z代表其他所有的变量,X和Y的偏相关系数可以认为是X和Z线性回归得到的残差Rx与Y和Z线性回归得到的残差Ry之间的简单相关系数,即pearson相关系数。从图3-2看出,时间序列值的相关系数并没有急速降到规定范内,说明相关系数存在拖尾现象,拖尾是在acf和pacf图中主要的描述。上述的pacf图中的拖尾现象并不明显,超出范围的部分可能是由于异常值导致的。同时相关系数只存在于0的上侧,说明时间序列值呈单调递增的趋势。初步判断可以选择AR模型。
我们用时间序列值的分解图近一步进行说明,如图3-4。
时间序列分解图从时间序列的随机性、季节性、趋势性、原始时间序列描述四个方面对时间序列进行描述。时间序列分析主要有确定性变化分析和随机性变化分析。其中,确定性变化分析包括趋势变化分析、周期变化分析、 循环变化分析。随机性变化分析:有AR、MA、ARMA模型。时间序列的随机性是指时间序列各项之间没有相关关系的特征。可以使用自相关分析图判断。图3-4表明时间序列为具有一定随机性、明显的季节性、单调递增且具有较大的波动性的时间序列。
清楚时间序列的具体特征后,我们对时间序列值取对数,并消除其季节性之后,将其拟合为AR模型。消除季节性后的时间序列如图3-5。采用R软件对时间序列进行拟合,得出(p,q,d)为(1,0,1)。消除季节性的模型图与原始的时间序列图大致吻合,说明模型具有很好的拟合性。
得到预测模型为ARIMA(1,0,1)。对预测模型ARIMA(1,0,1)进行自相关系数、偏相关系数检验,发现预测模型不存在过度差分的情况,acf、pacf都在规定范围内,系数没有拖尾并均匀分布在0的两侧,说明模型很好地消除了时间序列的趋势性,模型使时间序列变得足够平稳。
对ARIMA(1,0,1)模型进行纯随机性检验,根据ARIMA(1,0,1)方差的qq图和直方图可以看到拟合模型的方差呈正态分布,方差基本在一条直线上。说明时间序列值具有正相关性,进行平稳后的时间序列拟合的模型ARIMA(1,0,1)具有预测意义。我们利用ARIMA(1,0,1)预测CE超市2018年、2019年的牛奶销量,如图3-10,预测部分未蓝色部分,从中得出,预测部分和历史数据具有相同的趋势和季节性。
预测得到2018年到2019年每月的销量具体如表3-1。R软件给出了预测置信度为0.8和置信度为0.95的最小销量和最大销量。
表3-1 CE超市2018年到2019年每月牛奶销量预测
year |
month |
Point Forecast |
Lo 80 |
Hi 80 |
Lo 95 |
Hi 95 |
2018 |
Jan |
870.31 |
859 |
880 |
854 |
886 |
2018 |
Feb |
828.6 |
815 |
841 |
809 |
848 |
2018 |
Mar |
937.1 |
922 |
951 |
914 |
959 |
2018 |
Apr |
947.09 |
930 |
963 |
922 |
972 |
2018 |
May |
1007.7 |
989 |
1025 |
980 |
1035 |
2018 |
Jun |
977.99 |
958 |
997 |
948 |
1007 |
2018 |
Jul |
934 |
913 |
954 |
902 |
965 |
2018 |
Aug |
891.29 |
869 |
913 |
857 |
924 |
2018 |
Sep |
842.72 |
819 |
865 |
807 |
878 |
2018 |
Oct |
846.97 |
822 |
871 |
809 |
883 |
2018 |
Nov |
813.88 |
788 |
839 |
775 |
852 |
2018 |
Dec |
858.2 |
831 |
884 |
818 |
898 |
2019 |
Jan |
885.64 |
857 |
913 |
842 |
928 |
2019 |
Feb |
843.93 |
815 |
872 |
799 |
888 |
2019 |
Mar |
952.44 |
922 |
982 |
906 |
998 |
2019 |
Apr |
962.43 |
931 |
993 |
915 |
1009 |
2019 |
May |
1023.04 |
991 |
1054 |
974 |
1071 |
2019 |
Jun |
993.34 |
960 |
1025 |
943 |
1042 |
2019 |
Jul |
949.64 |
916 |
982 |
898 |
1000 |
2019 |
Aug |
906.63 |
872 |
940 |
854 |
958 |
2019 |
Sep |
858.06 |
823 |
892 |
804 |
911 |
2019 |
Oct |
862.31 |
826 |
897 |
807 |
916 |
2019 |
Nov |
829.21 |
792 |
865 |
773 |
884 |
2019 |
Dec |
873.54 |
836 |
910 |
816 |
930 |