我对GARCH模型的参数估计和预测存在问题。
我有一系列波动时间,从1996年开始到2009年结束。
我尝试使用ugarchspec
和ugarchfit
函数估算参数:
garch1.1 <- ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1)),mean.model=list(armaOrder=c(0,0)),distribution="std")
garch1.1fit <- ugarchfit(spec=garch1.1,data=RV)
结果似乎没问题,所以我继续进行预测。
我想使用ugarchforecast
或ugarchroll
函数。但是当我尝试这样做时,我意识到他们的工作日期不对。例如,如果我尝试进行简单的预测,例如
forecast <- ugarchforecast(garch1.1fit,n.ahead=2)
我得到以下结果:
0-roll forecast [T0=1979-04-05 01:00:00]:
Series Sigma
T+1 5.373e-05 3.733e-05
T+2 5.373e-05 3.762e-05
所以我的问题是:为什么R说T0 = 1979?这不能正确,因为我的数据始于1996年并于2009年结束。 当我查看garch1.1fit中的残差时,日期也是错误的。 这有什么问题?
答案 0 :(得分:0)
我认为你没有为你的ugarch模型指定日期。请注意,R“Date”类以1970-01-01
之日起的天数编码。
以下代码可能有助于理解这个概念:
as.Date("1970-01-01")
as.numeric(as.Date("1970-01-01"))
as.Date("1970-01-10")
as.numeric(as.Date("1970-01-10"))
由于没有为ugarch模型指定日期,您的数据似乎具有填充1970 - 1979年的观察数量(可能不包括周末),并且预测在此期间开始。
答案 1 :(得分:0)
我不确定您使用哪个对象Reset
,但我认为它是一个数字向量。使用RV
包支持的xts
对象,包装地毯可以更好地工作。
以下代码应该完成这项工作:
xts
然后您的代码更改了对象require(xts)
time <- #put here time vector from your data
RV.xts <- na.omit(xts(x = RV, order.by = time))
,用于新的RV
:
RV.xts
我提供的代码做了两件事:首先它使用garch1.1 <- ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1)),
mean.model=list(armaOrder=c(0,0)),
distribution="std")
garch1.1fit <- ugarchfit(spec=garch1.1,data=RV.xts)
forecast <- ugarchforecast(garch1.1fit,n.ahead=2)
创建一个xts
对象。此对象将告诉您time
函数此模型的时间。其次,它省略了可能的NA数据,函数ugarchfit()
无法处理。
通过选中以下内容确保对象ugarchfit()
正确连接日期:
xts