时间序列分析 ARMA模型(R语言实战)

时间:2024-11-09 09:47:47

文章目录

  • 一、ARMA模型是什么?
  • 二、建模过程
    • 1.平稳性检验
    • 2.阶数的确定
    • 3.参数估计
    • 4.模型检验
    • 5.模型预测

一、ARMA模型是什么?

       自回归滑动平均模型(英语:Autoregressive moving average model,简称:ARMA模型)。是研究时间序列的重要方法,由自回归模型(简称AR模型)与移动平均模型(简称MA模型)为基础“混合”构成。在市场研究中常用于长期追踪资料的研究,如:Panel研究中,用于消费行为模式变迁研究;在零售研究中,用于具有季节变动特征的销售量、市场规模的预测等。

二、建模步骤

1.平稳性检验

       ARMA模型是针对平稳性时间序列提出的,因此,首先要确认序列满足平稳性条件。平稳性检验有两种方法:一是绘制时序图,二是用统计量(如自相关函数)来判断。若序列的时序图看不出有增长趋势,也没有循环波动,初步判定为平稳序列。随着延迟数的增加,平稳时间序列的自相关函数会很快向0衰减。

library(TSA)#加载程序包
data(color)
plot(color,xlab='批次',ylab='颜色属性')#绘制时序图
acf(color,lag=20)#绘制该序列的自相关函数图

       结果如下,基本可以认定该序列是平稳的。

2.阶数的确定

       自相关函数不是截尾,因此所建模型不是MA模型,应该是AR(q)或ARMA(p,q)模型。再通过偏自相关函数来判断,如图所示,偏自相关函数,延迟数大于1时均分布在两条虚线内,具有明显截尾性质。因此,应选取AR(1)模型。

pacf(color,lag=20)

3.参数估计及检验

<-arima(color,order=c(1,0,0))

       由结果可知,系数的估计值分别为74.3293和0.5705,估计值的标准差为1.9151及0.1435,模型残差的方差为24.83,AIC统计量为216.15。

t_test<-function(object,alpha=0.05){
  c<-object$coef
  sd<-sqrt(diag(object$))
  t<-abs(c/sd)
  k<-sum(object$arma)
  n<-object$nobs
  Pvalue<-2*(1-pt(t,df=n-k))
  t_alpha<-qt(1-alpha/2,df=n-k)
  A<-rbind(c,c-t_alpha*sd,c+t_alpha*sd)
  rownames(A)<-c("coef","lwr","upr")
  list(p_value=Pvalue,confint=A)
}#模型检验(参数的区间估计、显著性检验)
t_test()

     p值均小于0.05,因此参数的置信区间不包含0,估计的参数通过了检验。

4.模型诊断

        诊断模型的残差是否近似具有白噪声的性质,即零均值、等方差、正态性。

#绘制标准化残差图、残差的自相关函数及Ljung-Box统计量的P值
tsdiag()

       由图可知,标准化残差基本分布在零水平线附近,且在-2~2的范围内;自相关函数迅速下降到两条虚线内;Ljung-Box统计量P值均大于0.05,因此,模型通过检验。

5.模型预测

       ARMA模型仅适合短期预测,所以这里仅预测后面5个批次的颜色属性。

<-predict(,=5)


        以上就是今天要讲的内容,欢迎大家批评指正。