使用 Matlab 随机游走的方差

Variance in random Walk with Matlab

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

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

如何控制方差?

对于均值为 0(也称为 'drift')且方差非零的简单 random walk, consider using the Normal distribution。请注意,由于均值为零且分布是对称的,因此这是一个对称的随机游走。在每一步上,这个过程就像向上或向下、向左或向右等一样。

一个简单的方法:
第一步:生成每一步
第二步:获取累计和

可以对任意数量的维度执行此操作。

% 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)   

并且在二维中:

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

% 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')

方差会影响"volatility",因此相对于较低的方差,较高的方差意味着更多的"jumpy"过程。

注意:我有意避免了布朗运动类型的实现(缩放、步长在极限内减小等),因为 OP 特别要求进行随机游走。由于高斯属性,布朗运动实现可以 link 时间索引的方差。


OP 写道:

the random walk has always the same variance

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


相关: