2015-02-17 1 views
0

Сначала я хочу имитировать коррелированные данные MVN с помощью функции mvrnorm из пакета MASS. Затем я хочу повторить эту симуляцию i раз и заполнить результаты матрицей, чтобы первые результаты были в столбцах i, i + 1, second в i + 2, i + 3 и так далее.R -полная матрица с парами симулированных данных MVN

До сих пор я сделал следующее:

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

Может быть, это помогает

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 
+0

Спасибо. Это то, что я искал. Теперь я понимаю логику этого! – greenfisha

+0

@greenfisha проблем нет. Рад помочь вам – akrun