时间序列建模问题,如何准确的建立时间序列模型?

新手请教时间序序列建模问题。 [图片] 这种带趋势的序列是否说明序列是非平稳的?? 一阶差分之后的数据如图2: [图片] ACF和PACF图分别为: …
关注者
1,717
被浏览
512,656

73 个回答

1. 用眼睛

首先一个时间序列,他可能是有趋势的,是不平稳的。所以如果不平稳你要做差分,把趋势的因素抵消掉。这样,如你的图2,用眼睛目测就可以认为是一个平稳的时间序列。


2. ACF,PACF观察是否稳定,并选定模型

当然,目测只是目测,接下来要用ACFPACF来进一步观察。
ACF(自相关系数)和PACF(偏自相关系数)
对于
AR(p)模型,PACF会在lag=p时截尾,也就是,PACF图中的值落入宽带区域中。
MA(q)模型,ACF会在lag=q时截尾,同理,ACF图中的值落入宽带区域中。
这是简单的识别方法。
你可以看到你的图中,ACF显然没有迅速的衰减截尾,而PACF在lag=1时他的值就落入宽带区域了。所以选用AR(1)模型,对于粗略的模拟,其实lag=14,15可以不用考虑的,当然,考虑也没啥问题。(举个例子,如果ACF在lag=3衰减入宽带区域,那就定MA(3))


3. 拟合该模型

好了,你拟合了模型,比如我用R软件
mod1<-arima(x,order=c(1,0,0))
x是你的时间序列名称,order里的第一项和最后一项代表p和q。
你自认为模拟好了,那你要检验模拟的好不好,会不会更好。
你可以通过AIC来做检验与比较。
比如,你还模拟了一个模型叫他
,mod2<-arima(x,order=c(1,0,1))
比较他们的AIC
AIC(mod1)
AIC(mod2)
谁的数值小谁更好。


4. 检验该模型拟合后的时间序列残差是否为白噪声

好了,假设我们认为mod2更好。我们必须进一步检验,你模拟的模型是不是包含了所有的因素,也就是他的除去这个模型,你的时间序列是不是白噪声(white noise),如果不是,那就说明你还没有提出所有的因素。

我们先用简便的方法来看,看这个模型的残差是不是白噪声。

输入 acf(resid(mod2))

然后看显示图

你看见,acf的值在lag=1迅速衰减了(decay)了,所以你可以归结为,他是白噪声了。白噪声在lag=1是必须在宽带区域内,因为他的任意相邻两项没任何关系,所以也不会有什么自相关系数。


5. 进一步用Ljung-Box方法进行检验

原假设H0:自相关系数rho1=rho2=rho3...=0
如果检验出来拒绝了原假设(显著有差别),说明rho不等于0不行!
判断标准:p值小于0.05,或者卡方值大于3.84或5.99(主要看你选的a)拒绝原假设
如果检验出来接受原假设,说明剩余白噪声。
判断标准:p值大于0.05,或者卡方值小于3.84或5.99(主要看你选的a)接受原假设。
具体,输入:
m<-floor(sqrt(length(x)))
Box.test(resid(x),lag=m,type=c("Ljung-Box"),fitdf=2)
自由度为p与q之和
m是定义的。你的时间序列n的根号取整。

得出结果,
其实你的结果p=0.7是好啊!大于0.05就接受原假设啦。
接受原假设就说明你的拟合的模型的残差是白噪声。
记住,p值是越大越好(0.05界限),z,t,X方这些检验值都是越小越好(比如1.96;卡方3.84等等)。

补充一点,特征根方程根绝对值全部大于单位圆半径(1)也是一个检验时间序列平稳的标准。


再来用实际数据用R语言操作举个栗子:

我们有一个时间序列的数据 "D1_data.txt"

1.拿到这个时间序列你先目测,上图通过目测可以认为是一个平稳的时间序列。


R步骤
a<-read.csv("D:/D1_data.txt") #括号中的东西取决于你的数据在电脑的哪里
aa<-ts(a) #我命名该时间序列为aa
plot(aa) #画出时间序列aa 上图

2.通过ACF和PACF也就是自相关系数和偏自相关系数来判断是否稳定。



由于ACF在lag=1之后便落入置信区间;PACF在lag=3之后落入置信区间。

我们认为改时间序列稳定。


R 步骤
layout(1:2) #一次显示两张图
acf(aa) #显示自相关系数
pacf(aa) #显示偏自相关系数

3.模型拟合

选择 ma(1)或者arma(3,1)。

用arima命令来拟合。并用AIC看哪个模型更好,AIC数值越小越好。


R步骤
ma1<-arima(aa,order = c(0,0,1)) 
arma13<-arima(aa,order = c(3,0,1))
AIC(ma1)
AIC(arma13)
#AIC结果:
AIC(ma1) [1] 939.6636
AIC(arma13) [1] 943.8848

ma1优于arma13。

4.看看拟合好的模型的残差是否为白噪声


R步骤
acf(resid(ma1)) #ma1的残差的自相关系数


Ok大功告成!

  • 时间序列建模问题,如何准确的建立时间序列模型?

ARIMA模型是传统时间序列分析方法中最常用的一种,可以用于分析时间随时间变化的平稳性、随机性、季节性,一般原理是将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来描述这个序列。根据数据的特性选择最优的时间序列模型进行预测。

ARIMA模型的一般步骤如下:

1、判断平稳性

平稳序列是构建ARIMA序列的前提,一般通过时序图和自相关图可以进行判断,但是判断较为主观。可以进性ADF单位根检验一般存在单位根,则不平稳。

2、绘制自相关图和偏相关图判断截尾性和拖尾性

一般根据自相关图(ACF)和偏自相关图(PACF)图进行初步判断和估计,选择处拟合优度最佳的模型。

3、初步判断可能拟合的模型,可以基于AIC最小原则进行模型识别

一般模型可能出现,对数似然值较大,这是可以选择AIC和BIC较小的模型。

4、对模型的残差分析(独立性、正态性、异方差等)

比如说残差通过白噪声检验等。

5、确定最终模型。

最后进行预测。

举例进行分析:

1、判断平稳性

2、绘制自相关图和偏相关图判断截尾性和拖尾性

3、初步判断可能拟合的模型,可以基于AIC最小原则进行模型识别

4、对模型的残差分析(独立性、正态性、异方差等)

5、确定最终模型

[1]谢淑红,张思静,王明元,等.基于ARIMA模型的苏州市区血浆类成分血临床需求预测研究[J].中国输血杂志, 2021, 34(12):4.