我正在尝试模拟具有不同协方差矩阵的多元法线的绘制(在Gibbs采样之后)。我在循环中使用了rmvnorm
(在库mvtnorm
中),但这非常慢。我也尝试使用array
并将其传递给rmvnorm
,但也没有成功。我已使用apply
,并在列表中尝试了sapply
,但速度并不快。
有快速的方法吗? 谢谢!
编辑:我的代码看起来像这样(有更多尺寸和模拟)。我正在使用mvtnorm::rmvnorm
。
library(mvtnorm)
covs = array(dim=c(5,5,2))
covs[,,1] = diag(5)
covs[,,2] = 5*diag(5)
sample = matrix(nrow=2, ncol=5)
for (i in 1:2) {
sample[i,] = rmvnorm(1, sigma=covs[,,i])
}
apply(covs, 3, function(x) rmvnorm(1, sigma=x)) # tried apply
l1 = list() # also tried with a list
l1[[1]] = diag(5)
l1[[2]] = 5*diag(5)
sapply(l1, function(x) rmvnorm(1, sigma=x))