1

私は R で garchFit を使用しようとしましたが、非常に奇妙なことがわかりました。すべてのフィッティングが同じようです。R ページの例を使用しようとしましたが、同じ結果が見つかりました。

Rを開いて次のように入力すると:

library(fGarch);
## UNIVARIATE TIME SERIES INPUT:
# In the univariate case the lhs formula has not to be specified ...
# A numeric Vector from default GARCH(1,1) - fix the seed:
N = 200
x.vec = as.vector(garchSim(garchSpec(rseed = 1985), n = N)[,1])
garchFit(~ garch(1,1), data = x.vec, trace = FALSE)
# An univariate timeSeries object with dummy dates:
x.timeSeries = dummyDailySeries(matrix(x.vec), units = "GARCH11")
gfit = garchFit(~ garch(1,1), data = x.timeSeries, trace = FALSE)

次に、次のサニティ チェックを実行すると、残差が正しく計算されたことが示されるようです。

gfit@residuals == (x.vec - gfit@fitted)

ただし、gfit@fitted の内容を調べると、すべての値が同じであることがわかります。つまり、基本的に garchFit 関数は水平線を見つけましたか?

それはこの例から期待されていますか?

4

1 に答える 1

6

GARCH は系列の分散をモデル化するため、分散のモデルを指定しただけなので、適合値 (系列の平均の推定値) が変化することは期待できません。

当てはめたモデルの平均に ARMA(0,0) があることを意味します。

R> gfit = garchFit(~ garch(1,1), data = x.timeSeries, trace = TRUE)

Series Initialization:
 ARMA Model:                arma
 Formula Mean:              ~ arma(0, 0)
 GARCH Model:               garch
 Formula Variance:          ~ garch(1, 1)

平均と分散のモデルを使用してシリーズを適合させると、適合値異なります。

R> gfit2 = garchFit(~ arma(1,1) + garch(1,1), data = x.timeSeries, trace = FALSE)
R> head(gfit2@fitted)
   1970-01-01    1970-01-02    1970-01-03    1970-01-04    1970-01-05 
-0.0010093158 -0.0004840687 -0.0002678956 -0.0006093776 -0.0003781936 
   1970-01-06 
 0.0004521798
于 2012-08-05T16:41:37.883 に答える