卡尔曼滤波Kalman Filtering:介绍

article/2025/10/5 19:40:19

本文是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://chatgpt.dhexx.cn/article/FpIofpjh.shtml

相关文章

kalman 滤波 演示与opencv代码

在机器视觉中追踪时常会用到预测算法,kalman是你一定知道的。它可以用来预测各种状态,比如说位置,速度等。关于它的理论有很多很好的文献可以参考。opencv给出了kalman filter的一个实现,而且有范例,但估计不少人对它的…

Ensemble Kalman filter集合卡尔曼滤波

在气象预测领域,很多时候,模型具有 O ( 10 e 8 ) O(10e8) O(10e8)以上的量级,如果使用传统的卡尔曼滤波,协方差矩阵的更新将是一个~ 10 e 22 10e22 10e22量级的计算操作,因此传统的卡尔曼滤波并不适用。集合卡尔曼滤波…

Kalman滤波MATLAB实现实例——在温度测量中的应用

参考:《卡尔曼滤波原理及应用MATLAB仿真》 原理介绍 假设我们要研究的对象是一个房间的温度。根据经验判断,这个房间的温度大概在25℃左右,可能受空气流通、阳光等因素影响,房间内温度会小幅度地波动。我们以分钟为单位,定时测量房间温度,这里的1分钟,可以理解为采…

图解卡尔曼滤波(Kalman Filter)

背景 关于滤波 首先援引来自知乎大神的解释。 “一位专业课的教授给我们上课的时候,曾谈到:filtering is weighting(滤波即加权)。滤波的作用就是给不同的信号分量不同的权重。最简单的loss pass filter, 就是直接把低…

卡尔曼滤波(Kalman Filter)原理理解和测试

Kalman Filter学原理学习 1. Kalman Filter 历史 Kalman滤波器的历史,最早要追溯到17世纪,Roger Cotes开始研究最小均方问题。但由于缺少实际案例的支撑(那个时候哪来那么多雷达啊啥的这些信号啊),Cotes的研究让人看着显得很模糊,因此在估计理论的发展中影响很小。17世纪…

Kaplan-Meier

Kaplan-Meier 算法 Kaplan-Meier,是一种生存分析的常用方法,用于研究某一个因素对于生存时间的影响。在医学广泛使用,比如新药物是否有效的增加癌症病人的存活时间。 计算方法:假设我们已经计算出了时间t1的生存概率是0.95&#…

Kalman滤波器从原理到实现

转载请注明出处:http://xiahouzuoxin.github.io/notes Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than they. Our study of the works of the ancients enables us to give fresh life to their finer…

Kalman Filter 通俗讲解

引言 Kalman Filter,很多人刚听到这个名词时,总是会下意识认为这就是个滤波器。我这里想要重点声明的是,Kalman Filter不是滤波,它是一种信息融合的过程。 那么Kalman Filter到底是什么?它在那些方面有着应用&#xf…

卡尔曼(kalman)详解

Kalmanfliter [TOC](Kalmanfliter) kalman详解贝叶斯准则(Bayes rule)全概率定理贝叶斯卡尔曼matlab仿真 kalman详解 贝叶斯准则(Bayes rule) 全概率定理 两个随机变量 X 和 Y 的联合分布(joint distribution)如下: p (x , y) p (X x , Y y)(Xx,Yy同…

kalman简单例子——初始化参数对kalman性能的影响

此篇为第⑤篇,多目标跟踪系列文章: 基础demor入门①②;公式推导③④;深入分析初始化参数的影响⑤; ① Matlab Kalman滤波例子——小球跟踪解析 :matlab官方例子,单目标跟踪。匀速模型和匀加速模型 ②Matlab Kalman Filter based Multiple object Tracking 官方例子 多目…

卡尔曼(kalman)滤波器原理

引言:卡尔曼滤波器适用于线性高斯系统,若为非线性系统,可以使用扩展卡尔曼滤波器。 一、状态估算器 如下图,如果我们需要知道火箭发射时尾部内部的实际温度,这个温度与火箭的燃料输入有关。但是由于里面温度过高&…

Kalman详尽原理介绍合集

目录 前言 1.线性kalman(LKF) 1.1LKF原理简介 1.2 适用场合 2.扩展kalman(EKF) 2.1EKF原理简介 2.2 适用场合 2.3 使用注意事项 3.无迹kalman(UKF) 3.1UKF原理简介 3.2 UT变换 3.3 适用场合 4.粒子滤波PF 4.1 PF原理简介 4.2 适用场合 前…

对Kalman(卡尔曼)滤波器的理解

分类: 计算机视觉 转载过来的,觉得不错,原文 http://blog.csdn.net/lanbing510/article/details/8828109 1.简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅…

Kalman滤波通俗理解+实际应用

一、Kalman用于解决什么的问题? 卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。 人话&#xff1…

IDEA开发及运行第一个Android项目

IDEA自动下载SDK、Gradle,保证能访问网络。 原来eclipse能使用的sdk,配到idea报错,就换成自动下载最新的了。 之前没成功可能是我防火墙禁用了上网。 新建项目 提示安装SDK 等待下载完成 继续建项目 选择手机或平板及目标设备API版本 选择…

怎么导入别人的android项目

到期末了好多同学都问我怎么把别人的安卓项目导进自己电脑里面,今天我来统一解答一下,希望有所帮助。 1.删除项目中原有的自动构建的文件 去到要导入项目的目录下把 .idea .gradle与build 三个文件夹,*.iml,local.properties删除…

android 开源项目:

android 开源项目: https://github.com/white-cat/ThinkAndroid 转自:http://glblong.blog.51cto.com/3058613/1354953 Android开源:数据库ORM框架GreenDao学习心得及使用总结 2014-01-26 23:40:01 标签: sqllite Android 开源…

Android项目工程结构介绍

Android项目工程结构介绍 (1)gradle和.idea Android Studio自动生成的文件,打包的时候一般会删掉再进行打包 (2)app 项目的代码资源都在其中,也是我们工作的核心目录 build :编译生成文件。生…

Android项目如何真机运行?

很多初学者在刚开始写Android项目的时候,会使用Android Studio自带的模拟器去运行项目,但是自带模拟器一般占内存大(占2G都算少的);运行慢(运行一个项目要启动半天);卡顿等等&#x…

26、Android创建项目

利用 Android Studio,您可以轻松地为各种类型的设备(例如手机、平板电脑、电视和可穿戴设备)创建 Android 应用。本页介绍了如何启动新的 Android 应用项目或导入现有项目。 如果您未打开项目,Android Studio 会显示欢迎屏幕&…