一共有1612个数据,见附件。
当使用全部数据时,是可以得出结果的,而且结果比较合理。代码如下,用的rugarch包
aa=read.csv(file="dd.csv",header=T)
spec=ugarchspec(variance.model = list(model="fGARCH",submodel="GARCH",garchOrder = c(1, 1),variance.targeting=0),
mean.model = list(armaOrder = c(1, 1),include.mean = F),distribution.model="norm")
shfit=ugarchfit(spec,aa[,2])###产生的aa有两列,第二列是数据####
shfit
部分结果如下
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : fGARCH(1,1)
fGARCH Sub-Model : GARCH
Mean Model : ARFIMA(1,0,1)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
ar1 -0.858165 0.111992 -7.6628 0
ma1 0.878201 0.103933 8.4497 0
alpha1 0.027117 0.003523 7.6968 0
beta1 0.971883 0.003608 269.3639 0
omega 0.000000 NA NA NA
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.858165 0.075884 -11.3090 0
ma1 0.878201 0.072014 12.1949 0
alpha1 0.027117 0.004604 5.8899 0
beta1 0.971883 0.004127 235.5091 0
omega 0.000000 NA NA NA
LogLikelihood : 4344.185
但是,我去掉第一个数之后就结果不收敛了,代码如下
spec=ugarchspec(variance.model = list(model="fGARCH",submodel="GARCH",garchOrder = c(1, 1),variance.targeting=0),
mean.model = list(armaOrder = c(1, 1),include.mean = F),distribution.model="norm")
shfit=ugarchfit(spec,aa[-1,2])###产生的aa有两列,第二列是数据####
shfit
跑出来的结果如下
Warning message:
In .fgarchfit(spec = spec, data = data, out.sample = out.sample, :
ugarchfit-->warning: solver failer to converge.
就是第一个数去掉之后就跑不出来了,当然,我也试过将默认算法“solnp”修改为“hybrid”,则可以运算。但是因为我是做滚动GARCH,将算法修改之后又出现新的问题是若干个问题如下:
1: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
2: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
3: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
4: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
5: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
6: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
7: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
8: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
9: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
10: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
11: In arima(data, order = c(modelinc[2], 0, modelinc[3]), ... :
possible convergence problem: optim gave code = 1
综上,我想请教各位大神:
1.为何全部数据能跑,去掉第一个数据就出现问题。。。
2.怎么解决ARMA的收敛问题。。。。
ps:写文章真苦逼,乍看简单,实际操作总是有意想不到的困难。祝大家国庆长假快乐。