使用R语言随机波动模型SV处理时间序列中的随机波动率
原文链接:http://tecdat.cn/?p=12030
准备数据
采样函数svsample期望其输入数据y是数字矢量,而没有任何缺失值(NA),如果提供其他任何内容,则会引发错误。在y包含零的情况下,发出警告,并在进行辅助混合物采样之前,将大小为sd(y)/ 10000的小偏移常数添加到平方收益上。
但是,我们通常建议完全避免零回报,例如通过预先降低零回报。下面是如何使用样本数据集exrates1准备数据的说明。
图1提供了该数据集中时间序列的可视化。
R> par(mfrow = c(2, 1), mar = c(1.9, 1.9, 1.9, 0.5), mgp = c(2, 0.6, 0))R> plot(exrates$date, exrates$USD, type = "l",+ main = "Price of 1 EUR in USD")R> plot(exrates$date[-1], ret, type = "l", main = "Demeaned log returns")
除了现实世界的数据外,还可以使用内置的数据生成器svsim。此函数仅产生SV流程的实现,并返回svsim类的对象,该对象具有自己的print,summary和plot方法。
下面给出了使用svsim的示例代码,该模拟实例显示在图2中。
R> par(mfrow = c(2, 1))R> plot(sim)
运行采样器
函数svsample,它用作C语言中实际采样器的R-wrapper 。此函数的示例用法在下面的代码中提供了默认输出。
Calling GIS_C MCMC sampler with 11000 iter. Series length is 3139.0% [+++++++++++++++++++++++++++++++++++++++++++++++++++] 100%Timing (elapsed): 12.92 seconds.851 iterations per second.Converting results to coda objects... Done!Summarizing posterior draws... Done!
可以看出,该函数调用主MCMC采样器并将其输出转换为与coda兼容的对象。后者的完成主要是出于兼容性的考虑,并且可以直接访问在那里实施的收敛诊断检查。
svsample的返回值是svdraws类型的对象,该对象是具有八个元素的命名列表,其中包含(1)参数在para中绘制,(2)潜在的对数波动率,(3)初始潜在的对数波动率绘制latent0,(4)y中提供的数据,(5)运行时中的采样运行时,(6)先验中的先验超参数,(7)细化中的细化值,以及(8)这些图的汇总统计信息,以及一些常见的转换。
评估输出并显示结果
按照常规做法,可使用svdraws对象的print和summary方法。每个参数都有两个可选参数showpara和showlatent,用于指定应显示的输出。如果showpara为TRUE(默认设置),则会显示参数绘制的值/摘要。如果showlatent为TRUE(默认值),则显示潜在变量绘制的值/摘要。在下面的示例中,仅显示参数绘制的摘要。
Summary of 10000 MCMC draws after a burn-in of 1000.Prior distributions:mu ~ Normal(mean = -10, sd = 1)(phi+1)/2 ~ Beta(a0 = 20, b0 = 1.1)sigma^2 ~ 0.1 * Chisq(df = 1)Posterior draws of parameters (thinning = 1):mean sd 5% 50% 95% ESSmu -10.1366 0.22711 -10.4749 -10.1399 -9.7933 4552phi 0.9935 0.00282 0.9886 0.9938 0.9977 397sigma 0.0656 0.01001 0.0509 0.0649 0.0830 143exp(mu/2) 0.0063 0.00075 0.0053 0.0063 0.0075 4552sigma^2 0.0044 0.00139 0.0026 0.0042 0.0069 143
(1)volplot:绘制潜在波动率的后分位数,以百分比表示,即随时间变化的100 exp(ht = 2)后验分布的经验分位数。除了必需的svsample-object本身之外,此函数还带有几个可选参数。 volplot或help(volplot)访问的相应帮助文档。常用的可选可选参数包括n步前波动率预测的预测,x轴上标签的日期以及一些图形参数。下面的代码片段显示了一个典型示例,图3显示了其输出。
(2)paratraceplot:显示θ中包含的参数的轨迹图。图5显示了一个示例。
(3)paradensplot:显示θ中包含的参数的核密度估计。为了更快地绘制较大的后验样本,应将此参数设置为FALSE。如果参数showprior为TRUE(默认值),则先验分布通过虚线灰色线指示。图6显示了从汇率提取数据集中获得的EUR-USD汇率的示例输出。
svdraws对象的通用绘图方法将上述所有绘图合并为一个绘图。可以使用上述所有参数。请参见图7。
R> plot(res, showobs = FALSE)
为了提取标准化残差,可以在给定的svdraws对象上使用残差/残差方法。使用可选的参数类型,可以指定摘要统计的类型。当前,类型允许为“平均值”或“中位数”,其中前者对应于默认值。此方法返回svresid类的实向量,其中包含每个时间点所请求的标准化残差的摘要统计量。还有一种绘图方法,当通过参数origdata给定时,提供了将标准化残差与原始数据进行比较的选项。请参见下面的代码,对于相应的输出,请参见图8。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux实用技巧——mail发送邮件命令以及中文乱码解决
- Julia机器学习实战——使用Random Forest随机森林进行字符图像识别
- Python函数——Numpy size()
- Day 1:二维数组中查找
- Day 2:替换空格
- Prometheus监控神器-Kubernetes篇(三)
- julia简易教程——安装Julia+jupyter notebooks
- Julia 终于正式发布了
- awk 列求和计算
- C++复习笔记——0_零碎问题及解决笔记
- C++复习笔记——C++ 关键字
- python函数——字典设置默认值 setdefault()
- Day 3:从尾到头打印链表
- python函数——字典get()方法
- Day 4:重建二叉树