Copula函数

  “Copula”一词源于拉丁语,意为“联结、联系”。最初由Sklar在1959年提出,被广泛应用于统计、金融、风险管理等领域。Copula是处理统计中随机变量相关性问题的一种方法。

Copula函数的定义

定义1[1]^{[1]}
  在一般情形下,nn元 Copula函数C:[0,1]n[0,1]C:[0,1]^n\rightarrow[0,1]是多元联合分布
C(u1,u2,...,un)=P(U1u1,U2u2,...,Unun)C(u_1,u_2,...,u_n)=P(U_1\leq u_1,U_2\leq u_2,...,U_n\leq u_n)

其中U1,U2,...,UnU_1,U_2,...,U_n是标准均匀变量。

定义2[3]^{[3]}
  Copula 有连接和交换的意思,因此Copula函数又被称作连接函数,Nelsen\cite{four}在1998年给出了Copula函数的定义,指出具有下面性质的函数C是N维Copula函数。

  1. C=IN=[0,1]NC=I^N=[0,1]^NCC函数的定义域在一个[0,1][0,1]NN维空间上;
  2. 函数CC在它的每个维度上都是单调递增的函数;
  3. 假设任意的m(0,1)m\in(0,1)CC的边缘分布Cn()C_n(\cdot)满足Cn(1,...,mn,...,1)=mC_n(1,...,m_n,...,1)=mn[1,N]n\in[1,N]

精确表达式[1]^{[1]}

【Sklar定理[6]^{[6]}HHnn为随机变量(X1,...,Xn)(X_1,...,X_n)的联合分布函数,与其对应的边际分布分别是F1,...,FnF_1,...,F_n,则存在一个nn元Copula函数CC使得对于全部(x1,x2,...,xn)[,+]n(x_1,x_2,...,x_n)\in[-\infty,+\infty]^n,有 H(x1,x2,...,xn)=C(F1(x1),F2(x2),...,Fn(xn))(1)H(x_1,x_2,...,x_n)=C(F_1(x_1),F_2(x_2),...,F_n(x_n))\quad\quad(1)
F1,...,FnF_1,...,F_n是连续的,则CC唯一;否则CC仅在Ran(F1)×...×Ran(Fn)Ran(F_1)\times...\times Ran(F_n)上唯一。

【反之】CC是一个Copula函数,F1,...,FnF_1,...,F_n是单变量分布函数,则(1)式定义的H(x1,x2,...,xn)H(x_1,x_2,...,x_n)是边缘分布为F1,...,FnF_1,...,F_n的联合分布函数。

<说明> 定理给出了一种利用边际分布对多元联合分布建模的方法:(1)构建各变量的边际分布;(2)找到一个恰当的Copula函数,确定他的参数作为刻画各个变量之间相关关系的工具。

【推论】F1(x1),F2(x2),...,Fn(xn)F_1(x_1),F_2(x_2),...,F_n(x_n)均为连续分布函数,U1=F1(x1),...,Un=Fn(xn)U_1=F_1(x_1),...,U_n=F_n(x_n)均为[0,1][0,1]上的均匀分布,则随机变量U1,...,UnU_1,...,U_n的联合分布为
C(u1,u2,...,un)=H(F11(u1),F22(u2),...,Fn1(un))=P(U1u1,U2u2,...,Unun)(2)\begin{aligned} C(u_1,u_2,...,u_n)&=H(F_1^{-1}(u_1),F_2^{-2}(u_2),...,F_n^{-1}(u_n))\\ &=P(U_1\leq u_1,U_2\leq u_2,...,U_n\leq u_n) \end{aligned}\quad\quad(2)

其中Fi1(ui)F_i^{-1}(u_i)称为FiF_i的伪逆函数,定义为Fi(u)=inf{x:F(x)u}F_i(u)=inf\{x:F(x)\geq u\}

<说明> 设F1,...,FnF_1,...,F_n是连续的,联合分布函数也已经知道,用(2)式完全可以构造出相应的Copula函数,并且构造出的Copula函数完全刻画了变量之间的相依结构。

Copula函数的密度

  设一个nn维向量(X1,...,Xn)(X_1,...,X_n)的边缘密度函数是fi(xi)f_i(x_i),联合密度是
f(x1,x2,...,xn)=nF(x1,x2,...,xn)x1x2...xnf(x_1,x_2,...,x_n)=\frac{\partial^nF(x_1,x_2,...,x_n)}{\partial x_1\partial x_2...\partial x_n}

Copula函数CC的密度为
c(u1,u2,...,un)=nC(u1,u2,...,un)u1u2...unc(u_1,u_2,...,u_n)=\frac{\partial^nC(u_1,u_2,...,u_n)}{\partial u_1\partial u_2...\partial u_n}

则有 f(x1,x2,...,xn)=c(F1(x1),F2(x2),...,Fn(xn))×i=1nfi(xi)f(x_1,x_2,...,x_n)=c(F_1(x_1),F_2(x_2),...,F_n(x_n))\times\prod_{i=1}^{n}f_i(x_i)

双参数copula函数[3]^{[3]}

  双参数Copula函数有很多种,双参数BB1和BB7 Copula能够较好的刻画尾部相依结构,它们的数学形式如下:

  • BB1:C(u,v,θ,δ)={1+[(uθ1)δ+(vθ1)δ]1/δ}1/θC(u,v,\theta,\delta)=\{1+[(u^{-\theta}-1)^\delta+(v^{-\theta}-1)^\delta]^{1/\delta}\}^{-1/\theta}θ(0,),δ[1,]\theta\in(0,\infty),\delta\in[1,\infty]

  • BB7:C(u,v,θ,δ)=1(1((1uθ)δ+(1vθ)δ1)1/δ)1/θC(u,v,\theta,\delta)=1-(1-((1-u^{-\theta})^{-\delta}+(1-v^{-\theta})^{-\delta}-1)^{-1/\delta})^{1/\theta}θ[1,],δ(0,)\theta\in[1,\infty],\delta\in(0,\infty)

其中θ\thetaδ\delta为双参数Copula的两个参数。

copula函数的思想

  Copula 函数能够把随机变量之间的相关关系与变量的边际分布分开进行研究,这种思想方法在多元统计分析中非常重要。直观地来看,可以将任意维的联合分布H(x1,...,xn)=P(X1x1,...,Xnxn)H(x_1,...,x_n)=P(X_1\leq x_1,...,X_n\leq x_n)分成两步来处理。第一是,对所有的单变量随机变量XiX_i,通过累积分布函数FiF_i,我们可以得到随机变量Ui=Fi(Xi)U_i=F_i(X_i),这是一个均匀随机变量;第二是,随机变量间的相依结构能够通过直接连接这些均匀变量的nn元Copula函数C(u1,...,un)C(u_1,...,u_n)来描述。[1]^{[1]}

  Copula函数是定义域为[0,1][0,1]均匀分布的多维联合分布函数,其核心概念是以Copula函数将多个随机变量的边缘分布耦合起来。Copula函数本质上是边缘分布为FX1(x1),FX2(x2),...,FXN(xN)F_{X_1}(x_1),F_{X_2}(x_2),...,F_{X_N}(x_N)的随机变量X1,X2,...,XNX_1,X_2,...,X_N的多元联合分布函数。因此求取联合分布函数即为确定函数C,Copula函数理论为求解多个随机变量联合概率分布提供了新的思路和工具。[2]^{[2]}

  考察两个随机变量XXYY,其连续累积分布函数分别为FXF_XFYF_Y。通过分别在两个随机变量上应用概率积分变换,得到U=FX(X)U=F_X(X)V=FY(Y)V=F_Y(Y)UUVV都是服从[0,1][0,1]上均匀分布的变量,它们的相关性取决于XXYY是否相关。如果XXYY是不相关的,那么UUVV也是不相关的。因为这个转换是可逆的,可以定义XXYY之间的相关性等于UUVV之间的相关性。由于UUVV是均匀分布的随机变量,所以问题被简化为定义一个在两个均匀分布之上的二项分布,这就是 Copula。Copula 函数的基本思想就是,通过把边缘变量转化为均匀分布变量而不再需要考察很多不同的边缘分布以简化问题,然后再把相关性定义为一个在均匀分布之上的联合分布。

Copula函数的性质[2]^{[2]}

  定义二维Copula函数CCI2I,I=[0,1]I^2\rightarrow I, I=[0,1]上的一个映射,满足以下性质:

  1. u,vI\forall u,v\in I,C(u,0)=0;C(0,v)=0;C(u,1)=u;C(1,v)=v.C(u,0)=0; C(0,v)=0; C(u,1)=u; C(1,v)=v.
    Copula函数中只要有一个维度上变量为0,则这个Copula函数为0;在Copula函数中如有n1n-1个随机变量为1,则 Copula函数等于这个不为1的随机变量。
  2. u1,u2,v1,v2I\forall u_1, u_2, v_1, v_2\in I,且u1u2u_1\leq u_2v1v2v_1\leq v_2,则:
    C(u2,v2)C(u2,v1)C(u1,v2)+C(u1,v1)0C(u_2,v_2)-C(u_2,v_1)-C(u_1, v_2)+C(u_1,v_1)\geq0
  3. Copula函数的有界性:设(u,v)[0,1]2(u,v)\in[0,1]^2,则有Copula函数边界不等式如下:
    {L(u,v)C(u,v)U(u,v)L(u,v)=min(u,v)U(u,v)=max(u+v1,0)\left\{ \begin{matrix} L(u,v)\leq C(u,v)\leq U(u,v)\\ L(u,v)=min(u,v)\\ U(u,v)=max(u+v-1,0) \end{matrix} \right.
    式中,L(u,v)L(u,v)为Copula函数的下界,U(u,v)U(u,v)为Copula函数的上界。

Copula函数的类型[2]^{[2]}

  Copula函数总体上可以划分为Archimedean型、椭圆型和二次型。

Archimedean Copula函数

  Archimedean Copula函数主要分为对称型和非对称型两大类。

对称型Archimedean Copula函数

  对称型Archimedean Copula函数简称SAC,其m维结构为:
C(u1,u2,...,un)=φ1(φ(u1)+φ(u2)+...+φ(um))C(u_1,u_2,...,u_n)=\varphi^{-1}(\varphi(u_1)+\varphi(u_2)+...+\varphi(u_m))
式中,φ\varphi满足:φ(0)=,φ(1)=0\varphi(0)=\infty, \varphi(1)=0,对0t1\forall 0\leq t\leq1,有φ(t)<0,φ(t)>0\varphi'(t)<0, \varphi^{''}(t)>0。可见Copula函数由生成函数决定。以二维为例,常见的对称型Archimedean Copula函数如下表所列。
Copula函数
非对称型Archimedean Copula函数

  非对称型Archimedean Copula函数简称AAC,适用于构建三维以上Copula函数,其m维非对称Copula结构表示如下:
Copula函数

椭圆Copula函数

  Fang等首先提出了椭圆Copula函数的概念,并对其进行了详细的阐述。Gaussian Copula函数和Student t Copula函数是最常用的椭圆Copula函数。

高斯Copula函数

  二元高斯Copula函数:
C(u,v)=Φρ(Φ1(u),Φ1(v))C(u,v)=\Phi_\rho(\Phi^{-1}(u),\Phi^{-1}(v))
其中Φρ\Phi_\rho是相关系数为ρ\rho的二维高斯分布的分布函数,Φ\Phi是标准正态分布函数。

  下图是不同相关参数下高斯Copula的散点图。
Copula函数

  nn元高斯Copula函数:
C(u1,u2,...,un;Σ)=ΦΣ(Φ1(u1),...,Φ1(un))=Φ1(u1)...Φ1(un)1(2π)d2Σ12exp(12WTΣ1W)dW\begin{aligned} C(u_1,u_2,...,u_n;\Sigma)&=\Phi_\Sigma(\Phi^{-1}(u_1),...,\Phi^{-1}(u_n))\\ &=\int_{-\infty}^{\Phi^{-1}(u_1)}...\int_{-\infty}^{\Phi^{-1}(u_n)}\frac{1}{(2\pi)^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}}exp\left(-\frac{1}{2}W^T\Sigma^{-1}W\right)dW \end{aligned}
式中,Φ()\Phi(\cdot)为标准正态分布函数;ΦΣ(Φ1(u1),...,Φ1(un))\Phi_\Sigma(\Phi^{-1}(u_1),...,\Phi^{-1}(u_n))为均值为0、协方差为Σ\Sigma的正态分布函数;Σ=[1...ρ1n.........ρn1...1]\Sigma=\left[\begin{matrix} 1&...&\rho_{1n}\\ ...&...&...\\ \rho_{n1}&...&1 \end{matrix}\right]ρij={1;i=jρij;ij,1ρij1\rho_{ij}=\left\{\begin{matrix} 1; i=j\\\rho_{ij}; i\neq j \end{matrix}\right., -1\leq \rho_{ij}\leq1W=[w1,w2,...,wn]W=[w_1,w_2,...,w_n]为积分变量矢量。

  其Copula密度为
c(u1,u2,...,un;Σ)=C(u1,u2,...,un;Σ)u1...un=1Σ1/2exp{12[Φ1(u1),...,Φ1(un)]Σ1(Φ1(u1)...Φ1(un))+12i=1n(Φ1(ui))2}\begin{aligned} c(u_1,u_2,...,u_n;\Sigma)&=\frac{\partial C(u_1,u_2,...,u_n;\Sigma)}{\partial u_1...\partial u_n}\\ &=\frac{1}{|\Sigma|^{1/2}}exp\{-\frac{1}{2}[\Phi^{-1}(u_1),...,\Phi^{-1}(u_n)]\Sigma^{-1}\left(\begin{matrix} \Phi^{-1}(u_1)\\ ...\\ \Phi^{-1}(u_n) \end{matrix}\right)+\frac{1}{2}\sum_{i=1}^{n}(\Phi^{-1}(u_i))^2\} \end{aligned}

Student t Copula函数
Copula函数

二次型Copula函数

Copula函数

独立Copula

  当两个随机变量相互独立时,联合分布可以写成两个边缘分布相乘的形式,即:H(x,y)=F(x)×G(y)H(x,y)=F(x)\times G(y)
有Sklar定理可得独立Copula的表达式:
C(u,v)=u×v,u,v[0,1]2C(u,v)=u\times v, u,v\in[0,1]^2
独立Copula的散点图如下图:

Copula函数

  常见的几种Archimedean Copula及散点图见下。
Copula函数
Copula函数

Copula函数的参数估计[2]^{[2]}

  参数估计是构建多变量概率模型的重要环节,目前使用较为广泛的参数估计方法主要有相关性指标法、极大似然法、矩估计方法、边际推断法、半参数法等。

相关性指标法

  相关性指标法通过Copula函数参数与某个变量相关性指标的关系,先根据样本计算相关性指标,再间接推求Copula函数参数。Gumbel、Clayton和Frank函数的参数可用Kendall秩相关系数进行推求,关系式分别如下:

  1. Gumbel函数:τ=11θ\tau=1-\frac{1}{\theta}
  2. Clayton函数:τ=θ2+θ\tau=\frac{\theta}{2+\theta}
  3. Frank函数:τ=1+4θ[1θ01texp(t)1dt1]\tau=1+\frac{4}{\theta}\left[\frac{1}{\theta}\int_{0}^{1}\frac{t}{exp(t)-1}dt-1\right]

极大似然法

  若随机变量X1,X2,...,XnX_1,X_2,...,X_n的联合分布表示为C(FX1(x1),FX2(x2),...,FXn(xn))C(F_{X_1}(x_1),F_{X_2}(x_2),...,F_{X_n}(x_n))u1=FX1(x1),u2=FX2(x2),...,un=FXn(xn))u_1=F_{X_1}(x_1),u_2=F_{X_2}(x_2),...,u_n=F_{X_n}(x_n))θ\theta为Copula函数的参数,在(u1,u2,...,un)(u_1,u_2,...,u_n)的样本空间上,极大似然函数为:
L(θ)=i=1nc(ui1,ui2,...,uin;θ)L(\theta)=\prod_{i=1}^{n}c(u_{i1},u_{i2},...,u_{in};\theta)
其中c(ui1,ui2,...,uin;θ)=nC(ui1,ui2,...,uin;θ)u1u2...unc(u_{i1},u_{i2},...,u_{in};\theta)=\frac{\partial^nC(u_{i1},u_{i2},...,u_{in};\theta)}{\partial u_1\partial u_2...\partial u_n}nn维Copula函数的密度函数。

  上式两边取对数,则有:
ln(L(θ))=i=1nln(c(ui1,ui2,...,uin;θ))(3)\ln(L(\theta))=\sum_{i=1}^{n}\ln(c(u_{i1},u_{i2},...,u_{in};\theta))\quad\quad(3)
(3)式取得最大值时,必须满足关于参数θ\theta的偏导数为0,即
ln(L(θ))θ=0\frac{\partial \ln(L(\theta))}{\partial \theta}=0

Copula函数的拟合度检验[2]^{[2]}

  为了检验所选Copula函数能否准确地表征变量之间的相关性关系,需要对所选的Copula函数进行假设检验。通过确定置信水平下的临界值,与实测数据的统计量进行比较分析,判断所选定的Copula函数是否被接受。非参数Kolmogorov Smimov检验方法,其数学表达式如下。
D=max1in{Ckmkn,Ckmk1n}D=\max_{1\leq i\leq n}\left\{\left|C_k-\frac{m_k}{n}\right|,\left|C_k-\frac{m_k-1}{n}\right|\right\}
式中,CkC_k表示联合观测样本xk=(x1k,x2k,...,xnk)x_k=(x_{1k},x_{2k},...,x_{nk})的Copula函数值,mkm_k表示联合观测样本中满足条件xkxik(i=1,2,...,n)x_k\leq x_{ik}(i=1,2,...,n)的联合观测值的个数。

Copula函数的拟合优度评价[2]^{[2]}

  在利用多种Copula函数对多变量联合分布进行拟合后,需采用拟合优度检验指标进行优选,确定最优拟合Copula函数。

  (1)RMSE准则法

  选取均方根误差准则(RMSE准则)的计算公式如下:
RMSE=1ni=1n(peipi)2RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(pe_i-p_i)^2}
式中,peipe_i表示经验概率,pip_i表示理论概率。RMSE值越小,表示拟合效果越好。

  (2)AIC信息准则法

  AIC信息准则包括两个部分,Copula函数拟合的偏差与Copula函数参数个数导致的不稳定性,AIC表达式为:
AIC=nln(MSE)+2mAIC=n \ln(MSE)+2m
MSE=1ni=1n(peipi)2MSE=\frac{1}{n}\sum_{i=1}^{n}(pe_i-p_i)^2
式中,mm为模型参数个数。AIC值越小说明拟合效果越好。

  (3)BIC信息准则法
BIC=nln(MSE)+mlnnBIC=n\ln(MSE)+m\ln n
BIC值越小,函数拟合效果越好。

变量相关性度量指标[2]^{[2]}

  Copula函数应用的前提是随机变量之间具有非线性的相关关系,因此,需要利用变量相关性指标分析特征变量之间的相关性。常用的度量随机变量相关性的统计指标如下:

  (1)Pearson线性相关系数rr
r=i=1n(xixˉ)(yiyˉ)i=1n(xixˉ)2i=1n(yiyˉ)r=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2}\sqrt{\sum_{i=1}^{n}(y_i-\bar{y})}}

式中,(xi,yi)(x_i,y_i)表示取自总体(x,y)(x,y)的样本,i=1,2,...,ni=1,2,...,nxˉ\bar{x}yˉ\bar{y}分别表示变量xxyy的样本均值。rr的取值范围为[1,1][-1,1],其绝对值越大,表示变量之间的线性相关性越显著。

  (2)Kendall秩相关系数τ\tau

  τ=(Cn2)1i<jsign[(xixj)(yiyj)]\tau=(C_n^2)^{-1}\sum_{i<j}sign[(x_i-x_j)(y_i-y_j)]
式中,(xi,yi),i,j=1,2,...,n(x_i,y_i),i,j=1,2,...,n是观测数据,sign(x)={1,x>00,x=01,x<0sign(x)=\left\{ \begin{matrix} 1,x>0\\ 0,x=0\\ -1,x<0 \end{matrix}\right.是符号函数。
Kendall秩相关系数τ\tau值越大,表示变量之间的相关性越显著。

  (3)Spearman秩相关系数ρ\rho
ρ=i=1n(RiRˉ)(SiSˉ)i=1n(RiRˉ)2i=1n(SiSˉ)2\rho=\frac{\sum_{i=1}^{n}(R_i-\bar{R})(S_i-\bar{S})}{\sqrt{\sum_{i=1}^{n}(R_i-\bar{R})^2}\sqrt{\sum_{i=1}^{n}(S_i-\bar{S})^2}}
式中,RiR_iSiS_i分别为变量xxyy的秩次,Rˉ\bar{R}Sˉ\bar{S}分别为RiR_iSiS_i的均值,i=1,2,...,ni=1,2,...,n。Spearman秩相关系数ρ\rho值越大,表示变量之间的相关性越显著。

Copula函数优选的步骤[2]^{[2]}

Copula函数

Copula函数的应用

  Copula 函数最初在经济与金融领域用广泛的应用,后来在信号处理领域也受到了广泛关注。以下是Copula函数的几个典型应用:金融风险管理;极值理论;无线通信;随机信号源位置估计;多模信号处理;盲源分离。

多模信号处理

  多模信号处理一个典型应用是音视频数据流问题。假设在一个房间中有麦克风和摄像头同时监测是否有人经过,当有人经过时,摄像头的图像信息和麦克风的语音信息都会发生变化,但是统计特性有差别。该实际问题可以抽象为:一个并行网络中的传感器具有不同的传感能力,共同监测同一个区域,信号服从不同的统计分布,但在统计上又有一定的相关性,目标是设计一种算法,可以将不同分布的多模信息融合在一起,解决目标检测问题。
Copula函数

  下图是 50000 次 Monte Carlo 仿真的结果。从结果可知,应用Copula 函数的几条 ROC 曲线更接近真实的曲线,这说明 Copula 函数更好地描述了变量间的相关关系。对于边缘分布不同的两个随机变量,Copula 函数在建模联合分布时更加灵活。
Copula函数

盲源分离问题

  盲源分离问题的一个典型应用场景是鸡尾酒会问题。在一场酒会中,许多来自不同的未知方向的人同时讲话,为了区分出这些人讲的话,需要对语音进行分离。

  盲源分离问题有几个假设:

  1. 不同的信号源统计独立;
  2. 信号源服从非高斯分布;
  3. 信道模型已知;(线性或非线性,卷积或直接混合)
  4. 传感器数量不少于源的数量()NsensorNsourceN_{sensor}\geq N_{source})。

  独立成分分析(Independent Component Analysis, ICA)是盲源分离的常用方法。下图是盲源分离过程的示意图。
Copula函数

  文章\cite{nine}将 Copula 函数引入 ICA 方法,称作 COPICA。COPICA 分为两步:将数据白化后,数据被映射到p维平面内,映射由预先选定的 Copula 函数确定。于是 ICA 问题演化为最小化目标函数的问题,其中目标函数是几种 Copula 函数的线性组合。目标函数最小化问题采用模拟退火算法解决。下表给出了FastICA 方法与 COPICA 方法对于 3 个源分离问题的处理结果。可以看出,基于 Copula 的方法分离后的信号具有更高的信噪比。
Copula函数

参考文献
[1] 赵梦婷. 高斯Copula过程及其应用[D].
[2] 高倩雨. 基于Copula函数的小流域山洪灾害风险组合概率临界雨量研究[D]. 2019.
[3] 蔡亮亮. 双参数Copula函数在金融风险尾部相依分析中的应用[D]. 2019.
[4] Nelsen, R.B. An introduction to Copulas, New York, USA: Springer,2006.
[5] http://lucky6.coding.me/2016/06/16/copula-function/
[6] M. Sklar, Fonctions de répartition àn dimensions et leurs marges. Univ. Paris, 1959
[7] R. B. Nelsen, An introduction to copulas. Springer, 1999
[8] S. G. Iyengar, P. K. Varshney, and T. Damarla, “A parametric copula-based framework for hypothesis testing using heterogeneous data,” Signal Processing, IEEE Transactions on, vol. 59, no. 5, pp. 2308–2319, 2011
[9] R.-B. Chen, M. Guo, W. K. Hardle, and S.-F. Huang, “Independent component analysis via copula techniques,” SFB 649 discussion paper, Tech. Rep., 2008