卡尔曼滤波Kalman Filtering:介绍
本文是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 innovation。称为Kalman gain卡尔曼增益。卡尔曼滤波方法规定了的取值为使得修正状态具有最小的误差方差。
卡尔曼还证明了在状态值和观测值的数学模型都是线性的,并且误差来自独立的高斯分布的情况下,该过程是最优的。
接下来看一下卡尔曼滤波步骤的正式规定:
表示在时间的状态。注意,状态可以是一个向量,说明这个状态是多维的。在卡尔曼滤波器中,用于预测时间的状态的数学模型是:
是一个矩阵,,分别表示在时间和时间的状态向量,是误差向量用来表示模型的不准确性。
表示在时间的观测值(即观测到的状态)。表示为:
矩阵和是已知的。起初,根据到时间为止的状态信息,我们对时间的状态做一个预测,表示为。预测误差在一维状态的情况下表示为方差,在多维状态的情况中表示为协方差矩阵,用符号表示。类似地,观测误差在一维状态的情况下表示为方差,在多维状态的情况中表示为协方差矩阵,观测误差用表示。
这样卡尔曼滤波步骤的正式规定为:
这些步骤会在下一个时间步长重复执行。
卡尔曼滤波Kalman Filtering:介绍相关推荐
- 卡尔曼滤波 | Matlab实现卡尔曼滤波(Kalman Filtering)仿真
文章目录 效果一览 文章概述 研究内容 程序设计 参考资料 效果一览 文章概述 Matlab实现卡尔曼滤波(Kalman Filtering)仿真 研究内容 卡尔曼滤波(Kalman filterin ...
- 卡尔曼滤波 - Kalman filtering
百科定义 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法.由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可 ...
- java 二维卡尔曼滤波_卡尔曼滤波 – Kalman Filtering
1. 什么是卡尔曼滤波器 (What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看为什么叫"卡尔曼".跟其他著名的理论(例如傅立叶变换,泰勒 ...
- 卡尔曼滤波(Kalman Filtering)——(3)数据融合 状态空间方程
数据融合 协方差 状态空间方程 观测器 一.数据融合 假设举例 公式推导过程 再次理解 二.状态空间方程 阻尼滑块模型 1.连续表达式 2.离散表达形式 3.符号含义 参考文献 一.数据融合 假设举例 ...
- 一文图解卡尔曼滤波(Kalman Filter)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者注:这恐怕是全网有关卡尔曼滤波最简单易懂的解释,如果你认真的读 ...
- 图解卡尔曼滤波(Kalman Filter)
背景 关于滤波 首先援引来自知乎大神的解释. "一位专业课的教授给我们上课的时候,曾谈到:filtering is weighting(滤波即加权).滤波的作用就是给不同的信号分量不同的权重 ...
- Quaternion-based Kalman Filtering on INS/GPS
Quaternion-based Kalman Filtering on INS/GPS 1 四元数 1.1 旋转矩阵 2 INS/GPS 2.1信息融合技术 2.2导航方向的推导 2.2.1 姿态更 ...
- 卡尔曼滤波(Kalman Filtering)——(6)MATLAB仿真(保姆级)
MATLAB仿真 一.卡尔曼滤波的实际应用 二.流程图 三.执行过程 四.程序代码 五.仿真结果 参考文献 一.卡尔曼滤波的实际应用 在这里依旧以前面提到的测量硬币为例进行MATLAB仿真.现有一 ...
- java 二维卡尔曼滤波_卡尔曼滤波(Kalman filtering)算法学习小记
动画和视频 一个例子 import numpy as np # 模拟数据 t = np.linspace(1, 100, 100) a = 0.5 position = (a * t ** 2) / ...
最新文章
- HAproxy七层负载均衡——访问控制、动静分离、读写分离实现过程详解
- 独家 | 使用深度神经网络在Oculus Quest上进行准确的手部追踪
- 利用Powershell和ceye.io实现Windows账户密码回传
- [项目实施失败讨论Case] “凭心而论,在这家公司很敬业的工作了3年多,老板最后给我下的评语,大家都看看吧,千万别和我走同一条路!”(摘自csdn)...
- CSMA/CD协议——学习笔记
- 为销售范围维护允许的销售凭证
- volatile关键字和AtomicInteger
- Java基础(三)选择和循环结构
- ESS控制台发布新功能:创建多实例规格的伸缩配置
- mysql 不显示消息错误_如何编写不吸的错误消息
- 注册了patchwork.kernel.org
- 基于JAVA+SpringBoot+Mybatis+MYSQL的药店进销存管理系统
- python逗号表达式_python – 如何用位于括号外的逗号分割一个字符串?
- 《编程之美》1.3一摞烙饼的排序
- SCJP 认证考试指南
- Python英文搜索引擎(模糊搜索)
- 脱产计算机学6个月,我只有成人(脱产)的计算机应用专科学历,想自己再去自考本科,请问可以吗?自考本科有哪些要求??谢谢!...
- go decimal 使用方法
- linux执行历史命令用哪个键,Linux中如何使用history命令即历史命令
- python3ide安卓版官网下载_Pydroid3官方版-Pydroid3最新版下载v4.01 - 7230手游网