首页 > 解决方案 > R包copula:cCopula中的维度顺序重要吗?

问题描述

我试图cCopula从 R 的copula包中获取一个以一维值为条件的样本。当条件值在第一维而不是其他维时,我得到了预期的行为。

第一个维度按预期工作:

cc <- claytonCopula(.5, dim = 2)
U <- cCopula(cbind(.1, runif(1000)), copula = cc, inverse = TRUE)
> head(U)
     [,1]       [,2]
[1,]  0.1 0.02399811
[2,]  0.1 0.51941744
[3,]  0.1 0.54457839
[4,]  0.1 0.30212338
[5,]  0.1 0.16368668
[6,]  0.1 0.43865921

第二个没有。我希望 .1 是第二列中的值。

U <- cCopula(cbind(runif(1000), .1), copula = cc, inverse = TRUE)
head(U)
           [,1]       [,2]
[1,] 0.85596900 0.19792006
[2,] 0.05069967 0.02663780
[3,] 0.87673450 0.20056410
[4,] 0.52156481 0.14809874
[5,] 0.42508008 0.13026719
[6,] 0.04852083 0.02567477

我的问题是:顺序是否重要cCopula?如果是,我该如何解决它,如果不是,我做错了什么?

标签: r

解决方案


顺序确实很重要cCopula。检查该Value功能的文档中的部分。每列“包含条件 copula 函数值”,以它之前的列为条件。

不知道为什么您希望0.1在第二个示例中有一列;即使在第一个示例中,第二列也不是随机统一值:

set.seed(1)
cc <- claytonCopula(.5, dim = 2)
Z <- cbind(.1, runif(1000))
U <- cCopula(Z, copula = cc, inverse = TRUE)

> head(Z)
     [,1]      [,2]
[1,]  0.1 0.2655087
[2,]  0.1 0.3721239
[3,]  0.1 0.5728534
[4,]  0.1 0.9082078
[5,]  0.1 0.2016819
[6,]  0.1 0.8983897
> head(U)
     [,1]      [,2]
[1,]  0.1 0.2293643
[2,]  0.1 0.3274950
[3,]  0.1 0.5232455
[4,]  0.1 0.8893238
[5,]  0.1 0.1723588
[6,]  0.1 0.8777835

推荐阅读