乐趣区

关于数据挖掘:R语言实现-COPULA-算法建模相依性案例分析报告

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

原文出处:拓端数据部落公众号

copula 是将多变量散布函数与其边缘散布函数耦合的函数,通常称为边缘。Copula 是建模和模仿相干随机变量的绝佳工具。Copula 的次要吸引力在于,通过应用它们,你能够别离对相干构造和边缘(即每个随机变量的散布)进行建模。

copulas 如何工作 

首先,让咱们理解 copula 的工作形式。

 set.seed(100)m < -  3
n < -  2000
 
z < -  mvrnorm(n,mu = rep(0,m),Sigma = sigma,empirical = T)

咱们应用 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

 

 pairs.panels(U)

这是蕴含新随机变量的散点图矩阵u


 

 咱们能够绘制矢量的 3D 图示意u

 
 

当初,作为最初一步,咱们只须要抉择边缘并利用它。我抉择了边缘为 Gamma,Beta 和 Student,并应用上面指定的参数。

x1 < -  qgamma(u \[,1\],shape = 2,scale = 1)x2 < -  qbeta(u \[,2\],2,2)x3 < -  qt(u \[,3\],df = 5)

上面是咱们模仿数据的 3D 图。

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

这是随机变量的散点图矩阵:

应用 copula

让咱们应用 copula 复制下面的过程。

当初咱们曾经通过 copula(一般 copula)指定了相依构造并设置了边缘,mvdc()函数生成了所需的散布。而后咱们能够应用 rmvdc() 函数生成随机样本。

 colnames(Z2)< -  c(“x1”,“x2”,“x3”)pairs.panels(Z2)

模仿数据当然十分靠近之前的数据,显示在上面的散点图矩阵中:

简略的利用示例

当初为事实世界的例子。咱们将拟合两个股票,并尝试应用 copula 模仿。

让咱们在 R 中加载:

cree < -  read.csv('cree_r.csv',header = F)$ V2
yahoo < -  read.csv('yahoo_r.csv',header = F)$ V2

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

咱们能够看到 正相干:

在下面的第一个例子中,我抉择了一个正态的 copula 模型,然而,当将这些模型利用于理论数据时,应该认真思考哪些更适宜数据。例如,许多 copula 更适宜建模非对称相干,其余强调尾部相关性等等。我对股票收益率的猜想是,t-copula 应该没问题,然而猜想必定是不够的。实质上,容许咱们通过函数应用 BIC 和 AIC 执行 copula 抉择:

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

$ PAR
\[1\] 0.4356302

$ PAR2
\[1\] 3.844534

拟合算法的确抉择了 t -copula 并为咱们预计了参数。
让咱们尝试拟合倡议的模型,并查看参数拟合。

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

 咱们来看看咱们刚预计的 copula 的密度

rho < -  coef(fit)\[1\]
df < -  coef(fit)\[2\]

当初咱们只须要建设 Copula 并从中抽取 3965 个随机样本。

  rCopula(3965,tCopula(= 2,,df = df))\[,1\] \[,2\]
\[1,\] 1.0000000 0.3972454
\[2,\] 0.3972454 1.0000000

这是蕴含的样本的图:

t-copula 通常实用于在极值(散布的尾部)中存在高度相关性的景象。
当初咱们面临艰难:对边缘进行建模。为简略起见,咱们将假如正态分布。因而,咱们预计边缘的参数。

直方图显示如下:

当初咱们在函数中利用 copula,从生成的多变量散布中获取模仿观测值。最初,咱们将模仿后果与原始数据进行比拟。

这是在假如正态分布边缘和相依构造的 t -copula 的状况下数据的最终散点图:

正如您所看到的,t-copula 导致后果靠近理论察看后果。

让咱们尝试 df=1df=8:

显然,该参数 df 对于确定散布的形态十分重要。随着 df 减少,t-copula 偏向于正态分布 copula。

十分感谢您浏览本文,有任何问题请在上面留言!


参考文献

1. 用机器学习辨认一直变动的股市情况—隐马尔科夫模型 (HMM) 的利用的利用 ”)

2.R 语言 GARCH-DCC 模型和 DCC(MVT)建模预计

3.R 语言实现 Copula 算法建模相依性案例剖析报告

4.R 语言 COPULAS 和金融工夫序列数据 VaR 剖析

5.R 语言多元 COPULA GARCH 模型工夫序列预测

6. 用 R 语言实现神经网络预测股票实例

7.r 语言预测稳定率的实现:ARCH 模型与 HAR-RV 模型

8.R 语言如何做马尔科夫转换模型 markov switching model

9.matlab 应用 Copula 仿真优化市场危险

退出移动版