统计学核心概念详解
引言:用数字读懂世界
想象一下,你是一位老师,刚刚批改完一次考试:
"这次考试的平均分是多少?"
"最高分和最低分差距大吗?"
"大部分学生的成绩集中在哪个分数段?"
"成绩分布是偏左还是偏右?"
这些问题都需要用统计学来回答。统计学就像是一把"数字显微镜",帮助我们看清数据背后的规律和特征。
统计学不是枯燥的数字游戏,而是理解世界的工具。从日常生活的"平均工资"到人工智能的"特征工程",统计学无处不在。
第一部分:集中趋势指标
1. 均值(Mean / Average)
直观理解
比喻1:平均分配
想象5个朋友一起吃饭,总共花了250元:
- 平均每人:250 ÷ 5 = 50元
均值就是把总数平均分配给每个人。
比喻2:平衡点
想象一个跷跷板,均值就是让跷跷板平衡的那个点。
数学定义
算术均值:
对于 n 个数据:x₁, x₂, ..., xₙ
均值 = (x₁ + x₂ + ... + xₙ) / n
或写成:
x̄ = (1/n) × Σxᵢ
计算示例
例子1:考试成绩
成绩:[85, 90, 78, 92, 88, 85, 90]
均值 = (85 + 90 + 78 + 92 + 88 + 85 + 90) / 7
= 608 / 7
= 86.86
例子2:加权均值
当不同数据的重要性不同时,使用加权均值:
课程成绩:
数学(4学分):85分
英语(3学分):90分
体育(1学分):95分
加权均值 = (85×4 + 90×3 + 95×1) / (4+3+1)
= (340 + 270 + 95) / 8
= 705 / 8
= 88.125
均值的性质
-
敏感性:均值对极端值很敏感
数据:[10, 20, 30, 40, 50] → 均值 = 30 数据:[10, 20, 30, 40, 1000] → 均值 = 220(被1000拉高) -
代数性质:
如果所有数据都加上常数 c: 新均值 = 原均值 + c 如果所有数据都乘以常数 k: 新均值 = 原均值 × k
实际应用场景
- 经济:人均GDP、平均工资
- 教育:班级平均分、学校平均录取分数
- 商业:平均销售额、平均客单价
- AI:特征归一化、损失函数计算
2. 中位数(Median)
直观理解
比喻:排队找中间
想象一群人按身高排队:
- 中位数就是站在最中间那个人的身高
- 如果人数是偶数,中位数是中间两个人的平均身高
关键特点:中位数不受极端值影响。
数学定义
中位数:将数据从小到大排序后,位于中间位置的数。
如果 n 是奇数:
中位数 = x₍ₙ₊₁₎/₂
如果 n 是偶数:
中位数 = (x₍ₙ/₂₎ + x₍ₙ/₂₊₁₎) / 2
计算示例
例子1:奇数个数据
成绩:[85, 90, 78, 92, 88]
排序:[78, 85, 88, 90, 92]
↑
中位数
中位数 = 88
例子2:偶数个数据
成绩:[85, 90, 78, 92, 88, 85]
排序:[78, 85, 85, 88, 90, 92]
↑ ↑
中间两个数
中位数 = (85 + 88) / 2 = 86.5
例子3:极端值的影响
数据1:[10, 20, 30, 40, 50]
均值 = 30,中位数 = 30
数据2:[10, 20, 30, 40, 1000]
均值 = 220,中位数 = 30 ← 不受极端值影响
中位数的优势
- 稳健性:不受极端值(异常值)影响
- 适用性:适合偏态分布的数据
- 直观性:代表"典型值"
实际应用场景
- 收入统计:中位数收入比平均收入更能反映真实情况
- 房价分析:中位数房价不受豪宅影响
- 性能测试:中位数响应时间比平均值更稳定
- AI:鲁棒性评估、异常检测
3. 众数(Mode)
直观理解
比喻:投票选举
想象一次投票:
- 众数就是得票最多的那个选项
关键特点:众数是出现频率最高的值。
数学定义
众数:数据中出现次数最多的值。
众数 = argmax(频率)
计算示例
例子1:离散数据
成绩:[85, 90, 78, 92, 88, 85, 90, 85]
统计频率:
85 出现 3 次
90 出现 2 次
78 出现 1 次
92 出现 1 次
88 出现 1 次
众数 = 85(出现次数最多)
例子2:连续数据(分组)
对于连续数据,需要先分组:
身高数据:[165, 170, 168, 172, 170, 175, 168, 170]
分组(每5cm一组):
165-170: 165, 168, 168, 170, 170, 170 → 6人
170-175: 172, 175 → 2人
众数组 = 165-170(人数最多)
例子3:多众数
数据:[1, 2, 2, 3, 3, 4]
2 和 3 都出现 2 次
→ 双众数:2 和 3
众数的特点
- 适用性:适合分类数据和离散数据
- 不受极端值影响
- 可能不存在:如果所有值出现次数相同
- 可能多个:可能有多个众数
实际应用场景
- 市场调研:最受欢迎的产品
- 服装设计:最常见的尺码
- 用户行为:最常访问的页面
- AI:分类问题中的主要类别
4. 三个指标的比较
对称分布
数据:[1, 2, 3, 4, 5]
均值 = 3
中位数 = 3
众数 = 无(或所有值)
三个指标接近或相等
右偏分布(正偏)
数据:[1, 2, 3, 4, 100]
均值 = 22(被100拉高)
中位数 = 3
众数 = 无
均值 > 中位数 > 众数
左偏分布(负偏)
数据:[1, 2, 3, 4, 5]
如果大部分数据集中在右侧:
均值 < 中位数 < 众数
记忆口诀:
- 右偏:均值被拉向右(大值),均值 > 中位数
- 左偏:均值被拉向左(小值),均值 < 中位数
第二部分:离散程度指标
1. 极差(Range)
直观理解
比喻:温度计
想象一天的温度:
- 最低温度:5°C
- 最高温度:25°C
- 极差 = 25 - 5 = 20°C
极差就是最大值和最小值的差距。
数学定义
极差:
极差 = 最大值 - 最小值
Range = max(xᵢ) - min(xᵢ)
计算示例
例子1:考试成绩
成绩:[85, 90, 78, 92, 88, 85, 90]
最大值 = 92
最小值 = 78
极差 = 92 - 78 = 14
例子2:极端值的影响
数据1:[10, 20, 30, 40, 50]
极差 = 50 - 10 = 40
数据2:[10, 20, 30, 40, 1000]
极差 = 1000 - 10 = 990 ← 受极端值影响很大
极差的特点
- 简单直观:最容易理解
- 易受极端值影响:一个异常值就能大幅改变极差
- 信息量少:只考虑最大值和最小值,忽略中间数据
实际应用场景
- 质量控制:产品尺寸的允许范围
- 天气预报:日温差
- 股票分析:最高价和最低价的差距
- AI:数据范围检查、异常值检测
2. 四分位距(IQR, Interquartile Range)
直观理解
比喻:去掉头尾看中间
想象100个学生按成绩排队:
- Q1(第一四分位数):第25名的成绩
- Q2(第二四分位数):第50名的成绩(就是中位数)
- Q3(第三四分位数):第75名的成绩
- IQR = Q3 - Q1:中间50%学生的成绩范围
IQR衡量中间50%数据的离散程度。
数学定义
四分位数:
- Q1:25%的数据小于它
- Q2:50%的数据小于它(中位数)
- Q3:75%的数据小于它
四分位距:
IQR = Q3 - Q1
计算示例
例子1:计算四分位数
数据:[10, 15, 20, 25, 30, 35, 40, 45, 50]
排序:[10, 15, 20, 25, 30, 35, 40, 45, 50]
Q1=20 Q2=30 Q3=40
IQR = Q3 - Q1 = 40 - 20 = 20
详细计算步骤:
步骤1:排序数据
[10, 15, 20, 25, 30, 35, 40, 45, 50]
步骤2:找中位数(Q2)
n = 9,中位数位置 = (9+1)/2 = 5
Q2 = 30
步骤3:找Q1(下半部分的中位数)
下半部分:[10, 15, 20, 25]
Q1 = (15 + 20) / 2 = 17.5
步骤4:找Q3(上半部分的中位数)
上半部分:[35, 40, 45, 50]
Q3 = (40 + 45) / 2 = 42.5
步骤5:计算IQR
IQR = Q3 - Q1 = 42.5 - 17.5 = 25
例子2:使用IQR识别异常值
异常值判断规则:
- 下界 = Q1 - 1.5 × IQR
- 上界 = Q3 + 1.5 × IQR
- 超出上下界的数据视为异常值
数据:[10, 15, 20, 25, 30, 35, 40, 45, 50, 100]
Q1 = 17.5, Q3 = 42.5, IQR = 25
下界 = 17.5 - 1.5 × 25 = -20
上界 = 42.5 + 1.5 × 25 = 80
100 > 80,所以100是异常值
IQR的优势
- 稳健性:不受极端值影响
- 信息量:关注中间50%的数据
- 异常检测:可以识别异常值
实际应用场景
- 箱线图:用IQR绘制箱线图
- 异常检测:识别数据中的异常值
- 稳健统计:在存在异常值时的离散程度度量
- AI:数据清洗、特征工程
3. 方差(Variance)
直观理解
比喻1:偏离中心的程度
想象一群学生围绕老师站成一圈:
- 方差衡量学生们距离老师的平均距离的平方
- 方差大 = 学生们分散得很开
- 方差小 = 学生们聚集在一起
比喻2:稳定性
方差就像衡量数据的"稳定性":
- 低方差 = 数据稳定,变化小
- 高方差 = 数据不稳定,变化大
数学定义
总体方差(Population Variance):
σ² = (1/N) × Σ(xᵢ - μ)²
其中:
- N 是总体大小
- μ 是总体均值
- xᵢ 是第 i 个数据点
样本方差(Sample Variance):
s² = (1/(n-1)) × Σ(xᵢ - x̄)²
其中:
- n 是样本大小
- x̄ 是样本均值
- 除以 (n-1) 而不是 n(贝塞尔校正)
为什么除以 (n-1)?
样本方差除以 (n-1) 是为了得到总体方差的无偏估计:
- 样本均值 x̄ 是从样本中计算出来的
- 这导致样本方差会系统性低估总体方差
- 除以 (n-1) 可以修正这个偏差
计算示例
例子1:计算样本方差
数据:[2, 4, 6, 8, 10]
步骤1:计算均值
x̄ = (2 + 4 + 6 + 8 + 10) / 5 = 6
步骤2:计算每个数据与均值的差
(2-6) = -4
(4-6) = -2
(6-6) = 0
(8-6) = 2
(10-6) = 4
步骤3:计算差的平方
(-4)² = 16
(-2)² = 4
0² = 0
2² = 4
4² = 16
步骤4:求和并除以 (n-1)
s² = (16 + 4 + 0 + 4 + 16) / (5-1)
= 40 / 4
= 10
例子2:方差的意义
数据1:[5, 5, 5, 5, 5]
均值 = 5
方差 = 0(完全没有变化)
数据2:[1, 3, 5, 7, 9]
均值 = 5
方差 = 10(有一定变化)
数据3:[0, 0, 5, 10, 10]
均值 = 5
方差 = 20(变化很大)
方差的性质
- 非负性:方差 ≥ 0,且方差 = 0 当且仅当所有数据相等
- 单位:方差的单位是原数据单位的平方
- 敏感性:对极端值敏感
实际应用场景
- 质量控制:产品尺寸的稳定性
- 投资分析:收益率的波动性
- 实验设计:评估实验结果的可靠性
- AI:特征选择、正则化、损失函数
4. 标准差(Standard Deviation)
直观理解
比喻:回到原始单位
方差是"距离的平方",标准差是"距离":
- 标准差 = √方差
- 标准差和原始数据有相同的单位,更容易理解
比喻2:典型偏差
标准差表示"典型情况下,数据偏离均值多少"。
数学定义
总体标准差:
σ = √σ² = √[(1/N) × Σ(xᵢ - μ)²]
样本标准差:
s = √s² = √[(1/(n-1)) × Σ(xᵢ - x̄)²]
计算示例
例子1:从方差计算标准差
数据:[2, 4, 6, 8, 10]
前面计算得到:方差 s² = 10
标准差 s = √10 ≈ 3.16
例子2:标准差的意义
数据:[5, 5, 5, 5, 5]
均值 = 5,标准差 = 0
→ 所有数据都等于均值
数据:[1, 3, 5, 7, 9]
均值 = 5,标准差 ≈ 3.16
→ 典型情况下,数据偏离均值约3.16
数据:[0, 0, 5, 10, 10]
均值 = 5,标准差 ≈ 4.47
→ 数据变化更大
例子3:经验法则(68-95-99.7规则)
对于正态分布:
- 68% 的数据在均值 ± 1个标准差范围内
- 95% 的数据在均值 ± 2个标准差范围内
- 99.7% 的数据在均值 ± 3个标准差范围内
假设:身高均值 = 170cm,标准差 = 10cm
68%的人身高在:170 ± 10 = [160, 180]cm
95%的人身高在:170 ± 20 = [150, 190]cm
99.7%的人身高在:170 ± 30 = [140, 200]cm
标准差 vs 方差
| 特性 | 方差 | 标准差 |
|---|---|---|
| 单位 | 原单位的平方 | 与原单位相同 |
| 数值大小 | 较大 | 较小 |
| 解释性 | 较难理解 | 容易理解 |
| 计算 | 先计算方差 | 方差的平方根 |
实际应用场景
- 统计推断:置信区间、假设检验
- 风险评估:金融风险度量
- 质量控制:6σ质量管理
- AI:特征缩放、归一化、正则化
第三部分:分布形状指标
1. 偏度(Skewness)
直观理解
比喻:跷跷板
想象一个跷跷板:
- 对称分布:两边平衡,偏度 = 0
- 右偏(正偏):右边重,尾巴向右延伸,偏度 > 0
- 左偏(负偏):左边重,尾巴向左延伸,偏度 < 0
偏度衡量分布的对称性。
数学定义
偏度系数:
Skewness = (1/n) × Σ[(xᵢ - x̄) / s]³
或
Skewness = E[(X - μ)³] / σ³
解释:
- 偏度 = 0:对称分布(如正态分布)
- 偏度 > 0:右偏(正偏),尾巴向右
- 偏度 < 0:左偏(负偏),尾巴向左
计算示例
例子1:计算偏度
数据:[1, 2, 3, 4, 5, 6, 7, 8, 9, 100]
均值 x̄ = 14.3
标准差 s ≈ 28.5
标准化数据:zᵢ = (xᵢ - x̄) / s
z = [-0.47, -0.43, -0.40, -0.36, -0.40, -0.29, -0.25, -0.22, -0.18, 3.01]
计算 z³:
z³ = [-0.10, -0.08, -0.06, -0.05, -0.06, -0.02, -0.02, -0.01, -0.01, 27.27]
偏度 = 平均值(z³) ≈ 2.69 > 0(右偏)
例子2:不同偏度的分布
对称分布(偏度 ≈ 0):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
数据均匀分布在均值两侧
右偏分布(偏度 > 0):
[1, 2, 3, 4, 5, 6, 7, 8, 100]
大部分数据在左侧,少数大值在右侧
左偏分布(偏度 < 0):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果大部分数据在右侧,少数小值在左侧
偏度的判断方法
方法1:均值和中位数的关系
右偏:均值 > 中位数
左偏:均值 < 中位数
对称:均值 ≈ 中位数
方法2:观察分布图
右偏:尾巴向右延伸
左偏:尾巴向左延伸
实际应用场景
- 收入分布:通常右偏(少数高收入者)
- 考试分数:可能左偏(大部分学生成绩较好)
- 数据预处理:识别需要转换的数据
- AI:特征工程、数据变换(对数变换处理右偏)
2. 峰度(Kurtosis)
直观理解
比喻:山峰的形状
想象一座山:
- 高峰度(尖峰):山顶很尖,数据集中在中心,但尾部有极端值
- 低峰度(平峰):山顶平缓,数据分布均匀
- 正态分布:峰度 = 3(作为基准)
峰度衡量分布的"尖锐程度"和"尾部厚度"。
数学定义
峰度系数:
Kurtosis = (1/n) × Σ[(xᵢ - x̄) / s]⁴
或
Kurtosis = E[(X - μ)⁴] / σ⁴
超额峰度(Excess Kurtosis):
Excess Kurtosis = Kurtosis - 3
解释:
- 峰度 = 3(超额峰度 = 0):正态分布
- 峰度 > 3(超额峰度 > 0):尖峰分布(Leptokurtic),尾部厚
- 峰度 < 3(超额峰度 < 0):平峰分布(Platykurtic),尾部薄
计算示例
例子1:不同峰度的分布
正态分布(峰度 = 3):
数据均匀分布在均值周围,尾部适中
尖峰分布(峰度 > 3):
数据高度集中在中心,但尾部有极端值
例如:金融收益率(大部分时间稳定,偶尔大幅波动)
平峰分布(峰度 < 3):
数据分布较均匀,没有明显的集中
例如:均匀分布
例子2:峰度的意义
尖峰分布的特点:
- 数据集中在中心(方差小)
- 但尾部有极端值(方差大)
- 这种"矛盾"导致峰度高
实际例子:股票收益率
- 大部分时间:小幅波动(集中在中心)
- 偶尔:大幅波动(极端值)
- 结果:峰度 > 3
峰度的类型
-
尖峰(Leptokurtic):峰度 > 3
- 数据集中在中心
- 尾部较厚(有极端值)
- 例子:金融数据、学生成绩(大部分中等,少数极端)
-
正态(Mesokurtic):峰度 = 3
- 标准正态分布
- 作为比较基准
-
平峰(Platykurtic):峰度 < 3
- 数据分布较均匀
- 尾部较薄
- 例子:均匀分布
实际应用场景
- 金融分析:识别极端风险事件
- 质量控制:检测异常值
- 数据预处理:识别需要处理的数据分布
- AI:异常检测、风险评估
第四部分:变量关系指标
1. 协方差(Covariance)
直观理解
比喻1:同步变化
想象两个人的步调:
- 正协方差:一个人快,另一个人也快;一个人慢,另一个人也慢(同步)
- 负协方差:一个人快,另一个人慢;一个人慢,另一个人快(反向)
- 零协方差:一个人的快慢与另一个人无关(独立)
协方差衡量两个变量如何一起变化。
比喻2:相关性
协方差就像衡量两个变量的"相关性":
- 正协方差 = 正相关
- 负协方差 = 负相关
- 零协方差 = 不相关
数学定义
总体协方差:
Cov(X, Y) = E[(X - μₓ)(Y - μᵧ)]
= (1/N) × Σ(xᵢ - μₓ)(yᵢ - μᵧ)
样本协方差:
sₓᵧ = (1/(n-1)) × Σ(xᵢ - x̄)(yᵢ - ȳ)
计算步骤:
- 计算 X 的均值 x̄ 和 Y 的均值 ȳ
- 对每个数据点,计算 (xᵢ - x̄) 和 (yᵢ - ȳ)
- 相乘:(xᵢ - x̄)(yᵢ - ȳ)
- 求和并除以 (n-1)
计算示例
例子1:计算协方差
X(身高,cm):[160, 165, 170, 175, 180]
Y(体重,kg):[50, 55, 60, 65, 70]
步骤1:计算均值
x̄ = (160 + 165 + 170 + 175 + 180) / 5 = 170
ȳ = (50 + 55 + 60 + 65 + 70) / 5 = 60
步骤2:计算偏差
xᵢ - x̄: [-10, -5, 0, 5, 10]
yᵢ - ȳ: [-10, -5, 0, 5, 10]
步骤3:计算乘积
(xᵢ - x̄)(yᵢ - ȳ): [100, 25, 0, 25, 100]
步骤4:求和并除以 (n-1)
sₓᵧ = (100 + 25 + 0 + 25 + 100) / (5-1)
= 250 / 4
= 62.5
协方差 = 62.5(正数,表示正相关)
例子2:不同关系的协方差
正相关(正协方差):
X: [1, 2, 3, 4, 5]
Y: [2, 4, 6, 8, 10]
→ X增加,Y也增加
→ 协方差 > 0
负相关(负协方差):
X: [1, 2, 3, 4, 5]
Y: [10, 8, 6, 4, 2]
→ X增加,Y减少
→ 协方差 < 0
不相关(协方差 ≈ 0):
X: [1, 2, 3, 4, 5]
Y: [5, 2, 4, 1, 3]
→ X和Y的变化没有规律
→ 协方差 ≈ 0
协方差的性质
- 对称性:Cov(X, Y) = Cov(Y, X)
- 自协方差:Cov(X, X) = Var(X)(协方差是方差的推广)
- 线性性:
Cov(aX + b, cY + d) = ac × Cov(X, Y) - 单位依赖:协方差的单位是 X 和 Y 单位的乘积,难以比较
协方差的局限性
问题:协方差受单位影响,难以比较不同变量对的关系强度。
例子:
X(身高,米):[1.6, 1.65, 1.7, 1.75, 1.8]
Y(体重,克):[50000, 55000, 60000, 65000, 70000]
如果改用不同单位:
X(身高,厘米):[160, 165, 170, 175, 180]
Y(体重,千克):[50, 55, 60, 65, 70]
协方差会完全不同!
解决方案:使用相关系数(标准化后的协方差)。
实际应用场景
- 金融:资产组合的风险分析
- 数据分析:特征之间的关系
- 机器学习:特征选择、降维
- AI:协方差矩阵、主成分分析(PCA)
2. 相关系数(Correlation Coefficient)
直观理解
比喻:标准化的协方差
相关系数就是"标准化后的协方差":
- 消除了单位的影响
- 取值范围:-1 到 1
- 更容易解释和比较
比喻2:关系的强度
- r = 1:完全正相关(一条向上的直线)
- r = -1:完全负相关(一条向下的直线)
- r = 0:不相关(散点图无规律)
- |r| 接近 1:强相关
- |r| 接近 0:弱相关
数学定义
皮尔逊相关系数(Pearson Correlation Coefficient):
r = Cov(X, Y) / (σₓ × σᵧ)
或
r = Σ[(xᵢ - x̄)(yᵢ - ȳ)] / √[Σ(xᵢ - x̄)² × Σ(yᵢ - ȳ)²]
取值范围:-1 ≤ r ≤ 1
解释:
- r = 1:完全正相关
- r = 0.7-0.9:强正相关
- r = 0.3-0.7:中等正相关
- r = 0-0.3:弱相关
- r = 0:不相关
- r < 0:负相关(类似正相关的解释)
计算示例
例子1:计算相关系数
X(身高,cm):[160, 165, 170, 175, 180]
Y(体重,kg):[50, 55, 60, 65, 70]
前面计算得到:
sₓᵧ = 62.5(协方差)
计算标准差:
sₓ = √[(160-170)² + (165-170)² + ... + (180-170)²] / 4
= √[100 + 25 + 0 + 25 + 100] / 4
= √62.5 ≈ 7.91
sᵧ = √[(50-60)² + (55-60)² + ... + (70-60)²] / 4
= √[100 + 25 + 0 + 25 + 100] / 4
= √62.5 ≈ 7.91
相关系数:
r = sₓᵧ / (sₓ × sᵧ)
= 62.5 / (7.91 × 7.91)
= 62.5 / 62.5
= 1.0
完全正相关!
例子2:不同相关强度
强正相关(r ≈ 0.9):
X: [1, 2, 3, 4, 5]
Y: [2.1, 3.9, 6.1, 7.9, 10.1]
→ 基本呈直线关系,但有少量误差
中等正相关(r ≈ 0.6):
X: [1, 2, 3, 4, 5]
Y: [2, 5, 4, 8, 6]
→ 有正相关趋势,但散点较分散
弱相关(r ≈ 0.2):
X: [1, 2, 3, 4, 5]
Y: [3, 1, 5, 2, 4]
→ 相关性很弱,几乎看不出规律
负相关(r ≈ -0.8):
X: [1, 2, 3, 4, 5]
Y: [10, 8, 6, 4, 2]
→ 明显的负相关关系
相关系数的性质
- 对称性:r(X, Y) = r(Y, X)
- 尺度不变性:改变单位不影响相关系数
- 范围限制:-1 ≤ r ≤ 1
- 线性关系:只衡量线性关系,不衡量非线性关系
相关系数 vs 协方差
| 特性 | 协方差 | 相关系数 |
|---|---|---|
| 取值范围 | 无限制 | -1 到 1 |
| 单位 | 有单位 | 无单位(标准化) |
| 可比较性 | 难以比较 | 容易比较 |
| 解释性 | 较难解释 | 容易解释 |
实际应用场景
- 数据分析:探索变量之间的关系
- 特征选择:选择与目标变量相关的特征
- 金融:资产相关性分析、风险管理
- AI:特征工程、降维、特征选择
第五部分:实际应用场景
1. 描述性统计分析
场景:学生成绩分析
某班级30名学生的数学成绩:
[65, 72, 68, 85, 90, 78, 82, 75, 88, 92,
70, 76, 80, 85, 79, 83, 87, 91, 74, 77,
81, 86, 89, 73, 84, 78, 82, 90, 75, 88]
计算统计量:
均值 = 80.1
中位数 = 82
众数 = 85, 88(都出现2次)
标准差 = 7.2
极差 = 92 - 65 = 27
IQR = Q3 - Q1 = 87 - 75 = 12
偏度 ≈ 0.1(接近对称)
解读:
- 平均分80.1,中位数82,说明成绩分布略左偏
- 标准差7.2,说明成绩波动适中
- IQR=12,说明中间50%的学生成绩差距不大
2. 质量控制
场景:产品尺寸控制
某工厂生产的零件长度(mm):
[10.1, 10.0, 9.9, 10.2, 10.1, 9.8, 10.3, 10.0, 10.1, 9.9]
目标:10.0mm ± 0.2mm
统计量:
均值 = 10.04mm
标准差 = 0.15mm
判断:
- 均值接近目标值(10.0mm)✓
- 标准差0.15 < 0.2,在允许范围内 ✓
- 所有数据都在 [9.8, 10.2] 范围内 ✓
结论:生产过程稳定,质量合格
3. 金融分析
场景:投资组合分析
两只股票的收益率:
股票A:[0.02, 0.03, -0.01, 0.04, 0.02]
股票B:[0.01, 0.02, 0.00, 0.03, 0.01]
统计量:
股票A:均值=0.02,标准差=0.018
股票B:均值=0.014,标准差=0.011
协方差 = 0.0002
相关系数 = 0.95
解读:
- 两只股票高度正相关
- 风险分散效果有限(相关性太高)
- 建议加入相关性较低的股票
4. 市场调研
场景:产品满意度调查
100名用户对产品的评分(1-10分):
[8, 9, 7, 8, 9, 10, 8, 7, 9, 8, ...]
统计量:
均值 = 8.2
中位数 = 8
众数 = 8
标准差 = 1.1
偏度 = -0.3(左偏,大部分用户满意)
解读:
- 平均满意度8.2,较高
- 分布左偏,说明大部分用户满意
- 标准差1.1,说明用户评价较为一致
第六部分:在人工智能中的应用
1. 数据预处理
特征标准化
为什么需要标准化?
不同特征的量纲和范围可能差异很大:
特征1(身高,cm):[160, 170, 180] → 范围:20
特征2(体重,kg):[50, 60, 70] → 范围:20
特征3(收入,元):[5000, 10000, 15000] → 范围:10000
标准化方法:
# Z-score标准化
z = (x - 均值) / 标准差
# 标准化后:均值=0,标准差=1
应用:
- 神经网络:避免某些特征主导训练
- 聚类算法:确保所有特征同等重要
- 距离计算:欧氏距离不受单位影响
异常值检测
使用IQR检测异常值:
# 异常值检测
Q1 = 数据的25%分位数
Q3 = 数据的75%分位数
IQR = Q3 - Q1
下界 = Q1 - 1.5 × IQR
上界 = Q3 + 1.5 × IQR
异常值 = 数据 < 下界 或 数据 > 上界
应用:
- 数据清洗:识别并处理异常值
- 欺诈检测:识别异常交易
- 质量控制:识别异常产品
2. 特征工程
特征选择
使用相关系数选择特征:
# 计算特征与目标变量的相关系数
correlation = corr(特征, 目标变量)
# 选择相关性高的特征
if abs(correlation) > 0.3:
保留该特征
应用:
- 降低维度:去除无关特征
- 提高模型性能:保留重要特征
- 减少过拟合:简化模型
特征变换
处理偏态分布:
# 右偏分布 → 对数变换
if 偏度 > 1:
x_new = log(x)
# 左偏分布 → 平方变换
if 偏度 < -1:
x_new = x²
应用:
- 使数据更接近正态分布
- 提高模型性能(很多算法假设正态分布)
- 减少异常值的影响
3. 模型评估
评估模型性能
使用均值和标准差:
# 交叉验证
scores = [0.85, 0.87, 0.83, 0.86, 0.84]
均值 = 0.85
标准差 = 0.014
# 解读:
# - 平均准确率85%
# - 标准差小,说明模型稳定
# - 性能可靠
评估预测不确定性
使用标准差:
# 预测结果
预测值 = 100
标准差 = 5
# 95%置信区间
置信区间 = [预测值 - 2×标准差, 预测值 + 2×标准差]
= [90, 110]
# 解读:真实值有95%的概率在[90, 110]范围内
4. 深度学习中的应用
批量归一化(Batch Normalization)
原理:
# 对每个批次的数据进行标准化
batch_mean = mean(batch_data)
batch_std = std(batch_data)
normalized_data = (batch_data - batch_mean) / batch_std
作用:
- 加速训练:稳定梯度
- 提高性能:减少内部协变量偏移
- 允许更大的学习率
权重初始化
使用方差控制初始化:
# Xavier初始化(考虑方差)
weight = random_normal(mean=0, std=sqrt(2/(fan_in + fan_out)))
# 保证激活值的方差合理
# 避免梯度消失或爆炸
5. 主成分分析(PCA)
使用协方差矩阵
PCA步骤:
# 1. 计算协方差矩阵
cov_matrix = cov(data)
# 2. 特征值分解
eigenvalues, eigenvectors = eig(cov_matrix)
# 3. 选择主成分(方差最大的方向)
principal_components = eigenvectors[:k] # 前k个
# 4. 降维
reduced_data = data @ principal_components.T
应用:
- 降维:减少特征数量
- 可视化:将高维数据降到2D/3D
- 去噪:去除方差小的方向
6. 异常检测
使用统计方法
基于均值和标准差:
# 1. 计算统计量
mean = mean(training_data)
std = std(training_data)
# 2. 定义异常阈值
threshold = mean + 3 × std # 3σ原则
# 3. 检测异常
if abs(new_data - mean) > threshold:
标记为异常
应用:
- 网络安全:检测异常流量
- 医疗诊断:检测异常指标
- 质量控制:检测异常产品
7. 推荐系统
使用相关性
协同过滤:
# 计算用户相似度(使用相关系数)
user_similarity = corr(user_A_vector, user_B_vector)
# 推荐相似用户喜欢的物品
if user_similarity > 0.7:
推荐用户B喜欢的物品给用户A
应用:
- 电商推荐:推荐相似用户购买的商品
- 内容推荐:推荐相似用户喜欢的内容
- 社交网络:推荐相似用户
第七部分:Python实现示例
1. 基础统计量计算
import numpy as np
from scipy import stats
# 示例数据
data = np.array([65, 72, 68, 85, 90, 78, 82, 75, 88, 92])
# 均值
mean = np.mean(data)
print(f"均值: {mean:.2f}")
# 中位数
median = np.median(data)
print(f"中位数: {median:.2f}")
# 众数
mode = stats.mode(data)
print(f"众数: {mode.mode[0]}, 出现次数: {mode.count[0]}")
# 标准差
std = np.std(data, ddof=1) # ddof=1 表示样本标准差
print(f"标准差: {std:.2f}")
# 方差
variance = np.var(data, ddof=1)
print(f"方差: {variance:.2f}")
# 极差
range_value = np.max(data) - np.min(data)
print(f"极差: {range_value}")
# 四分位距
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
print(f"四分位距: {iqr:.2f}")
# 偏度
skewness = stats.skew(data)
print(f"偏度: {skewness:.2f}")
# 峰度
kurtosis = stats.kurtosis(data)
print(f"峰度: {kurtosis:.2f}")
2. 协方差和相关系数
import numpy as np
# 两个变量的数据
x = np.array([160, 165, 170, 175, 180])
y = np.array([50, 55, 60, 65, 70])
# 协方差
covariance = np.cov(x, y)[0, 1]
print(f"协方差: {covariance:.2f}")
# 相关系数
correlation = np.corrcoef(x, y)[0, 1]
print(f"相关系数: {correlation:.2f}")
# 手动计算相关系数
def manual_correlation(x, y):
x_mean = np.mean(x)
y_mean = np.mean(y)
numerator = np.sum((x - x_mean) * (y - y_mean))
denominator = np.sqrt(np.sum((x - x_mean)**2) * np.sum((y - y_mean)**2))
return numerator / denominator
manual_corr = manual_correlation(x, y)
print(f"手动计算相关系数: {manual_corr:.2f}")
3. 异常值检测
import numpy as np
def detect_outliers_iqr(data):
"""使用IQR方法检测异常值"""
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = data[(data < lower_bound) | (data > upper_bound)]
return outliers, lower_bound, upper_bound
# 示例数据(包含异常值)
data = np.array([10, 12, 13, 15, 16, 18, 20, 22, 100]) # 100是异常值
outliers, lower, upper = detect_outliers_iqr(data)
print(f"异常值: {outliers}")
print(f"正常范围: [{lower:.2f}, {upper:.2f}]")
4. 数据标准化
import numpy as np
def z_score_normalize(data):
"""Z-score标准化"""
mean = np.mean(data)
std = np.std(data, ddof=1)
normalized = (data - mean) / std
return normalized, mean, std
# 示例数据
data = np.array([10, 20, 30, 40, 50])
normalized, mean, std = z_score_normalize(data)
print(f"原始数据: {data}")
print(f"标准化后: {normalized}")
print(f"标准化后均值: {np.mean(normalized):.2f}")
print(f"标准化后标准差: {np.std(normalized, ddof=1):.2f}")
5. 特征选择
import numpy as np
import pandas as pd
def select_features_by_correlation(X, y, threshold=0.3):
"""根据相关系数选择特征"""
correlations = []
feature_names = []
for i in range(X.shape[1]):
corr = np.corrcoef(X[:, i], y)[0, 1]
correlations.append(abs(corr))
feature_names.append(f'特征{i+1}')
# 选择相关性大于阈值的特征
selected_features = [i for i, corr in enumerate(correlations) if corr > threshold]
return selected_features, correlations
# 示例数据
X = np.array([
[1, 2, 3, 4],
[2, 4, 6, 8],
[3, 6, 9, 12],
[4, 8, 12, 16]
])
y = np.array([2, 4, 6, 8]) # y与X的第一列高度相关
selected, correlations = select_features_by_correlation(X, y, threshold=0.3)
print(f"选择的特征索引: {selected}")
print(f"各特征的相关性: {correlations}")
第八部分:常见问题解答
Q1: 什么时候用均值,什么时候用中位数?
使用均值:
- 数据分布对称
- 没有极端值
- 需要代数运算(如加权平均)
使用中位数:
- 数据分布偏斜
- 存在极端值(异常值)
- 需要稳健的统计量
例子:
收入数据:[3000, 3500, 4000, 4500, 5000, 100000]
均值 = 19666(被100000拉高,不具代表性)
中位数 = 4250(更能代表典型收入)
Q2: 方差和标准差有什么区别?
主要区别:
- 单位:方差的单位是原单位的平方,标准差的单位与原单位相同
- 数值大小:方差通常比标准差大
- 解释性:标准差更容易理解和解释
选择:
- 方差:用于数学推导和计算
- 标准差:用于实际解释和报告
Q3: 协方差和相关系数有什么区别?
主要区别:
- 取值范围:协方差无限制,相关系数在-1到1之间
- 单位:协方差有单位,相关系数无单位
- 可比较性:相关系数可以比较不同变量对的关系强度
选择:
- 协方差:用于数学计算(如PCA)
- 相关系数:用于解释和比较关系强度
Q4: 偏度和峰度有什么用?
偏度:
- 识别数据分布的不对称性
- 决定是否需要数据变换(如对数变换)
- 选择合适的统计方法
峰度:
- 识别数据的极端值
- 评估风险的集中程度(金融)
- 决定是否需要处理异常值
Q5: 为什么样本方差除以(n-1)而不是n?
原因:无偏估计
样本均值是从样本中计算出来的,这导致:
- 样本方差会系统性低估总体方差
- 除以(n-1)可以修正这个偏差
- 得到总体方差的无偏估计
数学证明:
E[s²] = E[(1/(n-1)) × Σ(xᵢ - x̄)²] = σ²
如果除以n:
E[(1/n) × Σ(xᵢ - x̄)²] = (n-1)/n × σ² < σ²(有偏)
总结
核心概念回顾
-
集中趋势:
- 均值:平均值,对极端值敏感
- 中位数:中间值,稳健
- 众数:出现最多的值
-
离散程度:
- 极差:最大值-最小值,简单但不稳健
- IQR:中间50%的范围,稳健
- 方差:平均偏差的平方
- 标准差:方差的平方根,常用
-
分布形状:
- 偏度:衡量对称性
- 峰度:衡量尖锐程度和尾部厚度
-
变量关系:
- 协方差:衡量共同变化,有单位
- 相关系数:标准化的协方差,无单位,易比较
关键比喻总结
- 均值 = 平衡点:让数据平衡的中心
- 中位数 = 中间人:不受极端值影响的典型值
- 标准差 = 典型偏差:数据通常偏离均值多少
- 协方差 = 同步性:两个变量如何一起变化
- 相关系数 = 关系强度:标准化的同步性
实际应用建议
- 数据探索:先计算基本统计量,了解数据特征
- 数据预处理:使用标准差进行标准化
- 特征工程:使用相关系数选择特征
- 模型评估:使用均值和标准差评估性能
- 异常检测:使用IQR或3σ原则
延伸学习
- 概率论:理解统计量的理论基础
- 假设检验:使用统计量进行推断
- 回归分析:使用相关系数分析关系
- 机器学习:特征工程、模型评估
参考文献
- 统计学教材:David Freedman《统计学》
- 数据分析:Wes McKinney《利用Python进行数据分析》
- 机器学习:周志华《机器学习》
- 深度学习:Ian Goodfellow《深度学习》