这篇文章是关于随机微分方程的基础知识和一种叫做奥恩斯坦-乌伦贝克过程( Ornstein-Uhlenbeck process)。它也被称为 "均值回复过程",它可以被认为是 " 随机游动 "的修改,其中粒子倾向于向过程的平均值移动。
这篇文章将分为几个部分,先介绍一些基础知识,然后具体介绍奥恩斯坦-乌伦贝克过程。一般来说,当你学习微分方程的课程时,你会从可分方程开始,你可能会看到像指数衰减或增长这样相对直接和容易解决的问题。一个例子是像逻辑斯谛增长( logistic growth)。
逻辑斯蒂增长曲线是一种由比利时数学家Verhulst首次发现的特殊曲线。后来,R.Pearl和L.J.Reed根据这一理论研究人口增长规则,因此,逻辑斯蒂增长的曲线也被称为生长曲线或珍珠里德曲线。——百科
假设我们在培养皿里有一些细菌,我们知道几件事:
细菌数量开始时为100个。
一小时后种群为200个。
培养皿的承载能力为2100个。
好吧,那么一般来说,这个常微分方程(ODE)看起来像下面这样:
逻辑斯谛增长增长的常微分方程
这里,细菌数量的变化等于增长率r乘以人口乘以1减去超过承载能力的数量。因此,当P越来越接近K时,括号内的表达式实际上是递减的,当P等于K时,最终将变为零。从基本微积分中你应该记得,临界点的导数是零,这就是为什么承载能力是最大的。如果你解这个问题,你会得到这样的结果:
基本解
在我们的例子中,通过使用初始条件、承载能力和翻倍率(K=2,100,P(0)=100,P(1)=200,A=20),我们应该有如下结果。你应该能够解出并发现r等于ln(40/19)。
如何求得r
现在,如果你把它插入Desmos并标出一些东西,你会看到:
细菌的数量随时间变化
现在我们已经完成了这个案例,它应该让你怀疑这是否现实。这似乎并不现实,因为你倾向于认为增长率可能会随着时间的推移而波动,而且一旦细菌用完了培养皿中所有的营养,它们就会全部死亡。
随机微分方程的基础知识
随机微分方程起源于试图理解布朗运动的机制。布朗运动是一种描述悬浮在气体或流体等介质中的粒子看似随机运动的现象,是以植物学家罗伯特-布朗的名字命名的,他在观察花粉时描述了同样的现象。
你可以把随机微分方程(从现在开始我称之为SDE)看作微分方程,其中的系数或变量实际上是独立变量的随机函数。我所说的随机函数具体指的是一个随机变量的概率密度函数。因此,首先我们要考虑一般的SDE是什么样子的。
一个标准的SDE
在这里,我们的变量X的变化随着时间的推移而变化,是一个确定的函数a(t,x)和b(t,x),但这里的Bt是标准的布朗运动,我们的初始条件X_0也受到一些随机性的影响。请注意,布朗运动也被称为维纳过程,它是一个满足以下条件的随机过程
它从零开始:B(0)=0
它有固定的独立增量
对于每一个t>0,B(t)有一个正态N(0,t)分布
它有一个连续的样本路径
除了理解它看起来像一个高斯函数之外,很多东西对这个问题其实并不重要,那就是给我们的主要确定性函数添加小的随机变化(或扰动)。
奥恩斯坦-乌伦贝克过程
这与奥恩斯坦-乌伦贝克过程有什么关系?奥恩斯坦-乌伦贝克过程是一种特殊类型的SDE,看起来像这样。
带有截距项的奥恩斯坦-乌伦贝克过程
这里kappa(一些平台无法正常现实希腊字母,这里用它们的英语单词)是均值回归率,theta是长期均值,sigma是波动性或布朗运动波动的每平方根时间的平均幅度。如果你回顾一下我们最初的细菌数量增长模型,你会发现这看起来非常相似。幸运的是,这个问题有一个封闭式的解,我们可以得到这样的结果:
奥恩斯坦-乌伦贝克过程随机微分方程的解
你可以把它分成三个部分。有长期的平均数部分,平均数转换部分和布朗运动部分。随着时间的推移,我们预计过程会向 theta 漂移,因为当X_s接近时,阻尼变小,当s接近t时,布朗运动项为0。
一个模拟例子
最后的部分是简单地写一些代码来模拟这个过程,但对参数进行相应的命名,并对其进行修改,使其与关于细菌的问题类似。
如果你运行它,你会得到一个过程的实现,看到类似这样的东西:
如果你试图使长期平均值为2100,你会发现有些东西有巨大的偏差。它看起来像这样。
这看起来是错的。原因是数字溢出。如果你看一下刻度,你会发现它大约是10^305,而用64位浮点表示的最大数字大约是10^307。为什么会出现这种情况?这是因为指数项的原因。所以你可以通过将整个y数组乘以什么来解决这个问题。我在这里试一下:
看起来很不错。