首页 > 编程语言 >R语言实现 Copula 算法建模相依性案例分析报告

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

时间:2024-07-08 23:30:00浏览次数:7  
标签:1.0000000 df 建模 copula html 相依 Copula

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

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

 

copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们,你可以分别对相关结构和边缘(即每个随机变量的分布)进行建模。 

copulas如何工作

首先,让我们了解copula的工作方式。 

  html
 set.seed(100)

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

我们使用cor()和散点图矩阵检查样本相关性。 

  html
 
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

 

  html
 
pairs.panels(U)

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

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

 

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

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

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

 

  html
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()函数生成随机样本。

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

模拟数据当然非常接近之前的数据,显示在下面的散点图矩阵中:

 

简单的应用示例

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

让我们在R中加载 :

  html
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选择 :

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

$ PAR
[1] 0.4356302

$ PAR2
[1] 3.844534

拟合算法确实选择了t-copula并为我们估计了参数。 
让我们尝试拟合建议的模型,并检查参数拟合。

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

  rho.1 df 
0.43563 3.84453 

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

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

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

  html
  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仿真优化市场风险

标签:1.0000000,df,建模,copula,html,相依,Copula
From: https://www.cnblogs.com/tecdat/p/18290888

相关文章

  • SciTech-POLIR-Statistics-重要的统计数据来源 与 数据建模
    重要数据来源:官员与人口分布建模:9000万“党员”方可称为“人民”,因为党员才有“参政议政”资格;其他13亿多“群众”大多数是“经营、生产与劳动”,无法(或只有极少数)“参政议政”被“代表”.对于“政事”,只在“人民”(党员)的组织内决策、分级授权与分发及公布?因为全......
  • 新架构下服务建模,关键在这6步!
        随着AUTOSAR、SOA、以太网通讯等新技术、新理念的成熟化,面向软件、硬件、网络、电气等多领域的电子电气系统经历了多代架构方法论的迭代。如何跟随新技术和新理念的浪潮,构建起新型的汽车电子电气架构平台,以实现新老技术的快速更替和融合,优化协同系统架构的搭建将成为主......
  • 数学建模——层次分析法 AHP(Python代码)
    层次分析法    层次分析法是由美国运筹学家、匹兹堡大学教授T.L.Saaty于20世纪70年代创立的一种系统分析与决策的综合评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解决了定性问题定量化的处理过程。    AHP的主要特点是通过建立递阶层次结......
  • 数学建模——Topsis法(Python代码)
    Topsis法    Topsis法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确反映各评价方案之间的差距。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。    基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对......
  • 基于负相关误差函数的4集成BP神经网络matlab建模与仿真
    1.算法运行效果图预览(完整程序运行后无水印)   2.算法运行软件版本MATLAB2022a 3.部分核心程序while(Index<=Max_iteration)Indexjj=1;error2=zeros(Len,KER);while(jj<=Len)fork=1:No;d(k)=T(jj);end......
  • 时间序列分析专题——利用SPSS专家建模器进行建模
    SPSS的专家建模器可以自动识别数据,给出最适合的模型,本章通过三个例题介绍如何使用SPSS实现时间序列分析。由于本人对时间序列分析的理解尚浅,做出模型后在论文上的呈现形式需要取查阅资料,以便更好地在论文上呈现在此之前,我们还需要了解时间序列分析的一些基础的名词目录一、名词......
  • 维度建模四部曲:选择业务处理过程、定义粒度、选择维度、确定事实
    维度建模是设计数据仓库的一种常用方法,它通过将业务数据组织成维度表和事实表的结构,使得数据分析和查询更加直观和高效。在进行维度建模时,有一个经典的四部曲:选择业务处理过程、定义粒度、选择维度、确定事实。本文将对这四个步骤进行详细介绍。选择业务处理过程:在维度建模......
  • 【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量
            ......
  • 【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量
            ......
  • verilog行为建模(二):命名事件和行为描述
    目录1.命名事件(namedevent)2.行为描述举例3.RTL描述举例微信公众号获取更多FPGA相关源码:1.命名事件(namedevent)在行为代码中定义一个命名事件可以触发一个活动。命名事件不可综合。moduleadd_mult(out,a,b);input[2:0]a,b;output[3:0]o......