來源:http://www.dataguru.cn/article-794-1.html
rugarch包是R中用來擬合和檢驗garch模型的一個包。該包最早在http://rgarch.r-forge.r-project.org上發布,現已發布到CRAN上。簡單而言,該包主要包括四個功能:
- 擬合garch族模型
- garch族模型診斷
- garch族模型預測
- 模擬garch序列
- 擬合序列分布
下面分別說一下。
一、擬合garch族模型
擬合garch族模型分三個步驟:
(1)通過ugarchspec函數設定模型形式
(2)通過ugarchfit函數擬合模型
設定模型形式
一個典型的garch(p,q)模型如下:
該模型由三個部分構成,均值方程對應式(1),分布假設對應(2),方差方程對應式(3),對三個部分進行適當的變形后可以形成egarch模型,egarch-ged模型,egarch-t模型,Igarch模型,garch-m模型和Qgarch模型等。因此,設定模型形式就是分別設定均值方程、方差方程和分布。
rugarch包的優越之處正在於這里。ugarchspec函數的參數也被分解為為三個主要部分,分別是variance.model,對應式(3),mean.model,對應式(1),distribution.model對應式(2)中的$\epsilon$。用戶通過對三個部分的參數的分別設定從而構造出自己想用的模型。
舉個例子:
variance.model = list(model = "sGARCH", garchOrder = c(1, 1),submodel = NULL, external.regressors = NULL, variance.targeting = FALSE),
表示擬合的方差模型為sGARCH,方差模型的自回歸階數是(1,1),方差模型中未引入外生變量。
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE)
表示均值方程為arma(1,1)模型,方程自變量中包含均值,未引入外生變量。
distribution.model = "norm"
表示模型分布假設為正態分布。
將三個部分裝入ugarchspec的參數中就可以完成一個sgarch(1,1)-norm模型的模型設定。
myspec=ugarchspec(
variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, variance.targeting = FALSE),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE),
distribution.model = "norm"
)
擬合模型
擬合模型的函數是ugarchfit。ugarchfit的參數如下:
ugarchfit(spec, data, out.sample = 0, solver = "solnp", solver.control = list(),fit.control = list(stationarity = 1, fixed.se = 0, scale = 0), ...)
其中,spec為ugarchspec函數的結果,data為數據對象。solver為優化算法。solver.control設定優化參數,fit.control設定擬合參數。
接上面的例子:
myfit=ugarchfit(myspec,data=sp500ret,solver="solnp")
到這里一個garch模型就完成了。
查看結果
鍵入下列代碼查看模型的擬合結果:
提取模型結果
rugarch包中模型結果的提取要依靠as.data.frame函數。比如提取模型的擬合值
as.data.frame(myfit,which="fitted")
提取殘差序列:
as.data.frame(myfit,which=" residuals")
提取方差序列:
as.data.frame(myfit,which="sigma")
當然,也可以同時查看所有:
as.data.frame(myfit,which=all)
或者
as.data.frame(myfit)
兩個語句等價。
二、模型診斷
通過plot(myfit)可以對模型結果進行圖形診斷:
> plot(myfit)
Make a plot selection (or 0 to exit):
1: Series with 2 Conditional SD Superimposed
2: Series with 2.5% VaR Limits (with unconditional mean)
3: Conditional SD
4: ACF of Observations
5: ACF of Squared Observations
6: ACF of Absolute Observations
7: Cross Correlation
8: Empirical Density of Standardized Residuals
9: QQ-Plot of Standardized Residuals10: ACF of Standardized Residuals11: ACF of Squared Standardized Residuals12: News-Impact CurveSelection: 1
三、模型預測
如果模型通過檢驗,可以用ugarchforcast函數對未來進行預測:
可以用fpm或者plot來查看模型的預測結果。比如:
> plot(fore)
Make a plot selection (or 0 to exit):
1: Time Series Prediction (unconditional)
2: Time Series Prediction (rolling)
3: Conditional SD PredictionSelection: 1