2015-11-07 85 views
1

我正在使用pmvnorm来计算R中的多元正态cdfs 但我在计算中获得负数 概率不能为负数。有人能帮助我找到了解决办法pmvnorm正在返回一个负数

的代码是在这里

library(mvtnorm) 
pmvnorm(lower = rep(-Inf, 2), upper = c(-5, -18), 
    mean = c(0,0), sigma = matrix(c(1, -0.5, -0.5, 1), 
            nrow = 2, ncol = 2)) 

输出是

[1] -2.507297e-84 
attr(,"error") 
[1] 1e-15 
attr(,"msg") 
[1] "Normal Completion" 
+3

这是*勉强*负 – Dason

+2

这是一个数字零。 – Roland

+3

解决方法:'result < - pmax(0,result)'... –

回答

3

这是一个数字的问题。您可以将其视为零或指定algorithm参数更加精确。

周围玩了我:

library("mvtnorm") 
pmvnorm(lower = rep(-Inf, 2), upper = c(-5, -18), 
     mean = c(0,0), sigma = matrix(c(1, -0.5, -0.5, 1), ncol = 2), 
     algorithm = Miwa(steps = 1280)) 
##[1] 8.447235e-132 
##attr(,"error") 
##[1] NA 
##attr(,"msg") 
##[1] "Normal Completion" 

更多信息,请参考?pmvnorm文档。 所以,你可以调整使用的算法,或者按照Ben在评论中所说的做。

+0

谢谢。我会查看文档。我不太了解浮点运算。 – user3453272

相关问题