我试图通过函数fGarch::garchSpec()来指定GARCH模型,我需要一个指定的预示例。如手册中所界定的:
预置:一个数值三列矩阵,其中包含序列、创新和条件方差的起始值。
但我很肯定,这不是正确的顺序。在阅读了函数的手册和代码:“garchFit”、“garchSpec”、“garchSim”之后,我仍然很困惑。
问题是:如何准确地构建presample矩阵?
发布于 2016-08-04 16:08:22
您不需要为presample设置参数。它将提供一个“很好”的猜测,在估计参数时,这并不重要。如果你想模拟数据,那么我只需要确保燃耗,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 现在,让我们尝试添加一个非常xtreme的特征码。在上面的模型(和这个种子)中,presample是:
> spec@presample
Presample:
time z h y
1 0 -0.4324072 1 0.02现在我们用c(100, 0.1, 0.1)代替它。因为我的模型是一个GARCH(1,1),没有任何ARMA部分,所以我只需要设置3个参数,就像文档?garchSpec中描述的那样。在更新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)

https://stackoverflow.com/questions/38769583
复制相似问题