CSI300 ARIMA模型走势分析源程序



library(timeDate)

library(fUnitRoots)

library(xlsx)

library(rJava)

library(xlsxjars)

library(forecast)

library(zoo)

 

##建立样本空间

dfile1="D:/programsdata/2013CSI.xlsx"        #2013CSI数据

dset1=read.xlsx(dfile1,1) 

dim(dset1)

#[1] 238   7

head(dset1)

tail(dset1)

dfile2="D:/programsdata/2014CSI.xlsx"        #2014CSI数据

dset2=read.xlsx(dfile2,1)

dim(dset2)

#[1] 245   7

head(dset2)

tail(dset2)

dfile3="D:/programsdata/2015CSI.xlsx"        #2015CSI数据

dset3=read.xlsx(dfile3,1)

dim(dset3)

#[1] 244   7

head(dset3)

tail(dset3)

dv1=dset1[4,drop=F]

dv2=dset2[4,drop=F]

dv3=dset3[4,drop=F]

colnames(dv1)=c("close") #注意不是rownames(),简单的地方不思考容易出错

colnames(dv2)=c("close")  #colnames()不能用dset1[,4]作为参数

colnames(dv3)=c("close")

dset=rbind(dv1,dv2,dv3)

##CSI数据序列的平稳性和自相关性

adfTest(dset[,1])  #adfTset()不能以数据框为参数

##Title:

## Augmented Dickey-Fuller Test

##Test Results:

##  PARAMETER:

##    Lag Order: 1

##  STATISTIC:

##    Dickey-Fuller: 0.3182

##  P VALUE:  #有单位根

##    0.7178  

dts=ts(dset,frequency=244,start=c(2013,1,9))  #建立CSI2013~2015数据时间序列

plot(dts)   #plot图判断时间序列的单位根,平稳性

 #plot图有时间趋势

diffdset=diff(dset[,1])    #一次差分序列。diff()不能以数据框为参数

head(diffdset)

[1]  11.576 -10.655   0.796   4.443 -47.339  94.495

length(diffdset)

[1] 726

diffdts=ts(diffdset,frequency=243,start=c(2013,1,7))

plot(diffdts)

#一次差分序列的plot图是平稳时间序列,则可不必再求二次差分序列。

#从图上可知2015年波动性较大,

#则建立模型,将导致2015数据的不确定差较大。

data1=diffdts[1:718]       #模型数据时间序列data1

data2=diffdts[719:726]     #预测数据时间序列data28个样本

y=data1

acf(y,lag=100)          #平稳时间序列自相关性,时间间隔100

#自相关图有明显的拖尾性,最终达到收敛。

#因此,截尾的阶不易确定。

#应在lag.time=20的范围内更清晰确定阶。

pacf(y,lag=100)         #平稳时间序列偏自相关性

#不具有明显的截尾性

#判断偏自相关性的阶,方法一:根据值的突然变动

#1.最大的值突然变到比较小

#2.异常值突然到两条界限内,而且连续在界限内

#方法二:用ar()函数确定p的阶,可印证偏自相关图判定的正确性


#ARIMA模型定阶 ,时间间隔20

acf(y,lag=20)           #q=2,4,8

不具有明显的截尾性,q=2,4,8

pacf(y,lag=20)          #p=2,4,11


 p=2,4。若认为lag.time=11有截尾性,则p=11

m=ar(y,method=mle)   #q=11

m$order

#[1] 11

##建立ARIMA模型

m1=arima(y,order=c(2,1,2))   #建立arima模型  p=(2,4,11),q=(2,4,8)

m1

##Call:

##arima(x = y, order = c(2, 1, 2))

##Coefficients:

##         ar1      ar2      ma1      ma2

##      0.1101  -0.1630  -0.9742  -0.0257

## s.e.  0.1336   0.0399   0.1348   0.1322

##sigma^2 estimated as 3946:  log likelihood = -3989.18,  aic = 7988.36

Box.test(m1$residuals,lag=12,type=Ljung)

##Box-Ljung test

 

##data:  m1$residuals

##X-squared = 51.446, df = 12, p-value = 7.771e-07 #拒绝无相关性的假设

#因此arima(2,1,2)模型拟合不充分,不可作为CSI数据的参数估计模型。

pv=1-pchisq(51.446,8)

pv #模型调整的判断

##[1] 2.152848e-08   #p值减少,可进行模型调整

m2=arima(y,order=c(2,1,2),fixed=c(NA,NA,NA,0))  #将接近0的参数置为0

m2

##Call:

##arima(x = y, order = c(2, 1, 2), fixed = c(NA, NA, NA, 0)) #没有横截踞

##Coefficients:

##         ar1     ar2     ma1  ma2

##      0.1350  -0.1657  -1.0000    0

## s.e.  0.0369   0.0369   0.0376    0

Box.test(m2$residuals,lag=12,type='Ljung')

##     Box-Ljung test

##data:  m2$residuals

##X-squared = 51.635, df = 12, p-value = 7.195e-07  #拒绝没有相关性的假设

#调整的arima(2,1,2)模型拟合不充分,有模型信息没有提取。

m3=arima(y,order=c(4,1,11))  #提高模型阶数

m3

##Call:

##arima(x = y, order = c(4, 1, 11))

##Coefficients:

##    ar1      ar2      ar3      ar4     ma1     ma2    ma3     ma4

##   -0.9138   -1.7860  -0.8697  -0.9086  0.0619  0.8079  -0.8501  -0.0261

##s.e. 0.0387   0.0336   0.0353   0.0270  0.0545  0.0463  0.0524   0.0679

##    ma5      ma6     ma7     ma8      ma9     ma10     ma11

##    -0.8535  -0.0615  0.0652  0.0026  -0.0063  -0.0989  -0.0409

##s.e.  0.0644   0.0669  0.0646  0.0581   0.0505   0.0488   0.0442

##sigma^2 estimated as 3546:  log likelihood = -3952.54,  aic = 7937.09

Box.test(m3$residuals,lag=20,type='Ljung')

##        Box-Ljung test

##data:  m3$residuals

##X-squared = 14.135, df = 20, p-value = 0.8236  #没有明显的自相关性

pv=1-pchisq(14.135,6)  #模型可调整

pv

##[1] 0.02816396

m4=arima(y,order=c(4,1,11),fixed=c(NA,NA,NA,NA,0,NA,NA,0,NA,0,0,0,0,0,0))

m4

##Call:

##arima(x = y, order = c(4, 1, 11), fixed = c(NA, NA, NA, NA, 0, NA, NA, 0, NA,

    0, 0, 0, 0, 0, 0))

##Coefficients:

##   ar1      ar2     ar3     ar4      ma1  ma2   ma3   ma4   ma5

##   -0.9391  -1.8037  -0.8948  -0.8963   0  0.7605  -0.9170   0  -0.8604

##s.e. 0.0209  0.0280   0.0274   0.0245   0  0.0335  0.0212   0   0.0336

##    ma6  ma7  ma8  ma9  ma10  ma11

##     0    0    0    0     0     0

##s.e.  0    0    0    0     0     0

##sigma^2 estimated as 3596:  log likelihood = -3958.99,  aic = 7933.97

Box.test(m4$residuals,lag=20,type='Ljung')

##        Box-Ljung test

##data:  m4$residuals

##X-squared = 25.748, df = 20, p-value = 0.1743  #没有明显的自相关性


##模型诊断

tsdiag(m4)

#m4模型的不确定差在2015年仍有模型有效信息,不确定差有少量异常值,LB检验的p值没有通过。m4模型的数据拟合优度有可提高的空间。

m5=arima(y,order=c(8,1,11))

##Warning messages:

##1: In log(s2) : 产生了NaNs

##2: In arima(y, order = c(8, 1, 11)) : 可能遇到了收斂问题:optim信息code=1

m5

##Call:

##arima(x = y, order = c(8, 1, 11))

##Coefficients:

##      ar1      ar2     ar3     ar4     ar5      ar6      ar7      ar8

##     -0.9313  -0.7688  0.2210  0.1188  0.1511  -0.7685  -0.8126  -0.8491

##s.e.   0.0377   0.0489  0.0523  0.0592  0.0573   0.0508   0.0460   0.0300

##      ma1    ma2     ma3   ma4     ma5    ma6    ma7     ma8

##     0.0875  -0.2444  -1.0612  0.1097  0.1048  0.8558  0.0316  0.0744

##s.e.  0.0589   0.0569   0.0701  0.0734  0.0904  0.0740  0.0761  0.0783

##      ma9     ma10     ma11

##     -0.8179  -0.0586  -0.0803

##s.e.   0.0521   0.0489   0.0462

##sigma^2 estimated as 3433:  log likelihood = -3944.77,  aic = 7929.53

m6=arima(y,order=c(8,1,11),fixed=c(NA,NA,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,0,0,NA,0,0))

m6

##Call:

##arima(x = y, order = c(8, 1, 11), fixed = c(NA, NA, NA, NA, NA, NA, NA, NA,

##    0, NA, NA, NA, NA, NA, 0, 0, NA, 0, 0))

##Coefficients:

##      ar1      ar2     ar3     ar4     ar5      ar6      ar7      ar8

##     -0.902  -0.7271  0.2437  0.1441  0.1826  -0.7555  -0.8141  -0.8510

##s.e.   0.024   0.0330  0.0358  0.0333  0.0288   0.0267   0.0282   0.0245

##   ma1    ma2   ma3    ma4     ma5  ma6  ma7  ma8  ma9  ma10

##   0  -0.3163  -1.0274  0.1851  0.1431  0.8646  0  0  -0.8527   0

##s.e. 0  0.0153   0.0238  0.0272  0.0270  0.0235  0  0   0.0258   0

##      ma11

##       0

##s.e.    0

##sigma^2 estimated as 3457:  log likelihood = -3948.05,  aic = 7926.09

Box.test(m4$residuals,lag=26,type='Ljung')

##        Box-Ljung test

##data:  m4$residuals

##X-squared = 22.414, df = 26, p-value = 0.6659

tsdiag(m6)

#arima(8,1,11)调整模型有效。

#不确定差没有自相关性

#LB检验的p值在有效范围内

#m4模型的不确定差在2015年仍有模型有效信息,不确定差有少量异常值,LB检验的p值没有通过。m4模型的数据拟合优度有可提高的空间。

m5=arima(y,order=c(8,1,11))

##Warning messages:

##1: In log(s2) : 产生了NaNs

##2: In arima(y, order = c(8, 1, 11)) : 可能遇到了收斂问题:optim信息code=1

m5

##Call:

##arima(x = y, order = c(8, 1, 11))

##Coefficients:

##      ar1      ar2     ar3     ar4     ar5      ar6      ar7      ar8

##     -0.9313  -0.7688  0.2210  0.1188  0.1511  -0.7685  -0.8126  -0.8491

##s.e.   0.0377   0.0489  0.0523  0.0592  0.0573   0.0508   0.0460   0.0300

##      ma1    ma2     ma3   ma4     ma5    ma6    ma7     ma8

##     0.0875  -0.2444  -1.0612  0.1097  0.1048  0.8558  0.0316  0.0744

##s.e.  0.0589   0.0569   0.0701  0.0734  0.0904  0.0740  0.0761  0.0783

##      ma9     ma10     ma11

##     -0.8179  -0.0586  -0.0803

##s.e.   0.0521   0.0489   0.0462

##sigma^2 estimated as 3433:  log likelihood = -3944.77,  aic = 7929.53

m6=arima(y,order=c(8,1,11),fixed=c(NA,NA,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,0,0,NA,0,0))

m6

##Call:

##arima(x = y, order = c(8, 1, 11), fixed = c(NA, NA, NA, NA, NA, NA, NA, NA,

##    0, NA, NA, NA, NA, NA, 0, 0, NA, 0, 0))

##Coefficients:

##      ar1      ar2     ar3     ar4     ar5      ar6      ar7      ar8

##     -0.902  -0.7271  0.2437  0.1441  0.1826  -0.7555  -0.8141  -0.8510

##s.e.   0.024   0.0330  0.0358  0.0333  0.0288   0.0267   0.0282   0.0245

##   ma1    ma2   ma3    ma4     ma5  ma6  ma7  ma8  ma9  ma10

##   0  -0.3163  -1.0274  0.1851  0.1431  0.8646  0  0  -0.8527   0

##s.e. 0  0.0153   0.0238  0.0272  0.0270  0.0235  0  0   0.0258   0

##      ma11

##       0

##s.e.    0

##sigma^2 estimated as 3457:  log likelihood = -3948.05,  aic = 7926.09

Box.test(m4$residuals,lag=26,type='Ljung')

##        Box-Ljung test

##data:  m4$residuals

##X-squared = 22.414, df = 26, p-value = 0.6659

tsdiag(m6)

#arima(8,1,11)调整模型有效。

#不确定差没有自相关性

#LB检验的p值在有效范围内


选择arima(8,1,11)调整模型


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值