当前位置: 首页 > article >正文

【初识扫盲】厚尾分布

厚尾分布(Fat-tailed distribution)是一种概率分布,其尾部比正态分布更“厚”,即尾部的概率密度更大,极端值出现的概率更高。

一、厚尾分布的特征

  1. 尾部概率大

    • 在正态分布中,极端值(如距离均值很远的值)出现的概率非常小。例如,对于一个标准正态分布(均值为0,标准差为1),数据落在距离均值3个标准差之外的概率约为0.27%。然而,在厚尾分布中,这种极端值出现的概率要大得多。以柯西分布(一种典型的厚尾分布)为例,它没有定义方差,其尾部的概率密度衰减速度比正态分布慢很多。在柯西分布中,数据落在距离“中心位置”(类似正态分布的均值)较远区域的概率显著高于正态分布。这就意味着在厚尾分布中,出现极端异常值的可能性更大。
  2. 峰度高

    • 峰度是衡量分布形状的一个指标,它反映了分布的尖峭程度和尾部的厚重程度。厚尾分布通常具有较高的峰度。正态分布的峰度为0(以它为基准),而厚尾分布的峰度大于0。高峰度意味着分布的中间部分(峰部)更尖,同时尾部更厚。例如,学生t分布(自由度较小时)是一种厚尾分布,当自由度较小时,它的峰度比正态分布高,这使得它在描述一些金融资产收益率等数据时,能更好地捕捉到极端波动的情况。
  3. 均值和方差的特性

    • 对于一些厚尾分布,其均值和方差可能不存在或者不具有实际意义。以柯西分布为例,它的均值和方差都是未定义的。这是因为其尾部太厚,极端值对均值和方差的计算影响过大,导致这些统计量无法收敛到一个有限的值。这与正态分布等轻尾分布不同,正态分布的均值和方差都是良好定义的,且具有实际的统计意义,可以很好地描述数据的集中趋势和离散程度。

二、厚尾分布的应用场景

  1. 金融领域
    • 在金融市场中,资产价格的波动往往不符合正态分布。例如,股票价格的收益率分布通常具有厚尾特征。这是因为股票市场会受到各种突发事件(如政治动荡、公司丑闻等)的影响,导致价格出现极端的上涨或下跌。厚尾分布能够更好地描述这种极端波动的情况。像学生t分布就被广泛用于金融风险建模,如在计算投资组合的风险价值(Value at Risk,VaR)时,使用厚尾分布可以更准确地估计极端市场情况下投资组合可能遭受的损失。
  2. 保险领域
    • 保险理赔金额的分布也常常是厚尾的。因为虽然大部分理赔金额可能比较小(如一些小额的财产损失),但是偶尔会出现一些巨额的理赔,如自然灾害导致的大规模财产损失。厚尾分布能够更合理地反映这种理赔金额分布的特点,帮助保险公司更准确地评估风险和制定保险费率。例如,帕累托分布是一种厚尾分布,它在描述大额保险理赔数据时效果很好,能够更好地捕捉到大额理赔出现的概率,从而为保险公司的风险管理和定价提供依据。
  3. 网络流量分析
    • 网络流量数据也呈现出厚尾分布的特性。大部分时间网络流量可能处于较低水平,但是偶尔会出现流量的突发高峰,如大型在线活动期间。厚尾分布可以用来建模这种网络流量的波动情况,有助于网络运营商更好地规划网络资源,应对可能出现的流量高峰,避免网络拥堵等问题。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import t, norm

# 设置自由度
df = 3

# 生成x值,这里从-5到5,共100个点
x = np.linspace(-5, 5, 100)

# 计算学生t分布的概率密度函数值
y_t = t.pdf(x, df)

# 计算正态分布的概率密度函数值,均值为0,标准差为1
y_norm = norm.pdf(x, 0, 1)

# 绘制学生t分布图像
plt.plot(x, y_t, label=f"Student's t distribution (df={df})", color='blue')

# 绘制正态分布图像
plt.plot(x, y_norm, label="Normal distribution (mean=0, std=1)", color='red', linestyle='--')

# 添加标题和标签
plt.title("Comparison of Student's t Distribution and Normal Distribution")
plt.xlabel("x")
plt.ylabel("Probability Density")

# 添加图例
plt.legend()

# 显示图像
plt.show()

在这段代码中,我们增加了对正态分布的计算和绘制。使用scipy.stats中的norm模块来计算正态分布的概率密度函数值,这里设置正态分布的均值为0,标准差为1,这是标准正态分布的参数。

  • 图像对比分析
    • 尾部:在图像的两端(尾部),学生t分布(蓝色曲线)的概率密度明显高于正态分布(红色虚线)。这表明在学生t分布中,极端值(距离中心位置较远的值)出现的概率更大,这就是厚尾分布的典型特征。
    • 峰部:在图像的中间部分(峰部),学生t分布的峰值相对较低,而正态分布的峰值较高。这说明正态分布的数据更集中于均值附近,而学生t分布的数据分布相对更分散,这也是厚尾分布与轻尾分布在数据集中趋势描述上的差异。
    • 整体形状:从整体形状上看,学生t分布的曲线更“丰满”,尾部更“肥厚”,而正态分布的曲线更“瘦高”,尾部迅速衰减。这种形状差异直观地反映了两种分布在描述数据极端波动能力上的不同,厚尾分布更适合描述那些极端波动较为频繁的数据,如金融资产收益率等。

在这里插入图片描述

下面是一个绘制柯西分布和正态分布对比图的代码示例:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import cauchy, norm

# 生成x值,这里从-10到10,共400个点
x = np.linspace(-10, 10, 400)

# 计算标准柯西分布的概率密度函数值
y_cauchy = cauchy.pdf(x, loc=0, scale=1)

# 计算标准正态分布的概率密度函数值
y_norm = norm.pdf(x, loc=0, scale=1)

# 绘制柯西分布图像
plt.plot(x, y_cauchy, label='Cauchy Distribution', color='blue')

# 绘制正态分布图像
plt.plot(x, y_norm, label='Normal Distribution', color='red', linestyle='--')

# 添加标题和标签
plt.title('Comparison of Cauchy and Normal Distributions')
plt.xlabel('x')
plt.ylabel('Probability Density')

# 添加图例
plt.legend()

# 显示图像
plt.show()

代码解释

  1. 导入库

    • numpy 用于生成数据点。
    • matplotlib.pyplot 用于绘图。
    • scipy.stats 中的 cauchynorm 模块分别用于计算柯西分布和正态分布的概率密度函数值。
  2. 生成x值

    • np.linspace(-10, 10, 400) 生成从-10到10的400个等间距的点,这些点将用于计算概率密度函数值。
  3. 计算概率密度函数值

    • cauchy.pdf(x, loc=0, scale=1) 计算标准柯西分布的概率密度函数值。
    • norm.pdf(x, loc=0, scale=1) 计算标准正态分布的概率密度函数值。
  4. 绘制图像

    • plt.plot(x, y_cauchy, label='Cauchy Distribution', color='blue') 绘制柯西分布的图像。
    • plt.plot(x, y_norm, label='Normal Distribution', color='red', linestyle='--') 绘制正态分布的图像,使用虚线表示。
  5. 添加标题和标签

    • plt.title('Comparison of Cauchy and Normal Distributions') 添加标题。
    • plt.xlabel('x')plt.ylabel('Probability Density') 分别添加x轴和y轴的标签。
  6. 添加图例

    • plt.legend() 添加图例,显示每条曲线的标签。
  7. 显示图像

    • plt.show() 显示图像。

图像对比分析

  • 尾部:柯西分布的尾部明显比正态分布的尾部更厚,这意味着柯西分布中极端值出现的概率更高。这使得柯西分布更适合描述那些极端波动较为频繁的数据,如金融资产收益率等。
  • 峰部:柯西分布的峰值相对较低,而正态分布的峰值较高。这表明正态分布的数据更集中于均值附近,而柯西分布的数据分布相对更分散。
  • 整体形状:柯西分布的曲线更“丰满”,尾部更“肥厚”,而正态分布的曲线更“瘦高”,尾部迅速衰减。

通过这种对比,可以更直观地理解厚尾分布(柯西分布)与轻尾分布(正态分布)的差异。

在这里插入图片描述


http://www.kler.cn/a/502683.html

相关文章:

  • 在 Ubuntu 上安装和配置 Redis
  • html辅助标签与样式表
  • Kutools for Excel 简体中文版 - 官方正版授权
  • LeetCode 3270.求出数字答案:每位分别计算 或 for循环
  • 信息系统项目管理-采购管理-采购清单示例
  • golang常用标准库
  • 利用 Python 爬虫获取 1688 商品评论的实践指南
  • 基于Python(Django)+SQLite3实现的(Web)资产管理系统
  • C++内存泄露排查
  • Go Ebiten小游戏开发:井字棋
  • Postgres14.4(Docker安装)
  • 【数据分析】一、初探 Numpy
  • 服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.
  • 行业案例:高德服务单元化方案和架构实践
  • 【开源免费】基于SpringBoot+Vue.JS企业级工位管理系统(JAVA毕业设计)
  • C++ 的 pair 和 tuple
  • 【江协STM32】11-1 SPI通信协议
  • UE5 打包项目
  • 【源码解析】Java NIO 包中的 Buffer
  • 新型物联网智能断路器功能参数介绍
  • Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
  • 【2024年华为OD机试】 (C卷,100分)- 工号不够用了怎么办?(Java JS PythonC/C++)
  • 【机器学习】数学知识:指数函数(exp)
  • 大语言模型的分层架构:高效建模的全新探索
  • Vue.js组件开发,AI时代的前端新玩法
  • LabVIEW自动扫描与图像清晰度检测