我试图通过函数fGarch::garchSpec()
指定GARCH模型,我需要一个指定的预样本。如手册中所定义:
presample:一个带有起始值的数字三列矩阵 系列,创新,有条件的 差异。
但我很确定,这不是正确的顺序。阅读完功能的手册和代码:' garchFit',' garchSpec',' garchSim'我仍然很困惑。
问题是:如何准确构建presample
矩阵?
答案 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)
估计:
> 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)
,提供的极端初始样本搞砸了我们很好的模拟。但是通过增加我们获得的burn.in
:
set.seed(911)
garchSim <- garchSim(spec, n = 200, n.start = 100)
plot(garchSim)