2012-08-05 12 views
1

我試圖在R中使用garchFit,發現了一些非常奇怪的東西,似乎所有的擬合都是相同的。我試圖在R頁面中使用該示例,並找到了相同的結果。在R中garchFit()返回相同的數字在所有擬合值

如果打開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) 

然後做下面的完整性檢查似乎表明,殘差被正確地計算:

[email protected] == (x.vec - [email protected]) 
但是

如果檢查的內容gfit @裝,你可以看到所有的值都是一樣的!所以基本上garchFit函數找到了一條水平線?

從這個例子中可以預料到嗎?

回答

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([email protected]) 
    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 
+0

它都有道理,但我想是建模的波動性本身。有沒有簡單的方法來獲得二次變化(波動率)的擬合系列? – BlueTrin 2012-08-05 17:15:47

+1

'gfit2 @ h.t'能給你想要的東西嗎?在'?garchFit'中看到它的描述,我猜你已經閱讀過了? – 2012-08-05 17:26:49

+0

我讀過它,但在此之前瞭解什麼是S4班,所以我當時並不瞭解它。謝謝加文! – BlueTrin 2012-08-05 18:25:21

相關問題