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

时间:2015-02-17 11:56:18

标签: r matrix simulation

我首先想要使用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))}

错误是什么?

1 个答案:

答案 0 :(得分:1)

可能有帮助

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