17  数据分布:原理与可视化

本章目标:理解直方图、核密度估计、箱线图和小提琴图的统计原理,能够根据数据特征选择合适的图形,并正确解读分布的形态特征。本章是可视化分析的理论基础,也是后续计量建模(正态性假设、异方差检验、残差分析)的基础。


17.1 从总体到样本:可视化的统计基础

17.1.1 为什么关心分布

均值和标准差是描述数据的最常用统计量,但它们只是分布的摘要,会丢失大量信息。

考虑以下三组数据,均值和标准差完全相同:

数据集 均值 标准差 实际形态
A 0 1 标准正态分布
B 0 1 双峰分布(两个子群体混合)
C 0 1 高度右偏,存在若干极端大值

如果只看均值和标准差,这三组数据”完全一样”。但它们对应的经济含义截然不同:B 可能暗示存在两个不同的市场状态,C 可能意味着尾部风险被严重低估。

可视化分布的意义:让我们”看见”均值和标准差看不见的信息。

17.1.2 总体、样本与经验分布

总体分布(population distribution)是数据生成过程的真实规律,通常未知,用概率密度函数 \(f(x)\) 描述。

样本是从总体中随机抽取的有限个观测值 \(\{x_1, x_2, \ldots, x_n\}\)

经验分布(empirical distribution)是样本的分布,是总体分布的一个估计。当样本量 \(n \to \infty\) 时,经验分布依概率收敛到总体分布。

可视化的核心任务是:用有限的样本数据,尽可能准确地”描绘”出总体分布的形状

直方图、KDE、箱线图是三种不同的方式,各有侧重:

  • 直方图:将样本离散化,直接统计各区间的频率,是经验分布的阶梯形近似
  • KDE:对直方图进行平滑处理,得到连续的密度曲线估计
  • 箱线图:用五个分位数概括分布的中心、扩散和尾部,不展示完整形状

17.2 直方图:原理与实践

17.2.1 基本构造

设有样本 \(\{x_1, x_2, \ldots, x_n\}\),将数据范围划分为 \(K\) 个等宽区间(bins),第 \(k\) 个区间为 \([a_k, a_{k+1})\),区间宽度为:

\[h = \frac{\max(x) - \min(x)}{K}\]

对每个区间统计落入的数据点数 \(n_k\),纵轴有三种表示方式:

频数(Frequency):直接计数 \[\text{纵轴} = n_k\]

频率(Relative Frequency):占总样本的比例 \[\text{纵轴} = p_k = \frac{n_k}{n}, \quad \sum_{k=1}^K p_k = 1\]

密度(Density):单位区间内的频率,使得面积之和为 1 \[\text{纵轴} = f_k = \frac{p_k}{h} = \frac{n_k}{n \cdot h}, \quad \sum_{k=1}^K f_k \cdot h = 1\]

📌 关键区别:只有密度直方图的纵轴与概率密度函数(PDF)处于同一量纲,可以直接与 KDE 曲线叠加比较。频率直方图的面积之和为 1,频数直方图的面积之和为 \(n\)

17.2.2 Bin 宽度的选择

Bin 宽度(即区间数 \(K\))是直方图最关键的参数:\(K\) 太小则过度平滑,\(K\) 太大则噪声过多。

三种常用的自动选择规则

Sturges 规则(最简单,适合正态分布): \[K = \lceil \log_2 n \rceil + 1\]

Scott 规则(最优均方误差,假设正态分布): \[h = 3.49 \cdot \hat{\sigma} \cdot n^{-1/3}\]

Freedman-Diaconis(FD)规则(对离群值更稳健): \[h = 2 \cdot \text{IQR}(x) \cdot n^{-1/3}\]

其中 \(\text{IQR} = Q_3 - Q_1\) 为四分位距。FD 规则在金融数据(存在肥尾和离群值)中通常比 Sturges 更合适。

Sturges 和 Scott 规则均基于正态分布推导,使用标准差 \(\hat{\sigma}\) 作为数据扩散程度的度量。但标准差对极端值非常敏感——一个离群值就能显著放大 \(\hat{\sigma}\),导致 \(h\) 偏大(即 \(K\) 偏小),掩盖分布的细节。

FD 规则改用 IQR(四分位距)代替标准差,IQR 只关注中间 50% 的数据,不受极端值影响,因此在金融收益率(存在”黑天鹅”事件)等场景下更为稳健。

17.2.3 直方图的局限性

  • 结果依赖于 bin 的划分:不同的起始位置或区间数,会得到形状差异很大的直方图
  • 不连续:阶梯形状使得相邻区间的”边界效应”显著,无法呈现分布的平滑特征
  • 难以比较多组:多个直方图叠加时,由于颜色遮挡,对比效果差

这些局限性直接引出了核密度估计(KDE)的必要性。

示例提示词
我有一组金融数据(日收益率),请帮我:

1. 分别用频数、频率、密度三种纵轴绘制直方图,1行3列并排
2. 在密度直方图上叠加 KDE 曲线(用 scipy.stats.norm 拟合的正态密度曲线)
3. 同时展示 bins=5, 15, 30 三种设置的密度直方图对比
4. 所有图形使用模拟数据:N=500, 日收益率 ~ N(0.001, 0.02),seed=42
5. 图形风格简洁,去掉上/右边框,添加中文标题和坐标轴标签

17.3 核密度估计(KDE)

17.3.1 基本思想:从直方图到平滑曲线

直方图的核心问题是”块状”——每个数据点要么完整地贡献给某个 bin,要么完全不贡献。KDE 的思想是:让每个数据点对周围所有位置都有贡献,距离越近贡献越大

具体地,在估计点 \(x\) 处的密度时,KDE 对所有样本点 \(x_i\) 进行加权平均:

\[\hat{f}_h(x) = \frac{1}{nh} \sum_{i=1}^{n} K\!\left(\frac{x - x_i}{h}\right)\]

其中 \(K(\cdot)\)核函数\(h\)带宽(bandwidth),控制平滑程度。

直觉上:在每个样本点 \(x_i\) 处”放置”一个以 \(x_i\) 为中心、形状由 \(K(\cdot)\) 决定的”小山丘”,所有小山丘叠加后归一化,就得到密度估计曲线。

17.3.2 核函数的选择

核函数 \(K(\cdot)\) 需满足:\(K(u) \geq 0\)\(\int K(u)\,du = 1\),且关于 0 对称。

常用核函数:

核函数 表达式 特点
高斯核(默认) \(K(u) = \frac{1}{\sqrt{2\pi}} e^{-u^2/2}\) 无限支撑,平滑,最常用
Epanechnikov 核 \(K(u) = \frac{3}{4}(1-u^2) \mathbf{1}(\|u\| \leq 1)\) 有限支撑,均方误差最优
均匀核 \(K(u) = \frac{1}{2}\mathbf{1}(\|u\|\leq 1)\) 等价于滑动平均直方图

实践中,核函数的选择对结果影响远小于带宽的选择,高斯核是绝大多数场景的合理默认值。

17.3.3 带宽的影响

带宽 \(h\) 是 KDE 中最重要的参数:

  • \(h\) 过小:每个样本点的”小山丘”很窄,曲线追着每个数据点走,欠平滑(过拟合)
  • \(h\) 过大:小山丘很宽,相互重叠严重,曲线过于平坦,过平滑(欠拟合)

最优带宽(Silverman 经验公式,适用于接近正态的数据):

\[h^* = 1.06 \cdot \hat{\sigma} \cdot n^{-1/5}\]

这也是 seaborn.kdeplot()scipy.stats.gaussian_kde 的默认带宽规则(bw_method='scott' 略有差异)。

KDE 估计的均方误差可以分解为偏差的平方和方差之和:

\[\text{MSE}[\hat{f}_h(x)] = \text{Bias}^2[\hat{f}_h(x)] + \text{Var}[\hat{f}_h(x)]\]

  • 偏差\(h\) 增大而增大(过度平滑导致系统性偏离真实密度)
  • 方差\(h\) 增大而减小(更多点参与估计,随机波动减少)

最优带宽是偏差和方差之间的最佳折衷,通过最小化积分均方误差(MISE)得到。这与回归中的”偏差-方差权衡”是同一个原理。

示例提示词
请帮我演示 KDE 带宽选择的影响:
- 生成模拟数据:N=200, x ~ N(0,1), seed=42
- 绘制 1 行 3 列子图,分别使用 bandwidth = 0.1(欠平滑)、
  0.5(适中)、2.0(过平滑)
- 每张子图同时显示:密度直方图(背景)+ KDE 曲线 + 真实正态密度曲线(虚线)
- 结论性标题注明带宽效果
- 使用 scipy.stats.gaussian_kde,手动设置 bw_method

17.4 箱线图与小提琴图

17.4.1 五数概括与箱线图的构造

箱线图用五个统计量概括数据分布:

\[\text{最小值} \quad Q_1 \quad \text{中位数}(Q_2) \quad Q_3 \quad \text{最大值}\]

但实际绘制中,“最小值”和”最大值”并非真正的极值,而是通过 IQR 规则确定的”须”(whisker)的端点:

\[\text{下须} = Q_1 - 1.5 \times \text{IQR}, \quad \text{上须} = Q_3 + 1.5 \times \text{IQR}\]

其中 \(\text{IQR} = Q_3 - Q_1\)(四分位距)。

超出上下须范围的点被标记为离群值(outlier),单独用点绘出。

为什么是 1.5 倍 IQR? 对于正态分布,\([Q_1 - 1.5\,\text{IQR},\; Q_3 + 1.5\,\text{IQR}]\) 约覆盖 99.3% 的数据。因此落在此范围外的点,在正态假设下是小概率事件,被视为潜在离群值。

对正态分布 \(X \sim N(\mu, \sigma^2)\),有: \[Q_1 = \mu - 0.6745\sigma, \quad Q_3 = \mu + 0.6745\sigma, \quad \text{IQR} = 1.349\sigma\]

因此须的上限为: \[Q_3 + 1.5\,\text{IQR} = \mu + 0.6745\sigma + 1.5 \times 1.349\sigma = \mu + 2.698\sigma\]

对应正态分布的概率约为 \(P(X > \mu + 2.698\sigma) \approx 0.35\%\),双侧合计约 0.7%,即约 99.3% 的数据在须内。

这就解释了为什么在正态数据中,箱线图的离群值”很少”;而在肥尾分布(如金融收益率)中,离群值会”很多”——这恰好是箱线图传递的有效信息。

17.4.2 小提琴图:KDE 与箱线图的融合

小提琴图在箱线图的基础上,将两侧对称地绘制 KDE 曲线,宽度正比于该位置的密度估计值。

小提琴图的信息量比箱线图更丰富: - 可以看出分布是否是双峰(箱线图无法反映) - 可以看出分布的偏斜方向和程度 - 仍然保留了中位数、IQR 等分位数信息

何时用箱线图,何时用小提琴图?

场景 推荐
需要精确读取分位数 箱线图
比较多个组的分布形态 小提琴图
数据量较小(\(n < 50\) 箱线图(KDE 在小样本下不可靠)
怀疑存在双峰或多峰 小提琴图
面向非统计专业读者 箱线图(更直观易懂)
示例提示词
请用 Python 演示箱线图和小提琴图的信息差异:
- 生成两组数据,N=500,seed=42:
  - 组1:标准正态分布 N(0,1)
  - 组2:双峰分布(50% 来自 N(-2,0.5),50% 来自 N(2,0.5))
- 两组数据的均值、标准差近似相同
- 绘制 1 行 2 列:左图箱线图,右图小提琴图(两组并排)
- 在图注中说明:箱线图无法区分两组分布形态,小提琴图可以
- 使用 seaborn,色盲友好配色

17.5 分布的形态特征

17.5.1 偏态(Skewness)

偏态衡量分布相对于均值的不对称程度,定义为三阶标准化中心矩:

\[\text{Skewness} = \frac{E[(X-\mu)^3]}{\sigma^3}\]

  • 正偏(右偏)\(\text{Skewness} > 0\),右尾更长,均值 > 中位数 > 众数
    • 金融案例:个股市值分布、房价分布
  • 负偏(左偏)\(\text{Skewness} < 0\),左尾更长,均值 < 中位数 < 众数
    • 金融案例:期权到期收益率

📌 对于资产收益率,负偏(左偏)意味着极端亏损比极端盈利更可能发生,这是风险管理中需要特别关注的特征。

17.5.2 峰态(Kurtosis)

峰态衡量分布尾部的厚薄和峰部的尖峭程度,定义为四阶标准化中心矩:

\[\text{Kurtosis} = \frac{E[(X-\mu)^4]}{\sigma^4}\]

正态分布的峰态为 3。通常使用超额峰态(excess kurtosis):

\[\text{Excess Kurtosis} = \text{Kurtosis} - 3\]

  • 超额峰态 > 0(厚尾/尖峰,leptokurtic):极端值比正态分布更频繁
    • 金融案例:几乎所有金融资产的日收益率,超额峰态通常在 2–10 之间
  • 超额峰态 < 0(薄尾/低峰,platykurtic):极端值比正态分布更罕见

金融数据的典型特征负偏 + 厚尾(fat tails)是金融收益率分布的”风格化特征”(stylized facts),这意味着正态分布会系统性地低估极端损失的概率。

17.5.3 正态性检验的可视化:QQ 图

QQ 图(Quantile-Quantile Plot)将样本的经验分位数与理论分布(通常是正态分布)的分位数进行对比:

  • X 轴:理论正态分布的分位数
  • Y 轴:样本数据的对应分位数
  • 参考线:若数据来自正态分布,点应落在 \(y = x\) 的对角线上

如何读 QQ 图

偏离模式 含义
两端向上偏离参考线 右偏(正偏)
两端向下偏离参考线 左偏(负偏)
两端均偏离参考线(S 形) 厚尾(超额峰态 > 0)
基本落在参考线上 接近正态分布

QQ 图是比正态性检验统计量(如 Jarque-Bera 检验)更直观的工具——它不仅告诉你”是否正态”,还告诉你”在哪里偏离了正态”。

示例提示词
请帮我绘制四种分布的 QQ 图对比,1行4列:
- 正态分布 N(0,1)
- 右偏分布(用 chi-squared(df=3) 模拟)
- 左偏分布(用 -chi-squared(df=3) 模拟)
- 厚尾分布(用 t(df=3) 模拟)
每张子图:散点为样本分位数 vs 正态分布分位数,红色虚线为参考线 y=x
N=500,seed=42,使用 scipy.stats.probplot
结论性标题注明每种分布的 QQ 图特征

17.6 多组分布的比较

17.6.1 分组 KDE 与分组箱线图

比较多组数据的分布时,图形选择取决于组数关注重点

场景 推荐图形
2–3 组,关注形态 叠加 KDE 图(不同颜色/线型)
3–8 组,关注分位数 分组箱线图或小提琴图
8 组以上 山脊图(ridge plot / joy plot)
关注时序演变 分年度/分期箱线图

17.6.2 Small Multiples(分面图)

当组数较多、或希望展示完整的分布形态时,small multiples(分面图)往往优于将所有组叠加在一张图上:

  • 每个子图展示一组的完整分布
  • 所有子图共享相同的坐标轴范围(可比性)
  • 读者可以同时处理多张简单图,而不是一张复杂图

在 seaborn 中,FacetGriddisplot(col=...) 提供了方便的分面功能。

17.6.3 金融场景:宏观经济指标的分布演变

使用 statsmodels 自带的宏观经济数据,比较不同时期 GDP 增速和通胀率的分布特征。

示例提示词
使用 statsmodels.datasets.macrodata 中的美国宏观数据:
- 变量:realgdp(实际GDP)的季度增速
- 按时期分组:1960s, 1970s, 1980s, 1990s, 2000s, 2010s
- 绘制两张图:
  (1) 分组箱线图:横轴为时期,纵轴为季度增速(%)
  (2) 叠加 KDE 图:6 个时期用不同颜色,使用 colorblind palette
- 中文标题:"美国实际GDP增速分布的跨期演变(1960–2019)"
- 去掉上/右边框,图例直接标注在 KDE 曲线末端

17.7 金融数据的典型分布特征

17.7.1 收益率分布的”风格化特征”

金融资产收益率的分布具有一些普遍性规律,被称为风格化特征(stylized facts):

  1. 非正态性:峰态远高于正态分布(厚尾),偏态通常为负
  2. 波动聚集(volatility clustering):大波动之后往往跟随大波动——但这是时序特征,分布图无法反映
  3. 肥尾(fat tails):极端收益率(尤其是极端损失)发生的频率显著高于正态分布预测

实践含义:如果用正态分布建模资产收益率,会系统性地低估极端损失的概率。这是 2008 年金融危机中许多风险模型失效的重要原因之一。

17.7.2 可视化验证:用图形”看见”肥尾

通过以下组合图形,可以直观地验证收益率的肥尾特征:

  • 密度直方图 + 正态密度曲线:观察两端(尤其是左尾)的差异
  • QQ 图:两端偏离参考线 → 厚尾
  • 箱线图:离群值数量远多于正态分布的预期(> 0.7%)
示例提示词
使用 statsmodels.datasets.macrodata 数据,取 realcons(实际消费)
的季度增速作为代理变量,完成以下分析:

1. 计算季度对数增速(log difference × 100)
2. 计算并打印:均值、标准差、偏度、超额峰态
3. 绘制 1 行 3 列的诊断图:
   - 左:密度直方图 + KDE 曲线 + 拟合正态密度曲线(红色虚线)
   - 中:箱线图,标注离群值数量
   - 右:QQ 图,参考线为红色虚线
4. 总标题:"{变量名} 增速的分布特征:肥尾与偏态"
5. 在图注中报告偏度和超额峰态数值

17.8 本章小结

工具 优势 局限 适用场景
直方图 直观,显示频率/密度绝对值 依赖 bin 选择,不连续 单变量分布初探
KDE 连续平滑,不依赖 bin 依赖带宽,小样本不可靠 分布形态估计,多组对比
箱线图 清晰呈现分位数和离群值 看不出双峰、完整形态 多组分位数对比
小提琴图 KDE + 分位数,信息最丰富 相对复杂,小样本不可靠 多组分布形态对比
QQ 图 直观诊断正态偏离方向 仅与一种理论分布对比 正态性检验,残差诊断

三张图的互补关系:在分析一组新数据时,建议同时绘制直方图/KDE + 箱线图 + QQ 图,三者提供互补的视角——KDE 看整体形态,箱线图看分位数和离群值,QQ 图看与正态分布的偏离。


17.9 延伸阅读

  • Wasserman, L. (2006). All of Nonparametric Statistics, Chapter 6. — 直方图和 KDE 的统计理论基础
  • Silverman, B. W. (1986). Density Estimation for Statistics and Data Analysis. — KDE 的经典专著
  • Cont, R. (2001). Empirical properties of asset returns: stylized facts and statistical issues. Quantitative Finance, 1(2), 223–236. — 金融收益率风格化特征的经典综述
  • statsmodels 宏观数据文档:https://www.statsmodels.org/stable/datasets/index.html