如果序列{Xt}的当前值不仅与自身的过去值有关,而且还与其以前进入系统的外部冲击存在一定依存关系,则在用模型刻画这种动态特征时,模型中既包括自身的滞后项,也包括过去的外部冲击,这种模型叫做自回归滑动平均模型,其一般结构为:
Xt=φ1Xt-1+φ2Xt-2+……+φpXt-p+εt-θ1εt-1-θ2εt-2-……-θqεt-q(2.1.6>
简记为ARMA(p,q>。
利用滞后算子,此模型可写为
φεt<2.1.7)
3R中实现判断时间序列的平稳性
3.1例一
>x=rnorm(500>#生成500个服从正太分布的数
>y=cumsum(x>#累加x的数对应得到y
3.1.1绘制时序图
>plot.ts(x>
>plot.ts(y>
从两个图的不同可以看出x时间序列趋势不随时间的变化而变化,其随机性比较强。
而y序列则有明显的时间趋势。
3.1.2ADF.test检验
install.packages("tseries">#安装时间序列包
library("tseries",lib.loc="e:
/ProgramFiles/R/R-2.15.2/library">#载入时间序列包
>adf.test(x>
AugmentedDickey-FullerTest
data:
x
Dickey-Fuller=-8.0878,Lagorder=7,p-value=0.01
alternativehypothesis:
stationary
结论:
p-value=0.01拒绝原假设<原假设认为时间序列是非平稳的),即可认为x是平稳的。
>adf.test(y>
AugmentedDickey-FullerTest
data:
y
Dickey-Fuller=-1.1291,Lagorder=7,p-value=0.9179
alternativehypothesis:
stationary
结论:
p-value=0.9179不能拒绝原假设,所以认为y是非平稳的。
函数2:
ADF检验时间序列的平稳性:
ADFTEST
参数1:
时间序列
P临界值,默认值为0.05
返回结果:
用框架来组织返回结果
结论<1:
平稳,0:
不平稳)
adf.test函数的返回值
3.1.3PP检验
>pp.test(x>
Phillips-PerronUnitRootTest
data:
x
Dickey-FullerZ(alpha>=-510.4566,Truncationlagparameter=5,p-value=0.01
alternativehypothesis:
stationary
警告信息:
Inpp.test(x>:
p-valuesmallerthanprintedp-value
结论:
p-value=0.01拒绝非平稳性假设,即认为x是平稳的。
>pp.test(y>
Phillips-PerronUnitRootTest
data:
y
Dickey-FullerZ(alpha>=-3.9888,Truncationlagparameter=5,p-value=0.8872
alternativehypothesis:
stationary
结论:
p-value=0.8872不能拒绝原假设y是非平稳的,所以认为y是非平稳的。
函数3:
PP检验时间序列的平稳性:
PPTEST
参数1:
时间序列
P临界值,默认值为0.05
返回结果:
用框架来组织返回结果
结论<1:
平稳,0:
不平稳)
R语言pp检验函数的返回值
3.1.4ACF自相关函数判断
>modelx=lm(x~time(x>>
>summary(modelx>
Call:
lm(formula=x~time(x>>
Residuals:
Min1QMedian3QMax
-2.87920-0.750030.011030.705953.15625
Coefficients:
EstimateStd.ErrortvaluePr(>|t|>
(Intercept>0.15248490.09153591.6660.0964.
time(x>-0.00050770.0003166-1.6030.1095
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
Residualstandarderror:
1.022on498degreesoffreedom
MultipleR-squared:
0.005136,AdjustedR-squared:
0.003138
F-statistic:
2.571on1and498DF,p-value:
0.1095
>acf(rstudent(modelx>,main='关于x的acf自相关系数'>
从图中可以看出其K阶滞后自相关系数都非常小呈截现象,因此判断时间系列为平稳性是合理的。
函数4:
ACF检验函数
参数:
时间序列
检验p值,默认为0.05
图形保存路径,默认为空
返回值:
以框架形式
线性回归函数各个系数的检验p值
ACF函数的返回值
>modely=lm(y~time(y>>
>summary(modely>
Call:
lm(formula=y~time(y>>
Residuals:
Min1QMedian3QMax
-13.2206-5.6292-0.67426.318513.6971
Coefficients:
EstimateStd.ErrortvaluePr(>|t|>
(Intercept>8.6593760.62053813.96<2e-16***
time(y>0.0329660.00214615.36<2e-16***
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
Residualstandarderror:
6.927on498degreesoffreedom
MultipleR-squared:
0.3214,AdjustedR-squared:
0.3201
F-statistic:
235.9on1and498DF,p-value:
<2.2e-16
>acf(rstudent(modely>,main='关于y的acf自相关系数'>
从图中可以看出ACF随着k的增大而缓慢下降,自相关系数大且为正因此判断y序列为非平稳时间序列是合理的。
3.2例二
以TSA自带的数据tempdub为例验证数据的平稳性检验
3.2.1绘图
>library("TSA",lib.loc="e:
/ProgramFiles/R/R-2.15.2/library">
从图中可以看出此时间序列具有非常明显的周期性趋势。
3.2.2Adf检验
>adf.test(tempdub>
AugmentedDickey-FullerTest
data:
tempdub
Dickey-Fuller=-11.0773,Lagorder=5,p-value=0.01
alternativehypothesis:
stationary
结论:
p-value=0.01所以tempdub时间序列是平稳的。
3.2.3Pp检验
>pp.test(tempdub>
Phillips-PerronUnitRootTest
data:
tempdub
Dickey-FullerZ(alpha>=-51.0795,Truncationlagparameter=4,p-value=0.01
alternativehypothesis:
stationary
警告信息:
Inpp.test(tempdub>:
p-valuesmallerthanprintedp-value
结论:
p-value=0.01再次验证该时间序列的平稳性。
3.2.4ACF自相关函数判断
>modeltemp=lm(tempdub~time(tempdub>>
>summary(modeltemp>
Call:
lm(formula=tempdub~time(tempdub>>
Residuals:
Min1QMedian3QMax
-37.871-19.0662.39417.05328.156
Coefficients:
EstimateStd.ErrortvaluePr(>|t|>
(Intercept>-214.1324920.7668-0.2330.816
time(tempdub>0.13220.46740.2830.778
Residualstandarderror:
19.43on142degreesoffreedom
MultipleR-squared:
0.0005629,AdjustedR-squared:
-0.006475
F-statistic:
0.07998on1and142DF,p-value:
0.7777
>acf(rstudent(modeltemp>,main='关于tempdub的acf自相关系数'>
从图中可以看出ACF也具有明显的周期性。