Gunakan fungsi rmvnorm (), Dibutuhkan 3 argumen: matriks varians kovarians, rata-rata dan jumlah baris.
Sigma akan memiliki 3 * 5 = 15 baris dan kolom. Satu untuk setiap pengamatan dari masing-masing variabel. Ada banyak cara untuk mengatur 15 ^ 2 parameter ini (ar, simetri bilateral, tidak terstruktur ...). Namun Anda mengisi matriks ini, perhatikan asumsi-asumsi tersebut, terutama ketika Anda menetapkan korelasi / kovarian menjadi nol, atau ketika Anda menetapkan dua varians agar sama. Untuk titik awal, matriks sigma mungkin terlihat seperti ini:
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)
Jadi sigma [1,12] adalah .2 dan itu berarti bahwa kovarians antara pengamatan pertama Y1 dan pengamatan 2 Y3 adalah .2, tergantung pada 13 variabel lainnya. Baris diagonal tidak semua harus memiliki angka yang sama: itu adalah asumsi penyederhanaan yang saya buat. Terkadang masuk akal, terkadang tidak. Secara umum itu berarti korelasi antara pengamatan ke-3 dan ke-4 sama dengan korelasi antara ke-1 dan ke-2.
Anda juga butuh sarana. Ini bisa sesederhana
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)
Di sini 5 pertama adalah sarana untuk 5 pengamatan Y1, ..., 5 terakhir adalah pengamatan Y3
lalu dapatkan 2.000 observasi data Anda dengan:
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")
Di mana Y11 adalah observasi pertama Y1, ..., Y15 adalah obs ke-5 dari 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
. Pendekatan serupa akan menghasilkan contoh kedua. Namun, mereka memiliki masalah umum: Anda telah kehilangan kovarian di antara selama setiap periode - matriks ini tidak mencerminkan struktur ukuran yang berulang.