2015-09-04 98 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]