Використовуйте функцію rmvnorm (), вона займає 3 аргументи: матриця коваріації дисперсії, засоби та кількість рядків.
Сигма матиме 3 * 5 = 15 рядків і стовпців. По одному на кожне спостереження кожної змінної. Існує багато способів встановлення цих 15 ^ 2 параметрів (ар, двостороння симетрія, неструктурованість ...). Однак ви заповнюючи цю матрицю, майте на увазі припущення, особливо коли ви встановлюєте кореляцію / коваріацію до нуля або коли два варіації встановлюєте рівними. Для початкової точки матриця сигми може виглядати приблизно так:
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)
Отже, сигма [1,12] дорівнює .2, а це означає, що коваріація між першим спостереженням Y1 та другим спостереженням Y3 дорівнює .2, умовна для всіх інших 13 змінних. Діагональні рядки не всі повинні бути однаковими цифрами: це спрощене припущення, яке я зробив. Іноді це має сенс, іноді - ні. Взагалі це означає, що співвідношення між 3-м спостереженням і 4-м є таким же, як кореляція між 1-м і другим.
Вам також потрібні засоби. Це може бути так само просто
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)
Тут перші 5 - це засоби для 5 спостережень Y1, ..., останні 5 - спостереження Y3
то отримайте 2000 спостережень за вашими даними за допомогою:
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")
Де Y11 - це перше спостереження Y1, ..., Y15 - це 5-е місце 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
. Подібний підхід створить другий приклад. Однак у них є спільна проблема: ви втратили коваріації серед