2015-11-18 3 views
0

так я использую pmvnorm и цикл для, как элементы ковариационной матрицы могут изменяться в зависимости от значения некоторых параметров:Заменить значение 0 в ковариационной матрице (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

Что такое 'c',' d', 'f'? –

ответ

1

Если вы просто хотите заменить 0s с очень малой величиной (как 1e-06)

covariance = matrix(c(0,2,3,0), ncol = 2) 
covariance[covariance == 0] <- 1e-06 
covariance 

Если это не помогает Паскаль является правильным, некоторые подробности о вашем параметре может быть полезно посмотреть в положительной определенности задачи ваших матриц ковариации.

Смежные вопросы