Sử dụng hàm rmvnorm (), Nó có 3 đối số: ma trận hiệp phương sai, phương tiện và số lượng hàng.
Sigma sẽ có 3 * 5 = 15 hàng và cột. Một cho mỗi quan sát của từng biến. Có nhiều cách để thiết lập 15 ^ 2 tham số này (ar, đối xứng song phương, không cấu trúc ...). Tuy nhiên, bạn điền vào ma trận này, hãy lưu ý đến các giả định, đặc biệt khi bạn đặt tương quan / hiệp phương sai về 0 hoặc khi bạn đặt hai phương sai bằng nhau. Đối với điểm bắt đầu, ma trận sigma có thể trông giống như thế này:
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)
Vậy sigma [1,12] là .2 và điều đó có nghĩa là hiệp phương sai giữa lần quan sát đầu tiên của Y1 và lần quan sát thứ 2 của Y3 là .2, có điều kiện trên tất cả 13 biến số khác. Các hàng chéo không phải cùng một số: đó là một giả định đơn giản hóa mà tôi đã thực hiện. Đôi khi nó có ý nghĩa, đôi khi nó không. Nói chung, nó có nghĩa là mối tương quan giữa quan sát thứ 3 và thứ 4 giống như mối tương quan giữa thứ 1 và thứ hai.
Bạn cũng cần phương tiện. Nó có thể đơn giản như
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)
Ở đây 5 đầu tiên là phương tiện cho 5 quan sát của Y1, ..., 5 cuối cùng là các quan sát của Y3
sau đó nhận 2000 quan sát dữ liệu của bạn với:
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")
Trong đó Y11 là quan sát đầu tiên của Y1, ..., Y15 là quan sát thứ 5 của 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