我正在尝试使用R的copula包中的cCopula获取一个一维值的样本条件。当条件值在第一个维度,而不是其他维度时,我得到了预期的行为。
第一个维度的效果与预期一致:
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中顺序是否重要?如果是,我如何解决这个问题?如果不是,我做错了什么?
发布于 2018-10-31 07:09:40
在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.8777835https://stackoverflow.com/questions/53072121
复制相似问题