Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Copula理论的原理与应用

Copula理论的原理与应用

作者头像
用户7506105
发布于 2021-10-18 06:48:25
发布于 2021-10-18 06:48:25
3.7K0
举报
文章被收录于专栏:碎片学习录碎片学习录

本文的诞生是由于一个朋友在做科研时遇到的一个场景所引出的,场景是这样的: 已知有两组变量X和Y,每组变量都是已知其边缘分布概率密度函数的(比如一组满足正态分布,一组满足对数正态分布),且这两组变量是一定存在相关性的,如何求它们的联合分布函数或联合概率密度函数呢?

在思考这个问题时,不难想到如果这两个变量如果一定互相独立互不相关的话(独立一定不相关,不相关却不一定独立),那联合概率密度则可以由所学概率论的知识进行求解,这里的新变量Z就等于XY了,然后分布函数就为F(z) = P(z<=Z=XY)了,在计算过程中一定可以知道和用到P(XY)=P(x)P(Y),所以这即就是可以求解的,但是这个场景是这两个变量存在相关性,即P(X|Y)不为0,所以找不到条件概率密度函数

f_{Y|X}(y|x)

,常规方法就无法求解了,那怎么办呢?

经过查阅资料,在概率统计领域存在Copula(外文翻译是连接)这样的一种理论,它诞生的初衷就是用来在一定程度上解决这种场景问题的,后来经过推荐给朋友后,正是这种方法解决了他的燃眉之急,所以有必要深入研究下这个理论,以便后续应用

定义及性质

数学家Sklar提出了一个观点:一个N维的联合分布函数是可以分解成N个不同维度的边缘分布函数和一个Copula函数的,其中这个Copula函数是描述各个变量间的相关性的。在后续数学家的研究下,Copula函数有如下定义:

假设N维随机向量{

X_1

,

X_2

,...,

X_N

}的联合分布函数为

F(x_1,x_2,...,x_N)

,每一个维度各自的边缘分布函数为

F_{X_1}(x_1)

,

F_{X_2}(x_2)

,...,

F_{X_N}(x_N)

,则Copula函数

C(u_1,u_2,..,u_N)

为N维,且满足

F(x_1,x_2,...,x_N) = C[F_{X_1}(x_1),F_{X_2}(x_2),...,F_{X_N}(x_N)]

取维数N=2,很明显,因为Copula函数是自变量为分布函数的函数,故其定义域为

[0,1]\times [0,1]

,且满足

C(u,1) = u,C(1,v)=v

(如果某一维度的边缘分布是1的话说明是确定性事件)

独立Copula的散点图

还有两个重要的性质,Copula函数是存在值等于0的零基面的,且是二维递增的,即

  • 存在
u_0

v_0

满足定义域情况下使得

C(u_0,v_0)=0
C(u_2,v_2) -C(u_2,v_1) - C(u_1,v_2) + C(u_1,v_1) >= 0
  • 0<=C(u,v)<=1
  • 满足Sklar定理,即Copula函数是唯一确定的

自变量的取值分布函数一定是增函数

满足这些性质条件的才被称为是Copula函数,这样的Copula函数有几个优良的性质:

  • 针对Copula函数C(u,v),令
C^- = max(u+v-1,0)

,

C^+=min(u,v)

,则一定有

C^- <= C(u,v) <= C^+

,且称

C^-,C^+

为函数上下界(Frechet上下界)

|C(u_2,v_2) - C(u_1,v_1)| <= |u_2-u_1| + |v_2 - v_1|
  • 若u,v独立,且是[0,1]上的独立同均匀分布,则联合概率密度F=C(u,v)=uv

所以Copula函数C(u,v)是联合概率分布的表达形式,只是自变量是各个边缘分布函数而已

以上的二元性质可以推广到多元

常用Copula函数

正态Copula函数

其分布函数表达式为

C(u_1,u_2,...,u_N;\rho) = \Phi_{\rho}(\Phi^{-1}(u_1),\Phi^{-1}(u_2),...,\Phi^{-1}(u_N))

这里的

\rho

为各个维度计算出的相关系数矩阵,对角线为1,

\Phi^{-1}

是标准正态分布的逆函数,

\Phi_{\rho}

N元标准正态分布的分布函数(和

rho

有关)

一般来说多个有相关性的正态分布的联合分布函数不为标准正态联合分布,所以和N元标准正态分布不一样,但N元标准正态分布可以很好地刻画相关性,所以选用作为Copula的函数体,如此一来则自变量就需要用到对应分布函数的逆函数来平衡,以下的原理亦然

其概率密度为

c(u_1,u_2,...,u_N;\rho) = \frac{\partial C(u_1,u_2,...,u_N;\rho)}{\partial u_1 \partial u_2 ...\partial u_N}
= |rho|^{-\frac{1}{2}} exp[-\frac{1}{2} \varsigma (\rho^{-1} - I)\varsigma]

其中

\varsigma

为向量

(\Phi^{-1}(u_1),\Phi^{-1}(u_2),...,\Phi^{-1}(u_N))
t-Copula函数

和上一个函数一样,这里是选用学生t分布作为变量构成的函数,其分布函数表达式为

C(u_1,u_2,...,u_N;\rho,k) = t_{\rho,k}[t_k^{-1}(u_1),t_k^{-1}(u_2),...,t_k^{-1}(u_N)]

这里的

t_k^{-1}

为自由度为k的一元学生t分布的分布函数的逆函数,t_{\rho,k}表示相关系数为

rho

,自由度为k的标准N元学生t分布

其概率密度函数和伽玛函数相关,因为本身t分布的概率密度就和伽玛函数相关,比较复杂

阿基米德Copula函数

前面两种Copula函数都是根据某些著名的分布函数确定的,含义特定的超参数,比如

\rho

,k等,而阿基米德Copula函数则更加灵活,它引入了一个为生成元的概念,这里的生成元是一个凸的减函数,其反函数在定义域内连续并且单调非增,用

\varphi(x)

表示,则这里的Copula函数为

C(u_1,u_2,...,u_N) = \begin{cases} \varphi^{-1}(x)[\varphi(u_1),\varphi(u_2),...,\varphi(u_N)] , \sum_{i=1}^N \varphi(u_i) <= \varphi(0)\\ 0, 其他 \end{cases}

所以可以看出阿基米德Copula函数是更一般的情况,上面两种只是其中的两种生成元生成的Copula函数而已

一般来说较为常用的生成元

\varphi(t)

(-lnt)^{\alpha}
\frac{1}{\theta}(t^{-\alpha} -1)
  • (1-t)^{\alpha}
  • ...

具体用哪个函数可以根据实际的数据分布和效果来确定,

\alpha

为待估计的参数

以上就是常用的Copula函数,但是不难发现每种函数都是会有待估计的参数的,说明Copula本身不是非参数估计的方法,需要用到一些参数估计的方法来确定其参数以使得吻合效果更好

参数估计

众所周知,一般来说参数估计会有矩估计法和极大似然估计法两种,针对Copula函数的参数估计由于其求矩估计量比较复杂不易求出参数估计值,所以一般选用最大似然估计,分布估计和半参数估计等

最大似然估计

假设X,Y的边缘分布函数为

F(x;\theta_1)

,

G(y;\theta_2)

,选用的Copula函数为

C(u,v,\alpha)

,所以其(X,Y)的联合分布函数为

H(x,y;\theta_1,\theta_2,\alpha) = C[F(x,\theta_1),G(y,\theta_2);\alpha]

其联合概率密度为

h(x,y;\theta_1,\theta_2,\alpha) = c[F(x,\theta_1),G(y,\theta_2);\alpha]f(x,\theta_1)g(y,\theta_2)

f(x,\theta_1),g(y,\theta_2)

分布是X,Y的概率密度函数

则对数似然函数为

lnL(\theta_1,\theta_2,\alpha) = ln \coprod_{i=1}^n h(x_i,y_i;\theta_1,\theta_2,\alpha)
= \sum_{i=1}^n ln c[F(x_i,\theta_1),G(y_i,\theta_2);\alpha] + \sum_{i=1}^n ln f(x_i,\theta_1) + \sum_{i=1}^n ln g(y_i,\theta_2)

故这里的估计量为

\hat{\theta_1},\hat{\theta_2},\hat{\alpha} = arg max lnL(\theta_1,\theta_2,\alpha)

以上和概率论所学方法一致

分布估计法

和极大似然不同,先求

\theta_1,\theta_2

的估计值,即

\hat{\theta_1} = arg max \sum_{i=1}^n ln f(x_i,\theta_1)
\hat{\theta_2} = arg max \sum_{i=1}^n ln g(y_i,\theta_2)

则此时再估计\hat{\alpha},为

\hat{\alpha} = \sum_{i=1}^n ln c[F(x_i,\hat{\theta_1}),G(y_i,\hat{\theta_2});\alpha]

这种策略相对来说计算量较小,但却不一定是全局最优

半参数估计

我们知道,样本经验分布函数是由样本容量在一定程度上确定的,它是没有任何参数的,所以半参数估计也即将所涉及的分布函数更改为大样本确定的样本经验分布函数,则此时只用估计Copula的参数

\alpha

即可,而不用去估计

\theta_1,\theta_2

,这样做在样本量很大或者分布函数较为难以精确求出时可以选用

得到具体的参数估计值后,就可以用该参数进行对应Copula函数的计算,以此算出的联合概率分布就视作两相关变量的联合概率分布,然后进行模型最终检验即可

总结

Copula函数的出现对于无法量化条件概率密度的场景非常有用,且概率统计中一般也是需要严格的进行假设检验并且通过过后才能实现下一步应用,而Copula函数是将函数的表达形式求解转化成经验函数的具体超参数的估计,这样一来其实就已经克服了假设检验去真这一步,并且这个函数在matlab,python等科学计算库里面都有实现,所以不失为一个很好的思路,加油!此外,Copula 函数在经济与金融领域,信号处理领域有广泛的应用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 碎片学习录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
Copula是一个用于描述多个随机变量之间相关性的函数,它将这些变量的联合分布与其边缘分布连接起来。Copula函数由Sklar定理所定义,该定理指出,对于N个随机变量的联合分布,可以将其分解为这N个变量各自的边缘分布和一个Copula函数。
拓端
2024/12/03
2430
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
基于Copula函数的配对交易
配对交易的概念非常直观,主要遵循两个步骤的过程。首先,找到两只历史上价格一起波动(相关性较大)的证券。然后,在随后的交易期内监测两者之间的价差。如果价格偏离,差价扩大,做空其中一只证券,买入另一只证券。两只证券配对交易的概念也可以被扩展到多只证券中:比如可以监测一只证券与另外一个证券组合之间的价差变化,也可以监测两个证券组合之间的价差变化,这就是广义的配对交易,即统计套利。
量化投资与机器学习微信公众号
2021/05/27
2.1K0
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
在引入copula时,大家普遍认为copula很有趣,因为它们允许分别对边缘分布和相依结构进行建模。
拓端
2021/01/29
1.3K0
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合
对VaR计算方法的改进,以更好的度量开放式基金的风险。本项目把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Copula模型来度量开放式基金的风险,并与其他VaR估计方法的预测结果进行比较。
拓端
2025/01/07
1270
MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合
用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析
最近,copula 在仿真模型中变得流行起来。Copulas 是描述变量之间依赖关系的函数,并提供了一种创建分布以对相关多元数据建模的方法。
拓端
2025/01/08
1720
用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析
Python+AI提示词用贝叶斯方法Copula进行参数推断可视化|附数据代码
在数据科学的广阔领域中,处理多变量数据是一个常见且复杂的任务。当我们面对多个变量(如(a)和(b))时,常常需要以参数化的方式描述它们的联合分布(P(a, b))(点击文末“阅读原文”获取完整代码、数据、文档)。
拓端
2025/04/01
860
Python+AI提示词用贝叶斯方法Copula进行参数推断可视化|附数据代码
【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它(点击文末“阅读原文”获取完整代码数据)。
拓端
2022/10/28
8320
EM算法学习(三)
在前两篇文章中,我们已经大致的讲述了关于EM算法的一些基本理论和一些基本的性质,以及针对EM算法的缺点进行的优化改进的新型EM算法,研究之后大致就能够进行初步的了解.现在在这最后一篇文章,我想对EM算法的应用进行一些描述:
云时之间
2018/04/10
1.6K4
EM算法学习(三)
用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析|附代码数据
最近,copula 在仿真模型中变得流行起来。Copulas 是描述变量之间依赖关系的函数,并提供了一种创建分布以对相关多元数据建模的方法 ( 点击文末“阅读原文”获取完整代码数据******** ) 。
拓端
2022/10/26
8110
机器学习 - 似然函数:概念、应用与代码实例
在机器学习和统计学领域中,似然函数(Likelihood Function)是一个至关重要的概念。它不仅是参数估计的基础,而且在模型选择、模型评估以及众多先进的算法和技术中都有着广泛的应用。本文旨在全面但深入地探讨似然函数,从其基本定义和性质到在不同机器学习问题中的具体应用。
TechLead
2023/10/21
1.9K0
机器学习 - 似然函数:概念、应用与代码实例
MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合|附代码数据
最近我们被客户要求撰写关于GARCH-EVT-Copula的研究报告,包括一些图形和统计输出。
拓端
2023/04/19
3480
深度学习500问——Chapter01:数学基础
深度学习通常又需要哪些数学基础?深度学习里的数学到底难在哪里?通常初学者都会有这些问题,在网络推荐及书本的推荐里,经常看到会列出一系列数学科目,比如微积分、线性代数、概率论、复变函数、数值计算、优化理论、信息论等等。这些数学知识有相关性,但实际上按照这样的知识范围来学习,学习成本会很久,而且会很枯燥。本章我们通过选举一些数学基础里容易混肴的一些概念作以介绍,帮助大家更好的理清这些易混肴概念之间的关系。
JOYCE_Leo16
2024/03/19
3390
深度学习500问——Chapter01:数学基础
VaR系列(五):Copula模型估计组合VaR
之前总结的大部分模型都是基于正态性的假设,但实际上,正态性假设并不非常符合金融时间序列的特征。如果从其他分布假设出发,对于单个资产来说,已经有t-garch等模型可以用于波动率建模,相对容易,但对于资产组合来说,多元正态具有边际分布及线性组合也符合多元正态分布的良好性质,但多元t分布,多元渐进t分布等就不具有这么好的性质,因此需要一些新的模型来解决这一问题,本文总结一种可以用于资产组合分布建模的方法:Copula模型,通过Copula模型描述出组合的分布后,就可以利用之前蒙特卡洛的方法估计组合VaR。
量化小白
2019/08/29
4.1K0
VaR系列(五):Copula模型估计组合VaR
离散型以及连续型随机变量
离散型随机变量是指其可能取值是有限个或可数无限多个的随机变量。例如,掷骰子的结果(1到6)就是一个典型的离散型随机变量。
用户11315985
2024/10/16
3080
Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据
在这项工作中,我通过创建一个包含四只基金的模型来探索 copula,这些基金跟踪股票、债券、美元和商品的市场指数
拓端
2022/12/09
4900
机器学习中的概率模型
概率论,包括它的延伸-信息论,以及随机过程,在机器学习中有重要的作用。它们被广泛用于建立预测函数,目标函数,以及对算法进行理论分析。如果将机器学习算法的输入、输出数据看作随机变量,就可以用概率论的观点对问题进行建模,这是一种常见的思路。本文对机器学习领域种类繁多的概率模型做进行梳理和总结,帮助读者掌握这些算法的原理,培养用概率论作为工具对实际问题进行建模的思维。要顺利地阅读本文,需要具备概率论,信息论,随机过程的基础知识。
SIGAI学习与实践平台
2020/07/29
2.7K0
机器学习中的概率模型
【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
在机器学习或者深度学习领域,生成模型具有非常广泛的应用,它可以用于测试模型的高维概率分布的表达能力,可以用于强化学习、半监督学习,可以用于处理多模输出问题,以及最常见的产生“真实”数据问题。
用户1508658
2019/07/28
8770
【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它 。
拓端
2023/01/10
9500
对真实的世界建模-概率论(分布&计算)
前段时间觉得概率论不可理喻,再拿起的时候已经少了些许晦涩之感。(我们的自然语言不明确,概率论是离真实建模最近的学科,所以觉得难学,是因为我们逐渐走向精确)
云深无际
2024/10/08
2340
对真实的世界建模-概率论(分布&计算)
Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据
在这项工作中,我通过创建一个包含四只基金的模型来探索 copula,这些基金跟踪股票、债券、美元和商品的市场指数
拓端
2023/08/19
3670
推荐阅读
相关推荐
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
更多 >
LV.0
新浪微博大数据风控
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档