Matlab 随机游走的方差

Mik*_*ich 0 matlab variance random-walk

我是论坛新手,也是编程初学者。

我的任务是在 Matlab(1D 或 2D)中对随机游走进行编程,并且可以调整方差。我找到了随机游走的代码,但我真的很困惑在哪里放置方差。我认为随机游走总是具有相同的方差(= t),所以也许我只是迷失在数学中。

如何控制方差?

Sec*_*Man 5

对于简单的随机游走,请考虑使用均值为 0(也称为“漂移”)和非零方差的正态分布。请注意,由于均值为零且分布是对称的,因此这是对称随机游走。在每一步上,该过程都同样类似于向上或向下、向左或向右等。

一种简单的方法:
步骤 1:生成每个步骤
步骤 2:获取累积和

这可以针对任意数量的维度来完成。

% MATLAB R2019a
drift = 0;
std = 1;         % std = sqrt(variance)
pd = makedist('Normal',drift,std);

% One Dimension
nsteps = 50;
Z = random(pd,nsteps,1);
X = [0; cumsum(Z)];
plot(0:nsteps,X)          % alternatively:  stairs(0:nsteps,X)   
Run Code Online (Sandbox Code Playgroud)

在二维中:

% Two Dimensions
nsteps = 100;
Z = random(pd,nsteps,2);
X = [zeros(1,2); cumsum(Z)];
Run Code Online (Sandbox Code Playgroud)

简单的二维随机游走,每一步都来自 Normal(0,1)。

% 2D Plot
figure, hold on, box on
plot(X(1,1),X(1,1),'gd','DisplayName','Start','MarkerFaceColor','g')
plot(X(:,1),X(:,2),'k-','HandleVisibility','off')
plot(X(end,1),X(end,2),'rs','DisplayName','Stop','MarkerFaceColor','r')
legend('show')
Run Code Online (Sandbox Code Playgroud)

方差会影响“波动性”,因此相对于较低方差,较高的方差意味着过程更加“跳跃”。

具有差异方差的两个独立的高斯二维随机游走。

注意:我故意避免了布朗运动类型的实现(缩放、步长减小限制等),因为 OP 特别要求随机游走。由于高斯特性,布朗运动实现可以将方差与时间索引联系起来。


OP 写道:

随机游走始终具有相同的方差

对于步骤来说也是如此(每个步骤通常具有相同的分布)。然而,过程在某个时间步长(或时间点)的方差应该随着步数的增加(或随着时间的增加)而增加。


相关:
MATLAB:绘制随机游走