卡尔曼滤波Kalman Filtering:介绍

news2024/11/27 2:32:21

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。

控制理论(control theory)是工程学的分支之一,主要应对工程系统控制的问题。比如控制汽车发动机的功率输出,稳定电动机的转速,控制“反应速率”(或化学过程的速度),通过所谓的控制变量(control variables)去控制系统。在控制汽车发动机的功率输出的例子中,控制变量可以是输入发动机的汽油量。

典型的控制系统的方法包括了规定数学模型来描述动态系统。这种模型通常用几个不同的式子表示。通过操纵模型中的变量实现控制。但是,现实中系统会有一些意想不到的波动、变化是无法使用一种确定的方法去建模。因而卡尔曼滤波被R.E.Kalman提出去解决这个问题。

卡尔曼滤波来自文章“A New Approach to Linear Filtering and Prediction Problems"。而Kalman的文章其中一个贡献就是提出系统状态(system state)的概念,或者说系统当前的状态。系统的状态表示为由不同的系统参数当前值组成的向量。向量本身是从系统上的一组观测值推导出来的,这些测量值又被转换成系统状态项(system-state terms)。这种转换通常被建模为线性方程。因此,进行观测的方法和将观测值转化为系统状态的方程式充分体现了系统状态的概念。

有了系统状态的概念后,看看使用系统状态去描述动态系统(dynamical system)。在卡尔曼滤波方法中,使用一系列的系统状态转移(即从一个系统状态转移到另一个系统状态)来对动态系统建模。这些转移(transistion)也被建模为线性方程。

接下来,为了有效地监控系统(出于控制的目的),对我们当前所处的状态以及我们预计在下一时间步骤中过渡到的状态进行评估是有必要的。换句话说,我们需要不断预测下一个系统状态并进行测量以验证预测得好不好。卡尔曼滤波器提供了一个方法来协调预测状态,然后进行测量这两个步骤得到的值,从而获得系统状态的最佳估计序列。这个方法把系统看作一系列的状态转移在当时是很颠覆的,开创了控制领域的一个新时代称为现代控制理论。

应用到风险套利的情形,我们可以用卡尔曼滤波方法来过滤观测到的spread价差中的噪声。

卡尔曼滤波方法还可以用来平滑一个随机游走。现在很多技术分析人员用所谓的移动平均(moving average)去平滑或者说过滤价格时间序列。这种使用移动平均的方法可以看作是在过滤了噪声之后尝试对股价时序进行估计(预测)。人们对移动平均线的普遍不满一直是,当价格走势发生剧烈而突然的变化时,移动平均线往往会滞后。而卡尔曼滤波帮助我们构造更好的平滑器(更好的平滑方法)。


卡尔曼滤波的过程可以概括为3个步骤:预测(prediction),观测(observation),协调或修正(correction)。

预测即根据系统当前的状态预测系统下一个状态,并且评估预测误差

接下来,我们在经过一定时间后读取或者说观测系统的状态(系统现在转换到了新状态)。基于数学模型,把读取的信息转换为系统状态。同样,我们要评估观测误差

下一步是协调两个状态估计(即预测状态和观测状态),并且要考虑两个相关误差的大小。即预测的估计值要根据观测值进行修正。因此,这被称为修正步骤。来自修正步骤的系统状态的协调估计是当前系统状态的最终估计。

这样,我们去到下一个系统状态。然后,重复以上三个步骤继续估计下下个系统状态。卡尔曼滤波就是这样一个重复“预测-->修正”的方法。如下图:

卡尔曼滤波的步骤

那么是如何修正预测值得的呢?我们可以把对下一个状态的预测值理解为期望的观测值(expected observation),把这称为预测观测值(predicted observation)。修正状态在卡尔曼滤波器中表示为:

修正的状态

式子中,实际观测值(actual observation)和预测观测值(predcited observation)的差距称为observation innovationk称为Kalman gain卡尔曼增益。卡尔曼滤波方法规定了k的取值为使得修正状态具有最小的误差方差。

卡尔曼还证明了在状态值和观测值的数学模型都是线性的,并且误差来自独立的高斯分布的情况下,该过程是最优的。

接下来看一下卡尔曼滤波步骤的正式规定:

X_{t}表示在时间t的状态。注意,状态可以是一个向量,说明这个状态是多维的。在卡尔曼滤波器中,用于预测时间t的状态的数学模型是:

A是一个矩阵,X_{t}X_{t-1}分别表示在时间t和时间t-1的状态向量,\mu_{t}是误差向量用来表示模型的不准确性。

Y_{t}表示在时间t的观测值(即观测到的状态)。表示为:

矩阵AH是已知的。起初,根据到时间t-1为止的状态信息,我们对时间t的状态做一个预测,表示为\hat{X}_{t|t-1}。预测误差在一维状态的情况下表示为方差,在多维状态的情况中表示为协方差矩阵,用符号\hat{P}_{t|t-1}表示。类似地,观测误差在一维状态的情况下表示为方差,在多维状态的情况中表示为协方差矩阵,观测误差用R表示。

这样卡尔曼滤波步骤的正式规定为:

这些步骤会在下一个时间步长重复执行。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数字化办公利器——华为云桌面Workspace

随着云办公生态的逐渐成熟,华为云桌面也成为了越来越多企业实现随时随地移动办公的选择。 华为云桌面Workspace是一款SAAS产品,是基于华为云云原生架构设计和构建的云桌面服务,可支持云桌面的快速创建、部署和集中运维管理,免除大…

2023年java代做题目参考整理

为方便毕业设计选题,特别整理以下几百题目供参考 班级风采网站的设计 工资绩效管理系统的开发 电子产品销售网站的设计与实现 酒店预订信息管理系统的设计 成绩管理系统 B2C的电子商务系统(J2EE) B2C购物网站设计 教学网站及网上考试系统的设计与实现 ERP采…

STM32学习之Keil5软件配置

前言:代码编写环境可以让编写者在代码编写上有一定的好处,从而得到高效的代码编写。本次笔者写的是一些市面上常用的嵌入式开发软件Keil5,在初始化使用软件界面需要进行配置的。主要分为五大部分(文本美化、代码编辑技巧、查找和替…

一篇图解Linux内存碎片整理

我们知道物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况: 要解…

树莓派板载蓝牙使用

1 设置树莓派板载蓝牙 1.1 相关环境安装、配置 sudo apt-get update sudo apt-get install pi-bluetooth bluez bluez-firmware blueman1.2 树莓派蓝牙操作 参考: https://blog.csdn.net/guzhong10/article/details/78574577 有时候会失败, 可以尝试…

[附源码]SSM计算机毕业设计学校缴费系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

文件包含总结

概念 是指将已有的代码以文件形式包含到某个指定的代码中,从而使用其中的代码或者数据,一般是为了方便直接调用所需文件,文件包含的存在使得开发变得更加灵活和方便。 文件包含常见函数 include() // 执行到include时才包含文件&#xff…

区间信息维护与查询【线段树 】 - 原理2 线段树中的“懒操作”

区间信息维护与查询【线段树 】 - 原理2 线段树中的“懒操作” 之前我们已经说了对线段树的点更新和区间查询,若要求对区间中的所有点都进行更新,该怎么办? 若对区间的每个点都进行更新,则时间复杂度较高,可以引入懒…

Cocos2d-x 3D渲染技术 (三)

包围盒算法 说白了就是给物体装进一个盒子里,该盒子可以装下物体。目的是为了进行碰撞检测。 种类: 球状碰撞体立方体碰撞体胶囊碰撞体Mesh碰撞体 实现原理是OBB包围盒。 经常使用的两种碰撞算法是OBB包围盒和AABB包围盒算法。 OBB包围盒算法 方向…

JavaScript -- 01. 基础语法介绍

文章目录基础语法1 Hello World2 JS的编写位置3 基本语法3.1 多行注释3.2 单行注释3.3 区分大小写3.4 空格和换行会被忽略3.5 以分号结尾3.6 字面量3.7 变量3.8 变量的内存结构3.9 常量3.10 标识符基础语法 JS的基本语法 1 Hello World js的三种输出方式 <!DOCTYPE html&g…

精彩回顾 | 云原生系统软件的产业应用

11月18日&#xff0c;2022年第五届中国金融科技产业大会暨第四届中新&#xff08;苏州&#xff09;数字金融应用博览会“基础软件与云原生系统软件”分论坛成功举办。该论坛由由中国计算机学会CTO CLUB&#xff08;苏州&#xff09;承办&#xff0c;江苏省金融科技云原生融合创…

如何用 Python 做一个简单的翻译工具?

前言 平时经常在网上翻译一些单词&#xff0c;突发奇想&#xff0c;可不可以直接调某些免费翻译网站的接口呢&#xff1f;然后做一个图形界面的翻译小工具&#xff1f;下面开始实践 &#xff08;文末送读者福利&#xff09; 1.先找一下有哪些免费翻译的接口 百度了一下关键字…

神经架构搜索的综合调查:挑战和解决方案(二)

4 PERFORMANCE COMPARISON NAS 是一项很有前途的研究。在本节中&#xff0c;我们根据主流搜索方法 [27, 28] 对现有 NAS 的性能进行分类和比较&#xff0c;同时还根据第 3 节报告了它们使用的优化策略。这些搜索方法主要包括以下内容&#xff1a;强化学习&#xff08;RL&#…

操作系统学习笔记(Ⅲ):内存

目录 1 内存管理 1.1 内存基础知识 1.内存 2.进程运行 1.2 内存管理的概念 1.3 覆盖与交换 1.覆盖 2.交换 3.区别 1.4 连续分配管理方式 1.单一连续分配 2.固定分区分配 3.动态分区分配 1.5 动态分区分配算法 1.首次适应算法 2.最佳适应算法 3.最坏适应算法 …

网络安全与IP安全

网络安全 是指网络系统的硬件&#xff0c;软件以及系统中的数据收到的保护。 保护的基本属性为&#xff1a;机密性&#xff0c;身份认证&#xff0c;完整性和可用性&#xff1b; 基本特征&#xff1a;相对性&#xff0c;时效性&#xff0c;相关性&#xff0c;不确定性&#xf…

React项目实战之租房app项目(六)渲染房源列表axios优化封装顶部搜索栏列表找房模块之条件筛选

前言 目录前言一、地图找房模块-获取并渲染房源列表1.1 房源列表示例图1.2 实现步骤1.3 代码示例二、axios优化2.1 问题概述2.2 配置生产环境和开发环境2.3 axios优化三、封装顶部搜索导航栏四、列表找房模块-导入顶部导航栏组件五、列表找房模块-条件筛选&#xff08;上&#…

Python将Excel文件插入Mysql数据库(脚本)

目录前言最近接到一个需求&#xff0c;就是将多个Eccel文件&#xff08;表头相同&#xff1b;每个都非常大&#xff0c;约60多万行&#xff0c;每个都是&#xff01;&#xff01;&#xff09;先合并在一起&#xff0c;再做一些处理&#xff0c;但是Excel表格一个文件根本存不下…

Python矩阵乘法 二重循环实现 + 列表推式

这是python 矩阵乘法的简单例子 col 2 row 2 a [[1, 2], [3, 4]] b [[5, 6], [7, 8]] c [[0, 0], [0, 0]] “”" a b c 二维矩阵初始化 c [[0 for col in range(col)] for row in range(row)] a [[0 for col in range(col)] for row in range(row)] b [[0 for c…

Android热修复,精简学习

接入热修复 接入热修复流程如下&#xff1a; 配置开发环境在控制台创建应用在客户端创建新工程签名配置加密信息编写代码发布带有热修复功能的客户端版本 配置开发环境 在控制台创建应用 在控制台创建 mPaaS 应用。此时&#xff0c;本地还没有带签名的 APK&#xff0c;因此…

面试:插件化相关---broadcastReceiver

实现原理 1 采用的模型 Android中的广播使用了设计模式中的观察者模式&#xff1a;基于消息的发布 / 订阅事件模型因此&#xff0c;Android将广播的发送者 和 接收者 解耦&#xff0c;使得系统方便集成&#xff0c;更易扩展 2 模型讲解 模型中有3个角色&#xff1a; 消息订阅…