Utilisez la fonction rmvnorm (), elle prend 3 arguments: la matrice de covariance de variance, les moyennes et le nombre de lignes.
Le sigma aura 3 * 5 = 15 lignes et colonnes. Un pour chaque observation de chaque variable. Il existe de nombreuses façons de régler ces 15 ^ 2 paramètres (ar, symétrie bilatérale, non structurée ...). Quelle que soit la manière dont vous remplissez cette matrice, tenez compte des hypothèses, en particulier lorsque vous définissez une corrélation / covariance sur zéro, ou lorsque vous définissez deux variances pour qu'elles soient égales. Pour un point de départ, une matrice sigma pourrait ressembler à ceci:
sigma=matrix(c(
#y1 y2 y3
3 ,.5, 0, 0, 0, 0, 0, 0, 0, 0,.5,.2, 0, 0, 0,
.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2, 0, 0,
0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2, 0,
0 , 0,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,.2,.5,.2,
0 , 0, 0,.5, 3, 0, 0, 0, 0, 0, 0, 0, 0,.2,.5,
0 ,0 ,0 ,0 , 0, 3,.5, 0, 0, 0, 0, 0, 0, 0, 0,
0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0, 0,
0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0, 0,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0, 0, 0, 0,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3, 0, 0, 0, 0, 0,
.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 , 0, 3,.5, 0, 0, 0,
.2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0, 0,
0 ,.2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5, 0,
0 ,0 ,.2,.5,.2,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3,.5,
0 ,0 ,0 ,.2,.5,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,.5, 3
),15,15)
Le sigma [1,12] est donc de 0,2 et cela signifie que la covariance entre la première observation de Y1 et la deuxième observation de Y3 est de 0,2, conditionnelle à toutes les 13 autres variables.Les lignes diagonales ne doivent pas toutes être du même nombre: c'est une hypothèse simplificatrice que j'ai faite. Parfois, cela a du sens, parfois non. En général, cela signifie que la corrélation entre une 3ème observation et une 4ème est la même que la corrélation entre une 1ère et une seconde.
Vous avez également besoin de moyens. Cela pourrait être aussi simple que
meanTreat=c(1:5,51:55,101:105)
meanControl=c(1,1,1,1,1,50,50,50,50,50,100,100,100,100,100)
Ici les 5 premiers sont les moyennes des 5 observations de Y1, ..., les 5 derniers sont les observations de Y3
puis obtenez 2000 observations de vos données avec:
sampleT=rmvnorm(1000,meanTreat,sigma)
sampleC=rmvnorm(1000,meanControl,sigma)
sample=data.frame(cbind(sampleT,sampleC) )
sample$group=c(rep("Treat",1000),rep("Control",1000) )
colnames(sample)=c("Y11","Y12","Y13","Y14","Y15",
"Y21","Y22","Y23","Y24","Y25",
"Y31","Y32","Y33","Y34","Y35")
Où Y11 est la 1ère observation de Y1, ..., Y15 est la 5ème obs de Y1 ...
n <- 3*5; sigma <- diag(1, nrow=n, ncol=n); sigma[rbind(cbind(1:n-1,1:n),cbind(1:n,1:n-1))] <- 1/2