rugarch包与R语言中的garch族模型
来源: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
rugarch包与R语言中的garch族模型的更多相关文章
- 掌握R语言中的apply函数族(转)
转自:http://blog.fens.me/r-apply/ 前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是 ...
- R语言中apply函数
前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...
- R语言中的MySQL操作
R语言中,针对MySQL数据库的操作执行其实也有很多中方式.本人觉得,熟练掌握一种便可,下面主要就个人的学习使用情况,总结其中一种情况-----使用RMySQL操作数据库. 1.下载DBI和RMySQ ...
- R语言中的factor
对于初学者来说,R语言中的factor有些难以理解.如果直译factor为“因子”,使得其更加难以理解.我倾向于不要翻译,就称其为factor,然后从几个例子中理解: <span style=& ...
- R语言中Fisher判别的使用方法
最近编写了Fisher判别的相关代码时,需要与已有软件比照结果以确定自己代码的正确性,于是找到了安装方便且免费的R.这里把R中进行Fisher判别的方法记录下来. 1. 判别分析与Fisher判别 不 ...
- R语言中的Apriori关联规则的使用
1.下载Matrix和arules包 install.packages(c("Matrix","arules")) 2.载入引入Matrix和arules包 # ...
- R 语言中 data table 的相关,内存高效的 增量式 data frame
面对的是这样一个问题,不断读入一行一行数据,append到data frame上,如果用dataframe, rbind() ,可以发现数据大的时候效率明显变低. 原因是 每次bind 都是一次重新 ...
- R语言中 fitted()和predict()的区别
fitted是拟合值,predict是预测值.模型是基于给定样本的值建立的,在这些给定样本上做预测就是拟合.在新样本上做预测就是预测. 你可以找一组数据试试,结果如何. fit<-lm(weig ...
- 关于R语言中set.seed()
在r中取sample时候,经常会有set.seed(某数),经常看见取值很大,其实这里无论括号里取值是多少,想要上下两次取值一样,都需要在每次取值前输入同样的set.seed(某数),才能保证两次取值 ...
随机推荐
- 基于MSP430G2系列实现的步进电机控制
基于MSP430G2系列实现的步进电机控制 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路 ...
- Appium 基于控件左滑操作
def swipe_ele_left(self, ele, dur=800): """ 基于控件元素左滑操作 :param ele: 控件元素 :param dur: 在 ...
- vue图片点击放大功能
因项目需求(ui框架element-ui),需要实现图片的点击放大,还要能旋转以及上下切换.当时第一反应,element-ui好像没有这样的组件,就想过自己写,但是那个旋转翻页上下切换感觉有点麻烦,不 ...
- 控制层解析post请求中json数据的时候,有些属性值为空
原因: 1.默认json数据解析的时候,值会赋给键的首字母是小写的封装的bean中的属性,如果没有首字母小写的属性,也不会报错.即bean中有getXXX方法时,从json到model会增加xxx属性 ...
- S03_CH07_AXI_VDMA_OV5640摄像头采集系统
S03_CH07_AXI_VDMA_OV5640摄像头采集系统 7.1概述 本章内容和<S03_CH06_AXI_VDMA_OV7725摄像头采集系统>只是摄像头采用的分辨率不同,其他原理 ...
- SAS学习笔记46 宏变量的可使用范围
全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...
- hdu 6375 度度熊学队列 (链表模拟)
度度熊正在学习双端队列,他对其翻转和合并产生了很大的兴趣. 初始时有 N 个空的双端队列(编号为 1 到 N ),你要支持度度熊的 Q 次操作. ①1 u w val 在编号为 u 的队列里加入一个 ...
- SCALA基础知识学习
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...
- linux安装tmux分屏插件
linuxtmux分屏 一.安装tmux 二.基本使用 三.鼠标操作 一.安装tmux yum install -y tmux TMUX2版本以下 二.基本使用 使用tmux一般使用命令和快捷键来操作 ...
- docker系列七之Dockerfile
Dockerfile 一. Dockerfile是什么 Dockerfile是docker中镜像文件的的描述文件,说的直白点就是镜像文件到底是由什么东西一步步构成的.例如我们在淘宝上买了一件商品, ...