2016-01-18 22 views
1

當某些參數根據不同的函數同時更改值時,我想要一個具有不同值的雙變量累積概率值的向量。我已經與穹頂「mapply」命令,在這種情況下:在mvtnorm包中的mapply命令中的命令

library(mvtnorm) 
m1<-c(1,2,3,4,5,5,5,5,5,5) 
m2<-c(-1,-2,-3,-4,-5,-5,-5,-5,-5,-5) 
m3<-c(0,0,0,0,0,1,2,3,4,5) 
mapply(function(x,y,z) 
pmvnorm(mean = c(18,12.72,(18*(x+y)+12.72*z)),sigma=matrix(c(5.7,0,5.7*(x+y),0,30.38,30.38*z,5.7*(x+y),30.38*z,5.7*(x+y)^2+30.38*(z)^2),3), lower=c(-Inf,-Inf,-Inf),upper=c(10,10,10)), 
m1, m2, m3) 

我的問題是,我想插入命令

sigma[sigma == 0] <- 1e-20 

替代0值與西格瑪少數矩陣,以避免0或NA值。在這種情況下,我應該在哪裏插入這個命令?

非常感謝您

回答

1

可能這有助於

mapply(function(x,y,z) pmvnorm(mean = c(18, 12.72, 
     (18*(x+y) +12.72*z)), 
     sigma= { 
     s1 <- matrix(c(5.7,0,5.7*(x+y),0,30.38,30.38*z,5.7*(x+y), 
    30.38*z,5.7*(x+y)^2+30.38*(z)^2),3) 
    replace(s1,s1==0, 1e-20) 
    }, 
    lower=c(-Inf,-Inf,-Inf), 
    upper=c(10,10,10)), 
    m1, m2, m3) 
#[1] 1.252187e-04 1.252187e-04 1.252187e-04 1.252187e-04 1.252187e-04 1.252187e-04 3.249459e-05 1.783926e-05 1.283275e-05 1.043073e-05 
+1

太好了!太謝謝你了 – Andrea