原文链接: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=1
和df=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 仿真优化市场危险