所以我使用pmvnorm和一个循环,因为协方差矩阵中的元素可以根据某些参数的值改变:
y<-c(0,0,0,0,0,0,0,0,0,0)
...
library(mvtnorm)
mu=c(18,12.72,(18*(c-d)+12.72*f))
covariance=matrix(c(5.7,0,5.7*(c-d),0,30.38,30.38*f^2,5.7*(c-d),30.38*f,(5.7*(c-d)^2+30.38*f^2)),3)
H=c(15,-Inf,-Inf)
L=c(Inf,15,g)
for(i in 1:10)
y[i]=pmvnorm(mean=mu,sigma=covariance,lower=H,upper=L)
其中c,d,f等已经定义。 它有效,但在某些情况下,我有第三个r.v有0方差,它出现错误。是否有可能用协方差矩阵0值替换非常小的值(如1e-06?)
谢谢
答案 0 :(得分:1)
如果您只想用非常小的值替换0(如1e-06)
covariance = matrix(c(0,2,3,0), ncol = 2)
covariance[covariance == 0] <- 1e-06
covariance
如果这对Pascal没有帮助,那么有关参数的一些细节可能有助于查看协方差矩阵的正定性问题。