本文介绍时间序列模型的基本r语言代码,包括平稳性和非平稳性的处理。
一个完整的Arma模型分析处理
arma模型平稳性判别
1. 时序图绘制
1 | # 1. 时间序列的赋值 |
3. 噪声检验(纯随机检验)
1 | for(k in 1:2) print(Box.test(white_noise,lag=6*k,type="Ljung-Box"))#噪声检验 |
结果分析:显示延迟6和12阶的LB统计量的P值小于显著性水平(α = 0.05),所以可以判断该序列为平稳非白噪声序列。
DF/ADF平稳性检验
1 | install.packages('aTSA') |
DF检验针对AR(1),是ADF的特例。
结果分析:6中子类型,τ统计量的P值均显著大于显著性水平(α = 0.05),因此可以判断,如果序列考虑如上6种结构之一提取确定性信息,则随机性部分都不能实现平稳。
所以序列是非平稳序列。
若存在小于显著性水平的,则是平稳序列。
2. 自相关图and偏自相关图(模型定阶)
1 | # lag延迟阶数 |
结果分析:
判断是截尾还是拖尾,然后分析模型属于哪一种。
自相关图是自相关系数,虚线是自相关系数两倍标准差的参考线。落在两倍标差外,则认为自相关系数很大,显著非零。
参数估计
1 | x.fit<-arima(x,order=c(p,d,q),include.mean=,method=) |
模型检验:残差分析
1 | library(aTSA) |
结果输出四图
ACF/PACF图:需要所有竖线全都在蓝色虚线内(95%CI)。
第三幅图:残差序列的白噪声检验,观察各阶延迟下的白噪声检验统计量的P值是否都显著的大于0.05。若都显著,则残差序列属于白噪音序列,拟合模型显著成立。
第四幅图:QQ图,正态分布假定的检验。如果点密集地分布在对角线左右,则该序列近似服从正态分布。
参数的显著性检验
检验每一个未知参数是否显著非零
目的:精简模型
1 | # 1. 近似方法 |
模型优化
1 | BIC(x) |
识别最优阶数
1 | install.package('forecast') |
预测
1 | library(forecast) |
非平稳处理
线性拟合
1 | x <-c() |
曲线拟合
可用线性最小二乘
1 | t1<-c(1:60) |
不可用线性最小二乘
1 | x.fit2<-nls(x~a+b*t1+c*t1^2,start=list(a=1,b=1,c=1)) |
移动平均拟合
1 | # 移动平均拟合 |
指数平滑
1 | x<- |
季节指数、趋势效应、随机效应分解
1 | x <- ts() |
无季节效应差分运算
1 | diff(x,d,k) |
差分
1 | x <- ts() |
ARIMA模型
1 | arima(x,order=,include.mean=,method=,transform.par=,fixed=,seasonal=) |
根据拟合结果写出拟合模型
1 | x.fit |
疏系数
1 | arima(x,order=,include.mean=,method=,transform.pars=,fixed=) |
移动平均提取趋势
1 | # 简单移动平均 |
加法季节
1 | # x.t为剔除趋势效应的原序列 |
乘法模型
1 | # x.t为剔除趋势效应的原序列 |
异方差模型
1 | library(moments) |
多元
例子
1 | library('TSA') |