R语言与时间序列分析(二)

当当当当现在开始跑程序了

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的是将数据转存到一个时间序列对象中,然后绘制时间序列图(忽略我丑丑的图)

Paste_Image.png

从图中可以很明显地看出,曲线按年呈现类似周期性的变化,且整体呈现上升趋势,因而为季节与趋势模式,然后我们用decompose()函数对其进行分解。

Step 3:分解时间序列

TVsalestimeseriescompents<-decompose(TVsalestimeseries)
plot(TVsalestimeseriescompents)
Paste_Image.png

以上四幅图中,分别为原始时间序列数据、数据的趋势、季节性因素以及剔除了趋势和季节性因素之后的随机成分,我们可以将它们提取出来。

plot(TVsalestimeseriescompents$seasonal,type="b",main='季节对销售的影响')
Paste_Image.png

从上图可以看出,每年第二季度销售量进入低谷,第四季度达到高峰,这也明显对应着人们观看电视兴趣的直观期望,即第二季度由于春季和初夏的户外活动,减少了潜在消费者观看电视的兴趣;第四季度由于冬季即将到来人们减少了户外活动,因此电视购买模式趋向于峰值。

然后,我们看一下消除季节影响的时间序列:

TVsalestimeseriesadjusted<-TVsalestimeseries-TVsalestimeseriescompents$seasonal
plot(TVsalestimeseriesadjusted,main='消除季节影响的电视机销售量时间序列')

Paste_Image.png

消除季节影响后,可以看出,电视的销售量呈现出逐年上升的趋势。

Step 4:预测未来一年的销售数量

在这里,我们采用Holt-Winters指数平滑法对数据进行预测

TVsalestimeseriesforecasts<-HoltWinters(TVsalestimeseries)
plot(TVsalestimeseriesforecasts)
Paste_Image.png

由图知,曲线很好的拟合了原始数据,然后我们要用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)
Paste_Image.png

以上,蓝色的部分就是预测值,阴影部分便分别是80%和95%的置信区间。
至此,时间序列分析就算完成了,然后,我来说说一说我参考的资料吧:
网络资源:R语言时间序列初探
书籍:《商务与经济统计》 David R.Anderson (辛辛提那大学)、Dennis J.Sweeney(辛辛提那大学)、Thomas A .Williams(罗切斯特理工学院)著
《R语言与数据挖掘最佳实践与经典案例》 Yanchang Zhao 著

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容