热线电话:13121318867

登录
2018-10-24 阅读量: 1235
时间序列里的那些图,你会吗

图形展示:

plot.zoo(x)

plot.xts(x)

plot.zoo(x, plot.type=”single”) #支持多个时间序列数据在一个图中展示

plot(x, plot.type=”single”) #支持多个时间序列数据在一个图中展示,仅对xts不行

1、自相关系数、偏自相关系数等

例题2.1

d=scan("sha.csv")

sha=ts(d,start=1964,freq=1)

plot.ts(sha)   #绘制时序图

acf(sha,22)   #绘制自相关图,滞后期数22

pacf(sha,22)  #绘制偏自相关图,滞后期数22

corr=acf(sha,22)   #保存相关系数

cov=acf(sha,22,type = "covariance")   #保存协方差

2、同时绘制两组数据的时序图

d=read.csv("double.csv",header=F)

double=ts(d,start=1964,freq=1)

plot(double, plot.type = "multiple")   #两组数据两个图

plot(double, plot.type = "single")     #两组数据一个图

plot(double, plot.type = "single",col=c("red","green"),lty=c(1,2)) #设置每组数据图的颜色、曲线类型)

3、纯随机性检验

例题2.3续

d=scan("temp.csv")

temp=ts(d,freq=1,start=c(1949))

Box.test(temp, type="Ljung-Box",lag=6)

4、差分运算和滞后运算

diff

lag

5、模拟ARIMA模型的结果

arima.sim(n = 100, list(ar = 0.8))

plot.ts(arima.sim(n = 100, list(ar = 0.8)))   #会随机产生一个包含100个随机数的时序图

plot.ts(arima.sim(n = 100, list(ar = -1.1)))   #非平稳,无法得到时序图。

plot.ts(arima.sim(n = 100, list(ar = c(1,-0.5))))

plot.ts(arima.sim(n = 100, list(ar = c(1,0.5))))

arima.sim(n = 1000, list(ar = 0.5, ma = -0.8))

acf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20)

pacf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20)

【单位根检验】

#方法1

b=ts(read.csv("6_1.csv",header=T))

x=b[,1]

y=b[,1]

summary(ur.df(x,type="trend",selectlags="AIC"))

#方法2:单位根检验更好的函数,加了画图的功能

library(fUnitRoots)

urdfTest(x)

#方法3:ADF检验的一个自编函数

library(urca)

#...

ur.df.01=function(x,lags=8){   

  #将三种ADF检验形式汇总的函数(结果和EVIEWS不一致)

  res=matrix(0,5,3)

  colnames(res)=c("无","含常数项","含常数项和趋势项")

  rownames(res)=c("tau统计量","1%临界值","5%临界值",

                  "10%临界值","是否稳定(1/0)")

  types=c("none","drift","trend")

  for(i in 1:3){

    x.adf=ur.df(x,type=types,lags=lags,selectlags="AIC")

x.adf.1=x.adf@teststat  #统计量

x.adf.2=x.adf@cval      #临界值

    res[1,i]  =x.adf.1[1]

    res[2:4,i]=x.adf.2[1,]

    res[5,i]=if( abs(res[1,i]) > abs(res[3,i]) ) 1 else 0

  }

  return(res)

}

#...

ur.df.01(x)              #对原序列进行判断

【一般的ARIMA模型】

d=scan("a1.5.txt")               #导入数据

prop=ts(d,start=1950,freq=1)      #转化为时间序列数据

plot(prop)                   #作时序图

acf(prop,12)                 #作自相关图,拖尾

pacf(prop,12)                #作偏自相关图,1阶截尾

Box.test(prop, type="Ljung-Box",lag=6)  

#纯随机性检验,p值小于5%,序列为非白噪声

Box.test(prop, type="Ljung-Box",lag=12)

( m1=arima(prop, order = c(1,0,0),method="ML") )    #用AR(1)模型拟合,如参数method="CSS",估计方法为条件最小二乘法,用条件最小二乘法时,不显示AIC。

( m2=arima(prop, order = c(1,0,0),method="ML", include.mean = F) ) #用AR(1)模型拟合,不含截距项。

tsdiag(m1)  #对估计进行诊断,判断残差是否为白噪声

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子