跳至内容
数据科学
数据分析
Python

随机步步走:探索随机游走模型

剖析随机游走背后的数学原理,探索其多种形式,从一维路径到偏置与高斯模型。使用 Python 了解这些随机过程如何启发生物、物理与金融中的现实现象。
Amberle McKee's photo
Amberle McKee
已更新 · 10分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。

在我大学第一门基于编程的统计课程中,老师提出了一个问题:我们如何对水中单个花粉粒子的布朗运动进行建模?在几次不太成功的尝试后,我和同学们最终找到了正确答案:随机游走。后来我才知道,这个简单的模型被用来刻画各种事物,从动物移动到股票价格波动。

在本文中,我们将探讨随机游走的数学基础,考察不同类型,并讨论其应用。随机游走之所以有趣,部分原因在于它被广泛应用于许多学科。除了我的例子之外,在物理学中,它有助于描述粒子运动;在金融学中,它用于建模股价波动;在生物学中,它解释动物的移动模式。随机游走捕捉了现实世界的随机性,这对模拟随机过程至关重要。

如果您想夯实支撑随机游走理论的统计学基础,我们建议从Introduction to Statistics in R课程或Introduction to Statistics in Python课程开始。

什么是随机游走?

在概率论中,随机游走是一种描述由一系列随机步组成路径的模型。或者说,随机游走是一种数学模型,描述由一系列步骤形成的路径,每一步都是独立决定并具有一定概率。这种随机性使得随机游走本质上不可预测。

想象一个人每一刻都朝随机方向迈出一步。随着时间推移,他的路径会形成一条不可预测、蜿蜒曲折的轨迹。尽管概念简单,它却具有出人意料的深度和多用性,能够对涉及随机性的各种真实场景进行建模。

A conceptual explanation of a random walk

对随机游走的概念性解释。图片由 napkin.ai 提供。

随机游走的思想可以追溯到早期的概率研究。其中一个早期示例,常被称为“醉汉走路”,说明了一个人若随机迈步,将会东倒西歪地游走,而非可预测地朝某个目的地前进。这种随机性,加上每一步都独立于前一步的假设,为现代随机游走模型奠定了基础。

理解随机游走的数学

为理解随机游走,让我们从一个简单的情形开始:一维(1D)随机游走。想象数轴上的一个粒子。每一步它都能沿数轴移动+1或-1。每次移动由向右或向左等概率决定。随着时间推移,粒子的位置形成一种扩散的概率分布,表示它出现在各个位置的可能性。

这一原理可以扩展到二维或三维。在二维(2D)随机游走中,粒子在平面上移动,可以以相等概率向四个基本方向(上、下、左、右)迈步。类似地,在三维(3D)随机游走中,粒子在空间中移动,可以以相等概率朝六个方向(上、下、左、右、前、后)迈步。更高维的随机游走能够刻画更复杂、更贴近现实的情境。

随机游走的一个决定性特征是其随机性,即每一步只取决于当前位置,而不依赖于过去的步骤。这使其成为一种马尔可夫过程——一种数学概念,描述未来状态仅依赖当前状态,而与此前事件序列无关。这种“无记忆”的运动,加上描述潜在位置的概率分布,为理解随机游走提供了坚实的数学基础。

我们可以借助统计特性来分析随机游走,从而理解其随时间的行为。这包括考察到起点的期望距离、可能位置的概率分布,以及回到原点的可能性等方面。这些分析帮助我们量化随机性与可预测性、洞察模式并进行预测。

随机游走的关键性质

随机游走具有若干重要性质,有助于我们理解其行为及应用。以下是需要关注的一些关键方面:

期望与方差

在一维随机游走中,我们可以计算随时间推移距起点的期望距离(或平均位置)。如果每一步向左或向右的概率相等,那么在许多步之后的期望位置仍为零,意味着平均而言,行者会待在起点附近。

然而,位置的方差——衡量可能位置的离散程度——会随着每一步而增加。具体来说,在对称随机游走中,方差随步数线性增长,使其成为衡量随时间相对原点典型距离的有用指标。

自相关

虽然简单随机游走的各步之间没有相关性(每一步都独立于上一部),但某些类型的随机游走会引入自相关,即过去的步伐会影响未来的步伐。例如,在偏置随机游走中,步伐可能在某一方向上略有倾向,导致位置更具可预测性。

随机游走中的自相关会影响我们如何建模和预测其演化。这在某些过去行为会影响未来步骤的应用中尤其相关,例如某些金融模型。

中心极限定理

中心极限定理(CLT)告诉我们,大量独立随机变量之和趋向于服从正态(或高斯)分布,不论原始分布如何。在随机游走的语境中,这意味着随着步数增加,位置的分布趋于近似正态分布。这一性质很有用,因为它使我们能够近似计算在距起点某些距离处找到行者的概率。

大数定律

大数定律(LLN)解释说,随着试验或步数的增加,结果的平均值会收敛到真实平均值。对随机游走而言,这意味着虽然平均位置仍为零,但位置的方差和可能位置的范围会随每一步可预测地增长。该原理有助于在大样本中架起纯随机性与可预测统计模式之间的桥梁。

随机游走的类型

随机游走会因每一步的规则不同而千差万别。这些类型会影响游走的行为。有些为简单或结构化环境设计,而另一些则适用于更复杂的现实现象。让我们来看看一些最常见的随机游走类型。

1D、2D 和 3D 随机游走

随机游走的维度对其行为起着根本作用。在 1D 随机游走中,每一步要么沿直线前进,要么后退。这使得该游走相对容易建模和理解。

然而,当我们转向 2D(平面)和 3D(空间)游走时,可能路径大幅增加,引入新的行为。例如,在 2D 随机游走中,返回起点的概率仍然很高;而在 3D 随机游走中,这一概率会降低。

这种变化在物理和化学等领域尤为重要,在这些领域里,粒子的扩散可能会因维度限制而不同。

晶格随机游走

在晶格随机游走中,运动被限制在网格或晶格上的离散点。该类型的游走常用于物理学和网络理论中,其中节点按网格排列,运动只能发生在相邻节点之间。

一个常见的例子是二维晶格,在其中每一步都允许在笛卡尔网格的相邻点之间移动。这种约束通过限制运动路径简化了建模,在模拟复杂网络或分子结构时很有用。

高斯随机游走

在高斯随机游走中,每一步的步长由高斯(或正态)分布决定。步长不再固定,而是按照钟形曲线分布变化,大多数步幅较小,偶尔出现较大的跳跃。此类游走在金融建模中经常使用,以反映资产价格变动的波动性。

非均质与偏置随机游走

非均质与偏置随机游走允许根据某些概率在步伐方向和步长上产生变化。这种灵活性使其更能适应现实世界的情境。

在非均质随机游走中,朝任一方向移动的概率可能会根据位置或外部条件变化。例如,动物在觅食时可能偏好已知资源区域,从而形成偏置随机游走。这类游走有助于研究依赖情境因素的行为。

带漂移的随机游走

在带漂移的随机游走中,存在持续朝某个方向移动的倾向。例如,尽管每日有波动,股价可能随时间整体上行。游走中的漂移代表影响路径的外部力量或趋势。这种类型常见于金融领域,模型会引入漂移项以表示增长或下降,从而更现实地预测资产价格和市场趋势。

上述每一种随机游走都服务于独特的目的,提供了对随机而又具结构性的行为进行建模的不同方式。维度限制、步长分布以及漂移或偏置的存在,使随机游走在各领域的数据建模与仿真中具有高度的通用性。

随机游走的真实应用

随机游走不仅是理论构造;它们在多个学科的实际应用中起着关键作用。让我们看看随机游走如何为各行业的现实问题求解提供思路。

在数据科学与机器学习中的应用

计算机科学

随机游走支撑了若干计算机科学算法,例如随机采样、Web 图遍历和图像分割。例如,Google 的 PageRank 算法借助随机游走来根据相关性对网页进行排序,模拟用户在互联网上于链接之间随机跳转的方式。

特征提取

在机器学习中,随机游走可以通过突出数据点之间的关系来帮助提取特征。例如,在网络分析中,随机游走可以揭示簇或社群,从而辅助推荐系统与社交网络分析等任务。

异常检测

随机游走还可用于检测数据集中的异常。例如,如果数据点显著偏离随机游走模型中的典型路径,这些点可能表明异常事件或数据错误。异常检测在网络安全和欺诈检测等领域尤为重要。

模拟随机过程

随机游走模拟随机(或由随机决定)的过程,使数据科学家能够对不可预测的现实现象进行建模。通过模拟随机游走,我们可以洞察难以精确预测的系统,如天气模式或客户行为。

时间序列预测

在时间序列分析中,随机游走构成某些预测模型的基础,包括金融中的随机游走假说。这些模型假设时间序列的未来值仅取决于最近的值,与过去趋势无关。想进一步了解时间序列预测,请查看ARIMA for Time Series Forecasting: A Complete Guide。此外,参加我们与 Hyndman 教授合作的Forecasting in R课程,他将随机游走模型与朴素与季节性朴素预测方法联系起来。

在其他领域的应用

金融

随机游走最著名的用途之一在于金融建模,尤其是预测股价。有效市场假说认为,股价变动本质上是随机的,因为新信息会被即时吸收,使未来价格不可预测。随机游走可用于建模股价随时间的变化,展示价格如何在没有可预测路径的情况下波动。

数学

在纯粹数学中,随机游走为复杂问题提供了解法。例如,它们可用于求解拉普拉斯方程、分析网络及探索组合学。

物理与化学

在物理科学中,随机游走对扩散过程建模至关重要,例如分子如何在介质中扩散。布朗运动是一个经典例子,悬浮于流体中的粒子因与周围分子碰撞而做出不可预测的运动,这可以通过随机游走准确模拟。事实上,这也是我最初了解随机游走的方式。

生物学

随机游走在生态学中用于研究动物的移动模式。动物在觅食时的移动可能呈现随机游走,有时会偏向已知资源丰富的区域。其他生物学概念,如种群或基因的扩散,也常可用随机游走原理来建模,从而更容易理解并预测生态系统内的变化。

随机游走的特殊情形与变体

除了经典的随机游走之外,还有若干高级变体将这一概念扩展,以适配特定应用。

自回避游走

自回避游走是一种随机游走,其路径不会再次经过已经到达的位置。该变体在高分子化学等领域尤其有用,可用于模拟聚合物链在不自交的情况下如何形成。由于每一步都要避开已访问点,自回避游走比传统随机游走受限更多。这意味着它们在计算上更具挑战,但对于理解受限空间中不重叠的路径很有帮助。

分枝

在分枝随机游走中,路径可以分裂成多个分支,每个分支都遵循一条随机游走。这类游走在建模分枝过程方面至关重要,例如细胞分裂或信息在网络中的传播。每个“分支”代表一条源于同一来源的独立随机路径。

相关游走

相关游走更进一步,每一步的方向会部分受前一步的影响。这一变体适用于具有惯性的系统建模,在这些系统中,变化是逐渐发生而非完全随机的。相关游走常用于金融中模拟价格趋势,或用于移动生态学中理解动物如何在对过去方向有所记忆的情况下导航其环境。

消圈游走

消圈游走是一种变体,其中当路径自交形成回路时,这些回路会在形成时被移除。每当一步重访某位置时,中间形成的回路被抹去,留下精简且不重复的路径。消圈游走常用于网络分析和迷宫生成算法,因为它们能创建避免冗余的路径。

在 Python 中实现随机游走

让我们尝试用 Python 实现随机游走。开始之前,请确保您已安装 Python(我们将使用 Python 3.10)并具备必要的库。您可以使用 pip 安装缺失的库。我们将用到以下内容:

import numpy as np # for numerical operations and generating random steps
import matplotlib.pyplot as plt # for plotting and visualizing the random walks

1D 随机游走

我们从一个简单的一维随机游走开始,每一步随机选择 +1 或 -1。

# Parameters
n_steps = 100  # Number of steps

# Generate random steps: +1 or -1
steps = np.random.choice([-1, 1], size=n_steps)

# Calculate positions
positions = np.cumsum(steps)

# Plot the random walk
plt.figure(figsize=(10, 6))
plt.plot(positions, marker='o', linestyle='-', markersize=4)
plt.title("1D Random Walk")
plt.xlabel("Step")
plt.ylabel("Position")
plt.grid(True)
plt.show()

这段代码会生成一个简单的随机游走并可视化其随时间的演化。以下是我运行该代码时的输出:

Example of a 1D random walk

请记住,我们运行的是一个随机模型。这意味着每次运行时,输出看起来都会有些不同。

2D 随机游走

现在,让我们将随机游走扩展到二维。每一步的方向都将随机选择。

# Parameters
n_steps = 500

# Generate random steps in x and y directions
x_steps = np.random.choice([-1, 1], size=n_steps)
y_steps = np.random.choice([-1, 1], size=n_steps)

# Calculate positions
x_positions = np.cumsum(x_steps)
y_positions = np.cumsum(y_steps)

# Plot the 2D random walk
plt.figure(figsize=(8, 8))
plt.plot(x_positions, y_positions, marker='o', linestyle='-', markersize=2, label='Random Walk')
plt.plot(x_positions[0], y_positions[0], 'ro', markersize=8, label='Start')  # Red dot for start
plt.plot(x_positions[-1], y_positions[-1], 'ko', markersize=8, label='End')  # Black dot for end
plt.title("2D Random Walk")
plt.xlabel("X Position")
plt.ylabel("Y Position")
plt.grid(True)
plt.axis('equal')  # Ensures equal scaling for both axes
plt.legend()
plt.show()

这段代码会在二维平面上生成一条视觉上颇具吸引力的路径。

Example of a 2D random walk

这种二维随机游走可以针对粒子运动或空间建模等应用进行改造。

偏置随机游走

最后,我们来看一个稍微复杂一点的例子:偏置随机游走。为引入偏置,我们可以调整每个方向的步伐概率。例如,我们可以让“向上”的步伐更可能发生。

# Parameters
n_steps = 100
bias = 0.7  # Probability of stepping +1

# Generate biased random steps in x and y directions
x_steps = np.random.choice([-1, 1], size=n_steps, p=[1-bias, bias])
y_steps = np.random.choice([-1, 1], size=n_steps, p=[1-bias, bias])

# Calculate positions
x_positions = np.cumsum(x_steps)
y_positions = np.cumsum(y_steps)

# Plot the biased 2D random walk
plt.figure(figsize=(8, 8))
plt.plot(x_positions, y_positions, marker='o', linestyle='-', markersize=2, label='Random Walk')
plt.plot(x_positions[0], y_positions[0], 'ro', markersize=8, label='Start')  # Red dot for start
plt.plot(x_positions[-1], y_positions[-1], 'ko', markersize=8, label='End')  # Black dot for end
plt.title("Biased 2D Random Walk")
plt.xlabel("X Position")
plt.ylabel("Y Position")
plt.grid(True)
plt.axis('equal')  # Ensures equal scaling for both axes
plt.legend()
plt.show()

通过改变偏置,您可以观察到游走如何倾向于某个特定方向,从而模拟诸如股票价格漂移或动物迁徙模式等现实情境。

Example of a 2D random walk with an upward bias of 0.7

如果我们将偏置参数改为 0.55,可以明显看到模型行为的巨大差异。虽然仍然偏好向上,但偏置不再那么强,导致出现更多回环与绕行。

Example of a 2D random walk with an upward bias of 0.55

结语

随机游走是数据科学家宝贵的建模工具,适用于从物理到金融等诸多领域。它们能够对复杂的随机过程进行建模,使其在许多现实场景中不可或缺。

还想了解更多?欢迎查看DataCamp 的概率与统计课程合集。您会在 Python 和 R 中发现各种优质课程。如果您对更高阶的内容感兴趣,请查看 DataCamp 的Statistical Simulation in Python课程,以及Introduction to Machine Learning教程。或者,如果您已经准备好检验所学,不妨挑战一些概率谜题。


Amberle McKee's photo
Author
Amberle McKee
LinkedIn

我拥有博士学位,在生物研究环境中从事数据相关工作已有13年。我使用包括 Python、MATLAB 和 R 在内的多种编程语言开发软件。我热衷于与世界分享我对学习的热爱。

随机游走常见问题

什么是随机游走?

随机游走是一种数学模型,描述由一连串随机步组成的路径。

随机游走有哪些应用?

随机游走被用于不同领域,从建模粒子运动、模拟股价变动,到理解动物的移动模式。

简单随机游走与偏置随机游走有何区别?

在简单随机游走中,每一步朝任意方向的可能性相等。在偏置随机游走中,朝某些方向迈步的概率不相等,从而引入对特定方向的偏好或“偏置”。

随机游走如何应用于金融建模?

随机游走因其能够建模内在的不确定性与波动性而用于模拟与预测股价与市场趋势。

随机游走与马尔可夫过程是同一个概念吗?

随机游走是马尔可夫过程的一种特例,其中下一步只取决于当前位置。

主题
数据科学
数据分析
Python

与 DataCamp 一起学习

课程

R 中的概率基础

4 小时
43.1K
在本课程中,你将学习随机变量、分布和条件化的概念。
查看详情开始课程

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。
查看更多