R语言代写实现 Copula 算法建模依赖性案例分析报告 copulas如何工作  使用copula 一个简单的应用示例 如果您有任何疑问,请在下面发表评论。   

原文链接:http://tecdat.cn/?p=6193

copula是将多变量分布函数与其边际分布函数耦合的函数,通常称为边缘或简单的边缘。Copula是建模和模拟相关随机变量的绝佳工具。

Copula的主要吸引力在于,通过使用它们,您可以分别对相关结构和边缘(即每个随机变量的分布)进行建模。  例如,在R中,很容易从多元正态分布中生成随机样本,但是对于分别其边缘分别为Beta,Gamma和Student的分布来说,这样做并不容易。  

但首先,让我们试着了解copula的实际工作方式。 

 set.seed(100)

m < -  3
n < -  2000
 
z < -  mvrnorm(n,mu = rep(0,m),Sigma = sigma,empirical = T)
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

现在我们使用cor()和配对图检查样本相关性。 

 
pairs.panels(Z)

          [,1] [,2] [,3]
[1,] 1.0000000 0.3812244 0.1937548
[2,] 0.3812244 1.0000000 -0.7890814
[3,] 0.1937548 -0.7890814 1.0000000
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   


 

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 
pairs.panels(U)
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

这是包含在中的新随机变量的配对图u。 

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 我们可以绘制矢量的漂亮3D表示u。 

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 

现在,作为最后一步,我们只需要选择边距并应用它们u。我选择了边缘为Gamma,Beta和Student,并使用下面指定的参数进行分配。

x1 < -  qgamma(u [,1],shape = 2,scale = 1)
x2 < -  qbeta(u [,2],2,2)
x3 < -  qt(u [,3],df = 5)
 
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

下面是我们模拟数据的3D图。 

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

df < -  cbind(x1,x2,x3)
pairs.panels(DF)
 
          x1 x2 x3
x1 1.0000000 0.3812244 0.1937548
x2 0.3812244 1.0000000 -0.7890814
x3 0.1937548 -0.7890814 1.0000000
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

这是随机变量的配对图:

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

使用copula

 让我们使用copula复制上面的过程。

 
set.seed(100)
myCop < -   (param = c(0.4,0.2,-0.8),dim = 3,dispstr =“un”)
myMvd < -   (copula = myCop,margin = c(“gamma”,“beta”,“t”) 
            )
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

现在我们已经通过copula(普通copula)指定了依赖结构并设置了边缘,该mvdc()函数生成了所需的分布。然后我们可以使用该rmvdc()函数生成随机样本。

 
colnames(Z2)< -  c(“x1”,“x2”,“x3”)
pairs.panels(Z2)
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

模拟数据当然非常接近之前模拟的数据,并显示在下面的配对图中:

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

一个简单的应用示例

现在为现实世界的例子。我们将拟合两个股票 ,并尝试使用copula模拟 。 
让我们在R中加载 

cree < -  read.csv('cree_r.csv',header = F)$ V2
yahoo < -  read.csv('yahoo_r.csv',header = F)$ V2
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

在直接进入copula拟合过程之前,让我们检查两个股票收益之间的相关性并绘制回归线:

我们可以看到 正相关 :

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

在上面的第一个例子中,我选择了一个普通的copula模型而没有太多思考,但是,当将这些模型应用于实际数据时,应该仔细考虑哪些更适合数据。例如,许多copula更适合建模非对称相关,其他强调尾部相关性等等。我对股票回报的猜测是,t-copula应该没问题,但是猜测肯定是不够的。幸运的是,该软件包提供了一个很好的功能,告诉我们应该使用什么copula。本质上,允许我们通过函数使用BIC和AIC执行copula选择 

 
  pobs(as.matrix(cbind(cree,yahoo)))[,1]
  selectedCopula
 

$ PAR
[1] 0.4356302

$ PAR2
[1] 3.844534
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 
拟合算法确实选择了t-copula(在$family参考中编码为2 )并为我们估计了参数。 
让我们尝试使用copula包装拟合建议的模型,并仔细检查参数拟合。

t.cop  
set.seed(500)
m < -  pobs(as.matrix(cbind(cree,yahoo)))
 
COEF(FIT)

  rho.1 df 
0.43563 3.84453 
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 我们来看看我们刚估计的copula的密度

rho < -  coef(fit)[1]
df < -  coef(fit)[2]
 
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

现在我们只需要建立Copula并从中抽取3965个随机样本。

  rCopula(3965,tCopula(  = 2, ,df = df))
 

          [,1] [,2]
[1,] 1.0000000 0.3972454
[2,] 0.3972454 1.0000000
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

这是载体中包含的样本的图u

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 
t-copula强调极端结果:它通常适用于在极值(分布的尾部)中存在高度相关性的建模现象。
 

现在我们正面临着困难:对边缘进行建模。为简单起见,我们将假设正态分布 。因此,我们估计边际的参数

cree_mu < -  mean(cree)
cree_sd < -  sd(cree)
 
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

让我们根据直方图绘制配件,以便直观地了解我们正在做的事情:

hist(cree,breaks = 80,main ='Cree returns',freq = F,density = 30,col  
 hist(yahoo,breaks = 80,main ='Yahoo returns',density = 30,col ='cyan',freq = F,ylim = c(0,20),xlim = c(-0.2,0.2))
 
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

两个直方图显示如下

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 现在我们在函数中应用copula, ()然后用于 ()从生成的多变量分布中获取模拟观测值。最后,我们将模拟结果与原始数据进行比较。

copula_dist < -   (copula = tCopula(rho,dim = 2,df = df 
                                      list(mean = yahoo_mu,sd = yahoo_sd)))
sim < -  rmvdc(copula_dist,3965)
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 

这是在假设正常边缘和依赖结构的t-copula的情况下数据的最终散点图:

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

正如您所看到的,t-copula导致结果接近实际观察结果 。 

 让我们尝试df=1df=8

set.seed(4258)
copula_dist < -  mvdc(copula = tCopula(rho,dim = 2,df = 1),margin = c(“norm”,“norm”),
                    paramMargins = list(list(mean = cree_mu,sd = cree_sd),
   
copula_dist < -  mvdc(copula = tCopula(rho,dim = 2,df = 8),margin = c(“norm”,“norm”),
                    paramMargins = list(list(mean = cree_mu,sd = cree_sd),
                                      list(mean = yahoo_mu,sd = yahoo_sd)))
sim < -  rmvdc(copula_dist,3965)
 

[1] 0.3929509
[1] 0.3911127
R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

 
显然,该参数df对于确定分布的形状非常重要。随着df增加,t-copula倾向于高斯copula。

R语言代写实现 Copula 算法建模依赖性案例分析报告
copulas如何工作 
使用copula
一个简单的应用示例
如果您有任何疑问,请在下面发表评论。   

如果您有任何疑问,请在下面发表评论。   

如果您有任何疑问,请在下面发表评论。