MATLAB系统仿真其三:Ornstein-Uhlenbeck(OU)噪声


前言

高斯噪声、均值噪声、朗之万噪声等噪声由于过于“离散”,有时候反而带来了理想与实际的偏差。为了更好解释市场趋势等时序相关的随机过程,人们引入了多种随机模型和估计方法。Ornstein-Unlenbeck (OU)均值回归过程由Taylor(1986)和Hull(1987)引入,有兴趣深入了解可以阅读原文。由维纳过程驱动的奥恩斯坦-昂伦贝克利率作为单因素短期利率在金融领域被广泛应用(Kho Chia Chen,2014)。JSV2011年的一篇论文提到在电路系统中也常考虑OU噪声。

一、Ornstein-Unlenbeck随机过程

考虑一个简单的自由马尔代夫过程,让其受到一个维纳过程 Z Z Z的驱动,参考美国伊利诺斯大学高教授的文章,将简单OU过程定义为:
在这里插入图片描述
其中常数 λ > 0 λ>0 λ>0。当然,这个形式不太直观,也不好处理,写出其特殊的微分形式:

在这里插入图片描述
维纳过程的微分形式服从高斯分布,因此可以使用更简单生成的高斯随机变量替代,这种形式的方程在MATLAB中求解仅需要几行代码。当然,还有分数阶自由OU过程以及对OU过程的许多有趣的推论,这里不做过多介绍,有兴趣的可以阅读 Free Ornstein-Uhlenbeck processes 这篇文章。

二、MATLAB仿真

我们常常需要的是均值和方差都很小的噪声,因此只考虑简单的OU噪声即可,MATLAB代码如下:

tspan = 0:1e-2:50;
[t,e]=ode45(@ounoise,tspan,[0]);
figure;plot(t,e);xlabel(['OU噪声,均值:' num2str(mean(e)) ',方差:' num2str(std(e))]);
figure;[cor,lag] = xcorr(e,e,'normalized');plot(lag/100,cor);
figure;[w,fw] = pwelch(e);plot(fw,w);

function dx = ounoise(t,x)
tm = 2;%相关时间
deta = pi/2;%标准差
r = 1;
dx = -r*x+r*randn(1);%简单过程
% dx = -1/tm*x+sqrt(2/tm)*deta*randn(1);
end

则程序结果如图:
在这里插入图片描述
通过时序可以看出,在遵从布朗运动的随机性的同时,OU噪声不断向着x轴振荡修正,这个过程也叫均值回归。由于使用的高斯噪声,因此每次运行的结果略有不同,但是整体分布相似。使用分数阶的OU公式时可以通过修改参数控制均值、标准和噪声的相关时间,当然对上述结果整体加减的改均值也是可行的。OU噪声的自相关函数并非是单纯的冲激函数,但是其功率谱与高斯噪声相似。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捡到野生的惠惠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值