如何利用R语言进行时间序列分析

时间序列是以固定时间间隔为单位的一列数据,最常见的比如某只股票的每日股价走势图,每天的气象数据等。时间序列分析是统计分析的一个重要内容,由于基于历史数据可以进行预测,因此几乎每种统计分析软件都有时间序列的分析及预测功能。

时间序列常见的分析方法有:简单平均法、加权平均法和移动平均法等。还有time series 里面两个强大的算法:Holt-Winters 和ARIMA。R语言具有功能强大的程序包,在数据计算、统计分析以及数据挖掘等方面都所向披靡,在这篇文章中,我以2018年4月到2019年10月某淘宝店三只松鼠销售量情况为例,向各位读者展示时间序列数据在R中统计分析及预测的实现。需要原始数据集自己进行练手分析以及本文完整程序代码的读者朋友请在我的公众号(全哥的学习生涯)内回复“时间序列”获得。

1. 数据处理

数据从2018年4月到2019年10月,大约是两年半的月销售数据。

首先我们使用read.csv函数对原始数据进行导入:

data<-read.csv(“C://Users//Desktop//data.csv”)

如图所示:


2.时间序列图

根据历史数据,首先绘制时间序列图

plot.ts(data$本月销量,xlab="月份")

如图1所示:

图 1

从图中可以看出,是三只松鼠31个月的销售数据,没有明显的周期和季节趋势,2019年9月,创下销售记录,30637件,推测可能是新生开学季,要在宿舍屯零食。2018年7月出现了销售销售的低谷,销量只有3000多。

3 时间序列检验分析

3.1 自相关检验

对于非平稳数列的数据,ACF自相关图不会趋向于0,或者趋向0的速度很慢。自相关图中的两条虚线表示置信界限,是自相关系数的上下界。

下面绘制原始数列的自相关图:

acf(data$本月销量,lag.max=30)

需要原始数据集自己进行练手分析以及本文完整程序代码的读者朋友请在我的公众号(全哥的学习生涯)内回复“时间序列”获得。

如图2所示:

图 2

3.2 单位根检验

这里需要用到fUnitRoots包,还请读者们事先进行下载安装。

unitrootTest(data$本月销量)

如图3所示:

图 3

从以上几幅图进行分析,图1中的时序图,可以看出有连年递增趋势,为非平稳序列。从自相关检验结果看,自相关系数长期大于零,进一步表明为非平稳序列;单位根检验结果p值显著大于0.05,也判断其为非平稳序列。

4. ARIMA 建模分析

4.1 非平稳序列差分

差分,即Integrated。一阶差分是把原数列每一项减去前一项的值。二阶差分是一阶差分基础上再来一次差分。差分一直得到平稳序列为止。R中使用diff()函数对时间序列进行差分运算。

diffsale<-diff(data$本月销量)

结果如图4所示。

差分后再进行检验:

plot.ts(diffsale)

acf(diffsale,lag.max=30)

unitrootTest(diffsale)

一阶差分后的时序图如图5所示。

图 5

自相关检验图与单位根检验图分别如图6,7所示。

图 6


图 7

一阶差分后,时序图在均值附近平稳波动,自相关有很强的短期相关性,单位根检验P值远小于0.05。所以一阶差分后序列表现为平稳。

4.2 时间序列模型识别定阶

从一阶差分后的自相关图可以看出,ACF值迅速跌入置信区间,没有收敛趋势,显示出拖尾性。所以考虑选用AR模型一阶差分后的序列,即对原始序列使用ARIMA(1,1,0)模型。

arima<-arima(data$本月销量,order=c(1,1,0))

结果如图8所示。

4.3 白噪声检验

检验残差序列是否为白噪声序列,使用Box.test函数

Box.test(arima$residuals,lag=5,type="Ljung-Box")

结果如图9所示。需要原始数据集自己进行练手分析以及本文完整程序代码的读者朋友请在我的公众号(全哥的学习生涯)内回复“时间序列”获得。


图 9

可以看出,p值=0.4215,大于0.05,通过白噪声检验。

5.ARIMA模型预测

R中可以通过forecast包对未来的序列值进行预测,预测未来5个月朗逸的月销量以及置信度上下界,语句如下:

library(forecast)

forecast(arima,h=5,level=c(80,95))

结果如图10所示。


图 10

可以清晰地看到预测值。还可以绘制原始及预测值图形,使用plot完成。

forecast<-forecast (arima,h=5,level=c(80,95))

plot(forecast)

结果如图11所示。

图 11

以上是对某淘宝店三只松鼠月度销售数据分析研究,主要使用R语言的时间序列分析方法,绘制序列图,检验其是否为平稳序列,非平稳序列进行差分处理,直到平稳为止。然后使用ARIMA方法进行分析建模,再进一步完成预测。需要本文完整程序代码的读者朋友请在我的公众号(全哥的学习生涯)内回复“时间序列”获得。

最后,屏幕前的你如果对R语言学习还有什么问题或看法,欢迎在给我留言。

感谢你的阅读。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容