R fGarch:garchSpec()的预采样矩阵

时间:2016-08-04 14:03:26

标签: r time-series

我试图通过函数fGarch::garchSpec()指定GARCH模型,我需要一个指定的预样本。如手册中所定义:

  

presample:一个带有起始值的数字三列矩阵              系列,创新,有条件的              差异。

但我很确定,这不是正确的顺序。阅读完功能的手册和代码:' garchFit',' garchSpec',' garchSim'我仍然很困惑。

问题是:如何准确构建presample矩阵?

1 个答案:

答案 0 :(得分:0)

您不需要为presample设置参数。它将提供一个好的"猜测并估计参数无关紧要。如果你想模拟数据,那么我只需要确保burnin n.start足够大。

让我们看一个例子:

library(fGarch)
## First we simulate some data without setting presample:
# we set up the model by spec:
set.seed(911)
spec <- garchSpec(model = list(mu = 0.02, omega = 0.05, alpha = 0.2, beta = 0.75))
# then simulate our GARCH(1,1) model:
garchSim <- garchSim(spec, n = 200, n.start = 1)
plot(garchSim)

Garch(1,1) simulation

估计:

    > garchFit(~ garch(1, 1), data = garchSim)
Error Analysis:
        Estimate  Std. Error  t value Pr(>|t|)    
mu      -0.02196     0.05800   -0.379   0.7049    
omega    0.03567     0.02681    1.331   0.1833    
alpha1   0.12074     0.04952    2.438   0.0148 *  
beta1    0.84527     0.05597   15.103   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log Likelihood:
 -265.8417    normalized:  -1.329209 

现在让我们尝试添加一个非常极端的例子。在上面的模型(和这个种子)中,presample是:

> spec@presample
Presample: 
  time          z h    y
1    0 -0.4324072 1 0.02

现在我们用c(100, 0.1, 0.1)替换它。由于我的模型是没有任何ARMA部分的GARCH(1,1),我只需要设置文档?garchSpec中描述的3个参数。更新spec后,我们估计相同的模型:

set.seed(911)
spec@presample <- matrix(c(0.1, 0.1, 0.1), ncol = 3)
garchFit(~ garch(1, 1), data = garchSim)

具有相同的输出:

Error Analysis:
        Estimate  Std. Error  t value Pr(>|t|)    
mu      -0.02196     0.05800   -0.379   0.7049    
omega    0.03567     0.02681    1.331   0.1833    
alpha1   0.12074     0.04952    2.438   0.0148 *  
beta1    0.84527     0.05597   15.103   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log Likelihood:
 -265.8417    normalized:  -1.329209 

可能性和估算值相同,但在我们使用新spec模拟时注意:

set.seed(911)
garchSim <- garchSim(spec, n = 200, n.start = 1)
plot(garchSim)

Garch Simulation 2

,提供的极端初始样本搞砸了我们很好的模拟。但是通过增加我们获得的burn.in

set.seed(911)
garchSim <- garchSim(spec, n = 200, n.start = 100)
plot(garchSim)

enter image description here