当当当当现在开始跑程序了
Step 1:导入数据
我们用的是《商务与经济统计》中的时间序列分析数据,这是一个关于四年每个季度电视销售数量的数据,先上代码:
>path<-"F:/商务与经济统计(原书第11版)光盘内容/数据文件/第18章/TVSales.csv"
>TVsales<-read.csv(path,header=TRUE)
>TVsales
Year Quarter Sales..1000s.
1 1 1 4.8
2 1 2 4.1
3 1 3 6.0
4 1 4 6.5
5 2 1 5.8
6 2 2 5.2
7 2 3 6.8
8 2 4 7.4
9 3 1 6.0
10 3 2 5.6
11 3 3 7.5
12 3 4 7.8
13 4 1 6.3
14 4 2 5.9
15 4 3 8.0
16 4 4 8.4
第一列是年份,第二列是季度,第三列是销售量(每千台)
Step 2:绘制时间序列图
TVsalestimeseries<-ts(TVsales$Sales..1000s.,frequency =4)
TVsalestimeseries
Qtr1 Qtr2 Qtr3 Qtr4
1 4.8 4.1 6.0 6.5
2 5.8 5.2 6.8 7.4
3 6.0 5.6 7.5 7.8
4 6.3 5.9 8.0 8.4
plot.ts(TVsalestimeseries)
这里的ts的是将数据转存到一个时间序列对象中,然后绘制时间序列图(忽略我丑丑的图)
从图中可以很明显地看出,曲线按年呈现类似周期性的变化,且整体呈现上升趋势,因而为季节与趋势模式,然后我们用decompose()函数对其进行分解。
Step 3:分解时间序列
TVsalestimeseriescompents<-decompose(TVsalestimeseries)
plot(TVsalestimeseriescompents)
以上四幅图中,分别为原始时间序列数据、数据的趋势、季节性因素以及剔除了趋势和季节性因素之后的随机成分,我们可以将它们提取出来。
plot(TVsalestimeseriescompents$seasonal,type="b",main='季节对销售的影响')
从上图可以看出,每年第二季度销售量进入低谷,第四季度达到高峰,这也明显对应着人们观看电视兴趣的直观期望,即第二季度由于春季和初夏的户外活动,减少了潜在消费者观看电视的兴趣;第四季度由于冬季即将到来人们减少了户外活动,因此电视购买模式趋向于峰值。
然后,我们看一下消除季节影响的时间序列:
TVsalestimeseriesadjusted<-TVsalestimeseries-TVsalestimeseriescompents$seasonal
plot(TVsalestimeseriesadjusted,main='消除季节影响的电视机销售量时间序列')
消除季节影响后,可以看出,电视的销售量呈现出逐年上升的趋势。
Step 4:预测未来一年的销售数量
在这里,我们采用Holt-Winters指数平滑法对数据进行预测
TVsalestimeseriesforecasts<-HoltWinters(TVsalestimeseries)
plot(TVsalestimeseriesforecasts)
由图知,曲线很好的拟合了原始数据,然后我们要用forecast包预测未来一年的数据:
library(forecast)
TVsalestimeseriesforecasts2<-forecast.HoltWinters(TVsalestimeseriesforecasts,h=4)
TVsalestimeseriesforecasts2
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
5 Q1 7.693695 7.207385 8.180005 6.949948 8.437442
5 Q2 7.118695 6.523164 7.714226 6.207909 8.029481
5 Q3 8.868695 8.181078 9.556311 7.817076 9.920314
5 Q4 9.343695 8.574945 10.112444 8.167993 10.519396
以上,我们预测了未来一年每个季度的数据,并分别给出80%和95%的置信区间,然后画个图看看:
plot.forecast(TVsalestimeseriesforecasts2)
以上,蓝色的部分就是预测值,阴影部分便分别是80%和95%的置信区间。
至此,时间序列分析就算完成了,然后,我来说说一说我参考的资料吧:
网络资源:R语言时间序列初探
书籍:《商务与经济统计》 David R.Anderson (辛辛提那大学)、Dennis J.Sweeney(辛辛提那大学)、Thomas A .Williams(罗切斯特理工学院)著
《R语言与数据挖掘最佳实践与经典案例》 Yanchang Zhao 著