Mik*_*ich 0 matlab variance random-walk
我是论坛新手,也是编程初学者。
我的任务是在 Matlab(1D 或 2D)中对随机游走进行编程,并且可以调整方差。我找到了随机游走的代码,但我真的很困惑在哪里放置方差。我认为随机游走总是具有相同的方差(= t),所以也许我只是迷失在数学中。
如何控制方差?
对于简单的随机游走,请考虑使用均值为 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)
% 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:绘制随机游走