随机变量专题及其python实现(概率分布,二项分布,正态分布,卡方分布,t分布,F分布及变量相关性分析等)(下)

简介: 随机变量专题及其python实现(概率分布,二项分布,正态分布,卡方分布,t分布,F分布及变量相关性分析等)(下)

4. 正态分布

4.1 正态分布概述

正态分布(Normal Distribution)又名高斯分布(Gaussiam Distribution),是人们最常用的描述连续型随机变量的概率分布。在金融学研究中,收益率等变量的分布假定为正态分布或者对数正态分布(取对数后服从正态分布)。因为形状的原因,正态分布曲线也被经常称为钟形曲线。
在这里插入图片描述

4.2 Python正态分布相关函数

正态分布随机数的生成函数是normal(),其语法为:
normal(loc=0.0, scale=1.0, size=None)

  • 参数loc:表示正态分布的均值
  • 参数scale:表示正态分布的标准差,默认为1
  • 参数size:表示生成随机数的数量
# 生成五个标准正态分布随机数
Norm = np.random.normal(size=5)
# 求生成的正态分布随机数的密度值
stats.norm.pdf(Norm)
# 求生成的正态分布随机数的累积密度值
stats.norm.cdf(Norm)
AI 代码解读

在这里插入图片描述
绘制正态分布PDF

# 注意这里使用的pdf和cdf函数是norm包里的
u=0  
sigma=1
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('X~N({},{})正态分布PDF'.format(u,sigma**2))
x = np.linspace(-5,5,100000)  # 设定分割区间
y1 = stats.norm.pdf(x,u,sigma**2)
plt.plot(x,y1)
plt.tight_layout()  # 自动调整子图,使之充满画布整个区域
plt.show()
AI 代码解读

图像效果:
在这里插入图片描述

绘制正态分布CDF

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('X~N({},{})正态分布CDF'.format(u,sigma**2))
x = np.linspace(-5,5,100000)  # 设定分割区间
y2 = stats.norm.cdf(x,u,sigma**2)
plt.plot(x,y2)
plt.tight_layout()  
plt.show()
AI 代码解读

图像效果:
在这里插入图片描述

4.3 正态分布在金融市场的应用

VAR(Value at Risk),即在险价值。是指在一定概率水平(α%)下,某一金融资产或金融资产组合在未来特定一段时间内的最大可能的损失,该定义可表达为:在这里插入图片描述
在这里插入图片描述
这里用到了ppf() 函数,来获取指定分位数的累积密度值。
假设平安银行股价2020年日收益率序列服从正态分布,下面用Python来求解当概率水平为5%时平安银行股价日收益率在2021年初个交易日的VaR:

# 上边已经定义过ret变量了,为平安银行2020年股价日收益率数据,
# 这里直接接着使用
ret_mean = ret.mean()   # 求均值
ret_variance = ret.var()  # 求方差
# 查询累积密度值为0.05的分位数
stats.norm.ppf(0.05, ret_mean, ret_variance**0.5)
AI 代码解读

在这里插入图片描述
也就是说,在2021年的第一个交易日,有95%概率平安银行股票的损失不会超过3.475523569%。
(虽然当天实际跌了3.83,产生了异常值。)


5. 其他连续分布

5.1 卡方分布

若Z1, Z2, … Zn,为n个服从标准正态分布的随机变量,则变量:
在这里插入图片描述

因为n的取值可以不同,所以卡方分布是一族分布而不是一个单独的分布。根据X的表达式,服从卡方分布的随机变量值不可能取负值,其期望值为n,方差为2n。

plt.plot(np.arange(0, 5, 0.002),\
stats.chi.pdf(np.arange(0, 5, 0.002), 3))
plt.title('卡方分布PDF(自由度为3)')
AI 代码解读

生成图像如下:
在这里插入图片描述

卡方分布以0为起点,分布是偏斜的,即非对称的,在自由度为3的卡方分布下,大多数值都小于8,查表可知只有5%的值大于7.82%。


5.2 t分布


在这里插入图片描述
类似卡方分布,t分布也是整整一族,自由度n不同t分布即不同。
t分布变量取值范围为(−∞,+∞), 其期望值与方差存在于否,取值大小均与t分布的自由度有关。
  • t(1)分布无有限期望值。
  • t(2)有有限期望值,但方差不存在。
  • n>2时,t(n)才同时有有限的期望值和方差,其中期望值为0,方差为n/(n-2),因此自由度越大,变量的方差越小,也就是说分布的离散程度越小。

下边使用Python绘制不同自由度下的t分布的概率分布图:

x = np.arange(-4,4.004,0.004)
plt.plot(x, stats.norm.pdf(x), label='Normal')
plt.plot(x, stats.t.pdf(x,5), label='df=5')
plt.plot(x, stats.t.pdf(x,30), label='df=30')
plt.legend()
AI 代码解读

结果如图所示:
在这里插入图片描述
t分布的pdf曲线是以0为中心,左右对称的单峰分布,其形态变化与自由度n的大小有关,自由度越小,分布越分散;自由度越大,变量在其均值周围的聚集程度越高,也越接近标准正态分布曲线。
自由度为30时,t分布已经接近标准正态分布曲线。相较于标准正态分布,t分布的密度函数呈现出“尖峰厚尾”的特点。在现实中资产收益率分布往往呈现这种形态,因此t分布在对实际抽样结果的刻画上更为精确。t分布是在推断统计中常用的分布。
————

5.3 F分布


在这里插入图片描述
plt.plot(np.arange(0,5,0.002),\
stats.f.pdf(np.arange(0,5,0.002), 4, 40))
plt.title('F分布PDF(df1=4, df2=40)')
AI 代码解读

它的概率密度函数形态如图所示
在这里插入图片描述


6. 变量的关系

我们面对的多个随机变量,之间可能会有互相影响。

6.1 联合概率分布

多个变量之间的联合行为可以用联合概率分布(Joint Probability Distribution)来刻画。
若变量X, Y是离散的,其所有可能取值的集合为{ak}和{bk}, k=1,2,…,
则X,Y的联合概率质量函数(Joint Probability Mass Function)为:
在这里插入图片描述


6.2变量的独立性

如果随机变量X和Y的联合累积分布函数满足:


在这里插入图片描述

则称X和Y是独立的,否则二者是相依的。

两变量的独立关系也可以表达成,


在这里插入图片描述

对于离散型随机变量,此式等价于


在这里插入图片描述
变量之间的相互独立是众多统计分析的基本假设,也是变量之间的基本关系。

6.3 变量的相关性

随机变量X和Y的协方差(Covariance)可以衡量二者之间的关系,描述的是两随机变量与各自期望的偏差共同的变动状况,表达式为:
在这里插入图片描述
协方差为正说明,平均而言变量X、Y与各自期望的偏差呈同方向变动;如果为负,则为反方向变动。
协方差有如下性质:
在这里插入图片描述

第二个性质说明,协方差受比例影响,并不能准确地衡量两变量相关性的大小。,不能直接衡量两变量相关性强弱。对协方差进一步处理,清除比例的影响,于是就有了相关系数(Correlation Coefficient):


在这里插入图片描述

相关系数取值范围为[-1,+1]
ρ=0时,说明两个变量是不相关的。
0<ρ<1时, 说明两变量呈正向的线性关系
-1<ρ<0时,说明两变量呈负向的线性关系。

aX和bX的相关性:


在这里插入图片描述

如果变量Y是X的线性变换,满足Y=a+bX,则二者之间的相关系数为:‘
在这里插入图片描述


6.4 上证指数与深证成指相关性分析

上证指数和深证成指是股票市场常用的反映股票市场情况的指数,我们认为两个指数的日收益率可以存在相关的关系。代码如下:

import numpy as np
import tushare as ts
import pandas as pd
token = 'Your Token'   # 输入你的接口密匙,获取方式及相关权限见Tushare官网。
pro = ts.pro_api(token)
# 深证成指
SZindex = pro.index_daily(ts_code='399001.SZ')
SZindex['trade_date'] = pd.to_datetime(SZindex['trade_date'])
SZindex.set_index(['trade_date'], inplace=True)
SZindex = SZindex.sort_index()
# 上证指数
SHindex = pro.index_daily(ts_code='000001.SH')
SHindex['trade_date'] = pd.to_datetime(SHindex['trade_date'])
SHindex.set_index(['trade_date'], inplace=True)
SHindex = SHindex.sort_index()

# 用2020年日收益率数据绘制散点图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.scatter(SHindex.pct_chg['2020'],SZindex.pct_chg['2020'])
plt.title('上证指数与深证成指2020年收益率散点图')
plt.xlabel('上证指数收益率')
plt.ylabel('深证成指收益率')
plt.show()
AI 代码解读

生成图像展示如下:
在这里插入图片描述

# 计算上证综指和深证成指收益率相关系数
SHindex.pct_chg['2020'].corr(SZindex.pct_chg['2020']) 
AI 代码解读

在这里插入图片描述
相关系数为0.9308847411746248,可以认为二者存在较强的相关性,二者呈现正向的线性关系。


在这里插入图片描述

目录
相关文章
从混沌到秩序:Python的依赖管理工具分析
Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
83 35
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
62 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
236 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
88 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
python之变量的使用
Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
70 16
Python时间序列分析:使用TSFresh进行自动化特征提取
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
84 9
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。

热门文章

最新文章