2015-09-04 99 views
2

我估计了一个5维正态Copula并用任意上界调用了pCopula函数。正如你所看到的结果有所不同,当同样的函数被调用几次:R:分布函数返回“随机”值

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中做到这一点?

+0

感谢您邀请非随机算法我通过电子邮件(我是'copula'的维护者)。 –

回答

2

谢谢你通过电子邮件问我(我是copula的维护者)。事实上,更高维尺度的整合通常通过蒙特卡罗整合来实现,在这种情况下 - 正如你发现的 - 依赖于R的.Random.seed。在CRAN版本copula中,您还不能影响正常和t型连词的pCopula()积分算法。下一个版本的copula - 一个快照可以从R-forge(但不是直接安装或tarball ..这些都是“旧”)在https://r-forge.r-project.org/R/?group_id=600提供可能性并显示一些示例。

好消息是,对低维,d = 2,3 ...可能高达5,6左右, 目前已经有[从包mvtnorm]