2014-10-03 19 views
1

我試圖生成多變量數據,兩個結果(Y1和Y2),這些結果與一個具有3個組的研究(一個對照組和一個治療組)相關聯(具有給定的協方差)每個小組都有自己的手段向量。然後,我想循環幾個研究(但我不知道該怎麼做,因爲我對R有一個非常基本的瞭解)。有人可以幫助我如何改進我在下面介紹的代碼嗎?用不同的方式生成多變量數據

library(mvtnorm) 
set.seed(1128) 
sigma <-matrix(c(9,7.2,7.2,9),2) 

(dat_Yc <-rmvnorm(n=1, mean=c(10,10),sigma=sigma, method="chol")) 
(dat_Yt1 <-rmvnorm(n=1, mean=c(15,15),sigma=sigma, method="chol")) 
(dat_Yt2 <-rmvnorm(n=1, mean=c(20,20),sigma=sigma, method="chol")) 

study1 <- rbind(dat_Yc,dat_Yt1,dat_Yt2); study1 

我知道上面的代碼是非常簡單的和費時的特別是當欲環過來的研究k個(比如說,K = 20或40)。希望有人能提出一個更好的方法來完成這項任務。

+0

你是如何循環它的?你正在經歷什麼時機,需要什麼時機?你想要改變什麼?這裏沒有很多代碼。 – MrFlick 2014-10-03 05:55:33

回答

0

這是對MrFlick問題的迴應。顯然我不能對他的問題發表評論,所以我在這裏寫下了我的回覆。抱歉。

我更感興趣的是學習如何重複生成數據的過程,通過大量的研究,比如20或40個研究,然後將這些數據結合起來進行元分析。我不關心時間或者不是什麼(或者考慮到我剛開始學習R,我可能並不真正理解你的問題)。既然我在教自己如何做基本的模擬,我想知道如何讓代碼更高效。

+0

這是什麼?這絕對不是一個答案,所以它不應該在這裏。如果你有問題,請寫一個新的問題。 – 2014-10-03 06:14:49

0

您可以將值存儲在list中。其後可用於檢索單個結果及其組件。希望這回答你的問題。

library(mvtnorm) 
set.seed(1128) 
sigma <-matrix(c(9,7.2,7.2,9),2) 
mean_c = c(10,10) 
mean_t1 = c(15,15) 
mean_t2 = c(20,20) 
num.study = 20 
study = vector('list', num.study) 

for (i in seq_len(num.study)) { 
    study[[i]] = list(dat_Yc = rmvnorm(1, mean_c, sigma), 
        dat_Yt1 = rmvnorm(1, mean_t1, sigma), 
        dat_Yt2 = rmvnorm(1, mean_t2, sigma)) 
} 

## access the control group from 7th study 
study[[7]]$dat_Yc 
相關問題