R:分布函数返回“随机”值

时间:2015-09-04 10:27:47

标签: r

我估计了一个5维正常的copula并用任意上界调用pCopula函数。正如您所看到的,当多次调用相同的函数时,结果会有所不同:

 library(copula)
normal.cop = normalCopula( c(0.5517099 ,0.3519115, 0.5681927, 0.4931297, 0.3733265, 0.4956172, 0.3931483, 0.4177506, 0.4112307, 0.6423421), dim=5, dispstr = "un") 

pCopula(c(0.4,0.5,0.3,0.2,0.9),normal.cop)
>0.07235714
pCopula(c(0.4,0.5,0.3,0.2,0.9),normal.cop)
>0.07233399

该函数显然使用了一些蒙特卡罗积分方法,因为对于相同的set.seed值,结果是相同的:

set.seed(1)
pCopula(c(0.4,0.5,0.3,0.2,0.9),normal.cop)
>0.07234068

在哪里可以更改功能的默认设置?我需要非常可靠的结果,并希望手动设置迭代次数,容错等。该函数没有任何参数可以做到这一点。

根据documentation,函数使用pmvnorm。 pmvnorm中没有随机组件,我可以在pmvnorm中设置迭代。在pCoupla中有没有选择呢?

1 个答案:

答案 0 :(得分:1)

感谢您通过电子邮件询问我(我是copula的维护者)。实际上,更高维度的集成通常可以通过蒙特卡罗积分来实现,在这种情况下 - 正如您所发现的那样 - 依赖于R {'{1}}。在.Random.seed的CRAN版本中,您还不能影响pCopula()对正常和t-copula的积分算法。下一版本的copula - 快照可以从R-forge获得(但不是通过直接安装或tarball ...这些是#34;旧")https://r-forge.r-project.org/R/?group_id=600 - 确实提供了可能性和节目一些例子。

好消息是,对于低维度,d = 2,3 ..可能高达5,6左右, 有[非包含copula]

的非随机算法