原文链接:http://tecdat.cn/?p=6193
原文出处:拓端数据部落公众号
copula是将多变量散布函数与其边缘散布函数耦合的函数,通常称为边缘。Copula是建模和模仿相干随机变量的绝佳工具。Copula的次要吸引力在于,通过应用它们,你能够别离对相干构造和边缘(即每个随机变量的散布)进行建模。
copulas如何工作
首先,让咱们理解copula的工作形式。
set.seed(100)m < - 3n < - 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 x3x1 1.0000000 0.3812244 0.1937548x2 0.3812244 1.0000000 -0.7890814x3 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)$ V2yahoo < - 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仿真优化市场危险