← 返回Book 2目录

热图、概率密度与随机过程

Heatmap, Density & Stochastic Process

从数字艺术到统计分布,再到随机行走

用热图展示无理数的小数位

使用高精度数学库mpmath获取无理数的大量小数位(1025位), 将这些数字(0-9)映射为颜色,reshape为32×32矩阵, 用seaborn热图可视化。这种方法将抽象的数字序列转化为视觉图案, 揭示无理数小数位分布的随机性或潜在模式。

高精度计算

使用mpmath库设置精度:mp.dps = 2^10 + 1 = 1025位小数

mp.dps = 2**10 + 1
digits = str(mp.pi)[2:] # 去掉"3."
digits_matrix = np.array([int(x) for x in digits]).reshape((32, 32))

🔢 无理数的数字艺术

将无理数的小数位(0-9)映射为颜色,展示在32×32网格中,揭示数字分布的视觉模式

π - 圆周率

值: 3.14159265...

展示: 前1024位小数(32×32网格)

颜色: Rainbow色谱,0-9映射到不同颜色

💡 观察是否有明显的模式或随机性

颜色图例(0-9)

0
1
2
3
4
5
6
7
8
9

🎨 可视化方法

将1024位小数reshape为32×32矩阵, 每个单元格颜色代表该位的数字(0-9)。

🔍 观察要点

真正的无理数小数位应呈现随机分布, 不应有明显的规律或重复模式。

📊 数学意义

无理数的小数位是无限不循环的, 热图展示其局部分布特征。

🥧 π(圆周率)

π = 3.14159265...
圆周长与直径之比

📈 e(自然常数)

e = 2.71828182...
自然对数的底数

📐 √2(根号2)

√2 = 1.41421356...
正方形对角线长度

✨ φ(黄金分割比)

φ = 1.61803398...
(1+√5)/2

从散点到概率密度

使用鸢尾花数据集(iris)展示如何从离散的散点图过渡到连续的概率密度估计(KDE)。 核密度估计(Kernel Density Estimation)用高斯核对数据点进行平滑, 估计二维空间中的概率密度函数。详细理论参考《统计至简》第17章。

KDE等高线图

使用seaborn.kdeplot绘制核密度估计等高线填充图

sns.kdeplot(data=iris, x="sepal_length", y="sepal_width",
    fill=True, cmap='RdYlBu_r', n_levels=20)

散点+等高线

使用scipy.stats.gaussian_kde计算PDF,叠加到散点图上

kernel = st.gaussian_kde(samples.T)
plt.contour(XX, YY, PDF, levels=15)

用散点颜色代表概率密度

将每个散点的颜色映射到该位置的概率密度值, 密度高的区域点颜色深,密度低的区域点颜色浅。

sns.scatterplot(x="sepal_length", y="sepal_width",
    hue=kernel(samples.T), palette='RdYlBu_r')

🎨 自定义色谱

使用sns.light_palette('#0091FE', as_cmap=True)创建自定义蓝色渐变色谱。 也可使用dark_palette创建深色渐变。

🌸 按物种分类

设置hue="species",为三个鸢尾花物种分别绘制KDE等高线, fill=False仅显示等高线不填充。

满足二元高斯分布的随机数

生成服从二元高斯分布的随机样本,叠加理论概率密度函数(PDF)的等高线。 协方差矩阵控制两个变量的相关性:相关系数ρ决定椭圆的倾斜方向和程度。 ρ>0时正相关(右上倾斜),ρ<0时负相关(左上倾斜),ρ=0时独立(圆形)。

协方差矩阵

SIGMA = [[σ_X², σ_X·σ_Y·ρ], [σ_X·σ_Y·ρ, σ_Y²]]

当σ_X = σ_Y = 1时,SIGMA = [[1, ρ], [ρ, 1]]
ρ ∈ [-1, 1]是相关系数,控制X和Y的线性相关性

📊 二元高斯分布探索

观察不同相关系数ρ如何影响二元高斯分布的形状和样本点的分布模式

-0.9500.95

分布特征

均值: μ = (0, 0)

标准差: σ_X = σ_Y = 1

相关系数: ρ = 0.50

🟡 弱正相关:略微右上倾斜

➕ 正相关 (ρ>0)

X增大时Y倾向于增大, 分布呈右上-左下倾斜的椭圆。

⭕ 零相关 (ρ=0)

X和Y独立, 分布呈圆形,各方向标准差相同。

➖ 负相关 (ρ<0)

X增大时Y倾向于减小, 分布呈左上-右下倾斜的椭圆。

📈 ρ = +0.8

强正相关:X增大时Y倾向增大, 椭圆主轴右上-左下方向。

⭕ ρ = 0

零相关(独立):X和Y无线性关系, 分布呈圆形。

📉 ρ = -0.8

强负相关:X增大时Y倾向减小, 椭圆主轴左上-右下方向。

用色谱分段渲染一条曲线

使用matplotlib的LineCollection技术,将一条曲线打散成多个线段, 每个线段用不同颜色渲染,形成连续的颜色梯度效果。 这种技术特别适用于可视化时间序列、轨迹等数据, 用颜色编码时间或其他连续变量。

1. 定义函数

colorline(x, y, cmap):主函数

  • • 调用make_segments将曲线打散
  • • 使用LineCollection创建线段集合
  • • array参数控制每段的颜色映射值

make_segments(x, y):辅助函数

  • • 将点转换为形状(-1, 1, 2)
  • • 连接相邻点形成线段

2. 生成随机轨迹

二维随机行走:

delta_x = np.random.normal(0, 1, N)
delta_y = np.random.normal(0, 1, N)
disp_x = np.cumsum(delta_x)
disp_y = np.cumsum(delta_y)

累加生成连续轨迹,添加起点(0, 0)

3-5. 可视化单条和多条曲线

单条曲线(N_steps=10000)

  • • 黑色背景(dark_background)
  • • rainbow_r色谱(反向彩虹)
  • • 标记起点和终点(白色×)

多条曲线(50条×200步)

  • • for循环绘制每条轨迹
  • • rainbow色谱分段着色
  • • σ=1, Δt=0.2参数

🎨 LineCollection

matplotlib核心技术, 高效渲染大量线段并单独着色。

🌈 颜色映射

array参数用np.linspace(0, 1, N), 线性映射到色谱。

⏱️ 时间编码

颜色代表时间进度, 直观展示轨迹演化过程。

随机行走的趋势

生成带漂移率μ的随机行走,绘制多条路径、均值轨迹和置信区域。 置信区域由理论公式 μt ± kσ√t 确定(k=1,2,3对应约68%, 95%, 99.7%)。 漂移率μ控制长期趋势:μ>0向上漂移,μ<0向下漂移,μ=0无趋势。

增量公式

ΔX ~ N(μ·Δt, σ·√Δt) = N(μ·Δt, σ²·Δt)

• 无漂移:μ=0,纯随机游走(布朗运动)
• 有漂移:μ≠0,带趋势的随机过程

📈 随机行走的趋势

观察漂移率μ如何影响随机行走的长期趋势,以及置信区域的演化

-0.500.5
1050100

参数设置

漂移率 μ: -0.20

标准差 σ: 1

时间步 Δt: 1

总步数: 100

📉 向下漂移趋势

🔵 置信区域

3层蓝色带:μt ± kσ√t(k=1,2,3)
理论上约68%, 95%, 99.7%的路径落在对应区域内。

⚫ 深蓝细线

每条细线代表一条随机行走路径, 展示个体轨迹的随机性。

🔴 红色粗线

所有路径的均值, 应接近理论趋势 E[X_t] = μt。

📐 置信区域公式

在时刻t,随机行走X_t的分布为:

E[X_t] = μ·t
Var[X_t] = σ²·t
std[X_t] = σ·√t

因此置信区域为:μt ± kσ√t,随时间扩大

🎯 实际应用

金融:股价模型(几何布朗运动)

物理:粒子扩散、热传导

生物:种群动态、基因漂变

工程:信号处理、控制系统

💡 核心洞察

本章展示了数据可视化的多样性——从无理数的数字艺术到统计分布的概率密度, 再到随机过程的时间演化。每种可视化方法都揭示了数据的不同侧面: 热图将离散数字转化为连续色彩模式,KDE将散点平滑为概率密度曲面, 二元高斯分布用等高线展示相关性的几何意义,分段着色用颜色编码时间信息, 随机行走的置信带则揭示了不确定性如何随时间增长。

无理数的热图可视化虽然看似简单,却蕴含深刻意义——真正随机的数字序列 不应呈现明显的视觉模式。这种"缺乏模式"本身就是一种模式, 证明了无理数小数位的统计独立性。而在概率密度估计中, 我们看到了从离散到连续的转化——KDE不仅仅是数据的平滑, 更是从有限样本到总体分布的推断,这是统计学的核心思想。

二元高斯分布的相关性可视化直观展示了协方差矩阵的几何意义—— 正相关对应右上倾斜的椭圆,负相关对应左上倾斜,零相关对应圆形。 这种几何直觉在多元统计、主成分分析、机器学习中无处不在。 最后,随机行走的趋势带可视化揭示了随机过程的一个基本事实: 不确定性随时间平方根速度增长(σ√t),而确定性趋势线性增长(μt)。 这种"信噪比"随时间演化的规律,解释了为什么长期预测如此困难, 也是金融风险管理、气候预测、流行病学模型的理论基础。 从静态的热图到动态的随机过程,我们看到可视化如何帮助理解 从确定性到随机性、从离散到连续、从静态到动态的数学概念。