前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >卡尔曼滤波器:用R语言中的KFAS建模时间序列|附代码数据

卡尔曼滤波器:用R语言中的KFAS建模时间序列|附代码数据

原创
作者头像
拓端
发布2023-07-07 22:55:59
2360
发布2023-07-07 22:55:59
举报
文章被收录于专栏:拓端tecdat拓端tecdat

最近我们被客户要求撰写关于卡尔曼滤波器的研究报告,包括一些图形和统计输出。

时间序列预测,ARIMA等传统模型通常是一种流行的选择

虽然这些模型可以证明具有高度的准确性,但它们有一个主要缺点 - 它们通常不会解释“冲击”或时间序列的突然变化。让我们看看我们如何使用称为卡尔曼滤波器的模型来解决这个问题。

时间序列

我们以货币市场为例。货币对可能会有整体上升趋势,然后在抛售期间大幅下跌。传统的时间序列模型不一定能够立即解决这个问题,并且在考虑到趋势的突然变化之前可能需要几个时期。

因此,我们希望使用一个确实能够解释这种冲击的时间序列模型。让我们来看一个称为卡尔曼滤波器的模型。

卡尔曼滤波器是一种状态空间模型,可以更快地调整冲击到时间序列。让我们看一下例子。

2015年1月,当瑞士国家银行决定取消瑞士法郎时,货币市场遭受了历史上最大的冲击之一。结果,瑞士法郎飙升,而其他主要货币则暴跌。

让我们看看卡尔曼滤波器如何调整这种冲击。

卡尔曼滤波器:USD / CHF

首先,让我们下载2015年1月的USD / CHF数据。

代码语言:javascript
复制
> currency = Quandl("FRED/DEXSZUS", start_date="2010-01-01",end_date="2018-09-29",type="xts")
> currency=data.frame(currency)
> currency=(log(currency$currency))

现在,我们将尝试使用KFAS库使用卡尔曼滤波器对此时间序列进行建模。

绘制时间序列:

代码语言:javascript
复制
> ts.plot(ts(exp(currency[1232:1274]), exp(out$a[1232:1274]), exp(out$att[1232:1274]), exp(out$alpha[1232:1274])
图片
图片

点击标题查阅往期内容

图片
图片

分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法

图片
图片

左右滑动查看更多

图片
图片

01

图片
图片

02

图片
图片

03

图片
图片

04

图片
图片

为了进行比较,我们还将计算10天移动平均值,以比较平滑性能与卡尔曼滤波器的平滑性能。

代码语言:javascript
复制
data.frame(SMA(exp(currency),n=10))

 现在让我们将上面的内容与我们的原始序列结合起来,看看我们得到了什么: 这是生成的数据框:

图片
图片

在某些情况下,高频数据 - 或过滤从噪声信号中提取信息并预测未来状态,是卡尔曼滤波器最合适的用途。另一方面,平滑更依赖于过去的数据,因为在某些情况下,平均最近的预测可能比使用最近的预测更准确。

这在直觉上是有道理的,因为货币在一个月之前的交易价格为0.9658。在这方面,平滑估计器允许比使用滤波估计更好地预测信号,滤波估计a直到时间段33才调整冲击。

例子:英镑/美元

因此,我们已经看到卡尔曼滤波器如何拟合美元/瑞士法郎的突然变动。我们再举一个货币冲击的例子。当英国在2016年6月投票支持“英国退欧”时,我们看到英镑/美元随后暴跌。

如在USD / CHF的例子中,我们从Quandl下载我们的GBP / USD数据并运行卡尔曼滤波器:

这是我们的数据图。同样,我们看到alpha在t = 22时的震荡前一天向下调整到1.438的水平:

图片
图片

以下是a,att和alpha统计信息:

图片
图片

同样,我们看到10天SMA需要将近10天才能完全调整震荡,再次表明平滑参数α在调整货币水平的巨大变化时是不错的。

结论

  • 调整时间序列冲击的重要性
  • 如何在R中使用KFAS实现卡尔曼滤波器
  • 如何解释卡尔曼滤波器的输出
  • 为什么卡尔曼滤波器是用于建模时间序列冲击的合适模型

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最近我们被客户要求撰写关于卡尔曼滤波器的研究报告,包括一些图形和统计输出。
  • 时间序列
  • 卡尔曼滤波器:USD / CHF
  • 例子:英镑/美元
    • 结论
    相关产品与服务
    数据万象
    数据万象(Cloud Infinite,CI)是依托腾讯云对象存储的数据处理平台,涵盖图片处理、内容审核、媒体处理、AI 识别、文档预览等功能,为客户提供一站式的专业数据处理解决方案,满足您多种业务场景的需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档