R - 具有成对模拟 MVN 数据的填充矩阵

R -fill matrix with pairs of simulated MVN data

我首先想使用 MASS 包中的 mvrnorm 函数模拟相关的 MVN 数据。然后我想重复此模拟 i 次并将结果填充到矩阵中,以便第一个结果在第 i、i+1 列中,第二个结果在 i+2、i+3 中,依此类推。

到目前为止我做了以下事情:

    SimYCB <- c(73.1,60.6,59.6,54.5,57.9,61.14)
    SimPCB <- c(15.7,18.25,22.38,20.22,16.53,18.616)
    SimCB <- data.frame(SimYCB,SimPCB)
    n=20
    m=1000

    MVSimCB = matrix()
    for(i in 1:m)
    {MVSimCB[,i]=mvrnorm(n, mu=mean(SimCB),
               Sigma=cov(SimCB))}

哪里出错了?

可能有帮助

MVSimCB <- matrix(,ncol=m, nrow=n)
set.seed(24)
for(i in seq(1,m, by=2)){
  MVSimCB[, i:(i+1)] <- mvrnorm(n, mu=colMeans(SimCB), Sigma=cov(SimCB))
}

或者您可以使用 replicate

set.seed(24)
MVSimCB2 <- do.call(cbind,  replicate(m/2, mvrnorm(n, mu=colMeans(SimCB), 
        Sigma=cov(SimCB)), simplify=FALSE))


all.equal(MVSimCB, MVSimCB2, check.attributes=FALSE)
#[1] TRUE