描述性统计:均值、中位数、众数
在做出推断之前,你首先要描述你所看到的。均值、中位数、众数、方差和标准差是数据汇总的基本词汇。
描述性统计的目的
在你能够从数据中推断任何东西之前,在你能够检验假设或拟合模型之前,你必须首先理解数据实际看起来是什么样的。描述性统计是这一初步探索的工具。它们将大型数据集汇总为少数几个数字,抓住基本特征:数据集中在哪里、分散程度如何、呈什么形状。
总体与样本
总体和样本之间有一个重要的区别。
总体是你感兴趣研究的整个群体。标普500成分股、過去20年的所有日收益率、某只股票的所有交易——这些都是总体。原则上,你可以测量总体的每个元素,但通常总体太大甚至无限。
样本是你实际观察和测量的总体子集。我们用样本统计量来估计总体参数。样本均值和样本方差的公式与总体对应公式略有不同,我们会仔细区分这两者。
均值
算术均值(通常简称”平均值”)是最常见的集中趋势度量。对于 个观测值 的样本:
均值具有许多吸引人的数学性质。它是分布的平衡点——高于均值的偏差之和等于低于均值的偏差之和。在平方误差损失下,它是总体均值的最佳无偏估计量。它是可加的:合并数据集的均值是各个均值的加权平均。
然而,均值对极端值很敏感。平均收益率为12%的投资组合,可能是一贯的12%收益,也可能是20%的赢家与偶尔40%亏损的混合。仅仅靠均值无法区分这些情况。
中位数
中位数是当数据按顺序排列时的中间值——第50百分位。如果 是奇数,中位数是单一的中间值。如果 是偶数,它是两个中间值的平均值。
中位数对异常值是稳健的。如果某一天因闪崩亏损30%,中位数几乎不受影响,而均值会大幅下降。这种稳健性使中位数成为高度偏斜数据(如收入分布或偶尔有极端波动的资产收益)首选的集中趋势度量。
众数
众数是数据集中出现频率最高的值。它是唯一适用于分类(非数值)数据的集中趋势度量——你投资组合中最常见的板块、最频繁的交易模式。
对于连续数据,每个值都是唯一的(没有重复),所以众数在其原始形式下用处不大。相反,从业者通常看直方图的众数——分布的峰值,也称为众数区间。
方差与标准差
集中趋势告诉你数据在哪里。方差和标准差告诉你数据有多分散。
对于均值为 的 个观测值样本:
样本方差在分母中使用 (而不是 ),这使其成为总体方差的无偏估计量。这就是贝塞尔校正。
标准差 是方差的平方根。因为方差是平方单位,标准差回到数据的原始单位,使其更易于解释。对于金融收益,标准差被称为波动率——这是量化金融中如此核心的概念,以至于它有了自己的名字。
极差与四分位距
极差是最大值和最小值之间的差异:。它计算简单,但受异常值影响很大。
四分位距(IQR)是中间50%数据的范围:
其中 是第25百分位, 是第75百分位。IQR 对异常值稳健,告诉你”典型”数据的分散程度。一个常见的经验法则是:超出 和 的值可能是异常值。
偏度与峰度
偏度衡量分布的不对称性:
- 正偏度意味着右尾更长——可能获得极端收益但损失有界。资产收益通常呈正偏,因为存在大幅收益的可能性。
- 负偏度意味着左尾更长——可能发生崩盘但收益有上限。这描述了许多保险型支付结构。
- 零偏度意味着对称,如正态分布。
峰度衡量相对于正态分布的尾部厚度:
正态分布的峰度为3。超额峰度是峰度减去3。正超额峰度(“尖峰分布”)意味着比正态分布更肥的尾部——比正态分布更尖锐的峰值——这正是我们在金融收益中观察到的现象。这就是为什么市场中的4西格玛事件比正态模型预测的发生得更频繁。
五数概括与箱线图
五数概括用五个数字捕捉数据集:最小值、、中位数、 和最大值。箱线图(或箱须图)将这五个数字可视化。箱体从 延伸到 ,箱内的线是中位数,须延伸至最极端的值(在1.5倍 IQR 范围内)。
Python:探索标普500收益
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(42)
n = 1_000
daily_returns = np.random.normal(0.0003, 0.01, n) # ~8% 年化收益, ~16% 年化波动率
returns_series = pd.Series(daily_returns)
print("描述性统计:")
print(returns_series.describe())
print(f"\n偏度: {returns_series.skew():.4f}")
print(f"超额峰度: {returns_series.kurtosis():.4f}")
print(f"中位数: {returns_series.median():.6f}")
print(f"IQR: {returns_series.quantile(0.75) - returns_series.quantile(0.25):.6f}")
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 带均值和中位数标记的直方图
axes[0].hist(daily_returns, bins=50, density=True, alpha=0.7)
axes[0].axvline(returns_series.mean(), color='red', linestyle='--', lw=2, label=f'Mean: {returns_series.mean():.4f}')
axes[0].axvline(returns_series.median(), color='green', linestyle=':', lw=2, label=f'Median: {returns_series.median():.4f}')
axes[0].set_xlabel('日收益率')
axes[0].set_ylabel('密度')
axes[0].set_title('模拟日收益率分布')
axes[0].legend()
axes[0].grid(alpha=0.3)
# 箱线图
axes[1].boxplot(daily_returns, vert=True)
axes[1].set_ylabel('日收益率')
axes[1].set_title('日收益率箱线图')
axes[1].grid(alpha=0.3)
plt.tight_layout()
plt.show()
提示词
用 numpy 模拟收益率,用 pandas 算描述性统计(五数概括、偏度、峰度、IQR),画带均值中位数标记的直方图和箱线图。
在真实的标普500数据中,你通常会看到轻微的负偏度和正超额峰度。模型中通常假设的正态分布只是一个近似——实际收益分布比高斯钟形曲线有更肥的尾部和一个更尖锐的峰值。
参考文献
Moore, D. S. and McCabe, G. P. Introduction to the Practice of Statistics, Chapter 1. Freeman. Ross, S. M. A First Course in Probability, review of statistics. Pearson.