답변:
지정된 상관 구조로 다변량 정규 데이터를 생성하려면 분산 공분산 행렬을 구성하고 chol
함수를 사용하여 hole 레 스키 분해를 계산해야 합니다. 원하는 vcov 행렬의 Cholesky 분해와 관측치의 독립적 인 랜덤 법선 벡터는 해당 공분산 행렬로 랜덤 법선 데이터를 생성합니다.
v <- matrix(c(2,.3,.3,2), 2)
cv <- chol(v)
o <- replicate(1000, {
y <- cv %*% matrix(rnorm(100),2)
v1 <- var(y[1,])
v2 <- var(y[2,])
v3 <- cov(y[1,], y[2,])
return(c(v1,v2,v3))
})
## MCMC means should estimate components of v
rowMeans(o)
rmvnorm () 함수를 사용하십시오. 분산 공분산 행렬, 평균 및 행 수의 세 가지 인수가 필요합니다.
시그마에는 3 * 5 = 15 개의 행과 열이 있습니다. 각 변수의 관측치마다 하나씩. 이 15 ^ 2 매개 변수를 설정하는 방법에는 여러 가지가 있습니다 (ar, bilateral symmetry, unstructured ...). 그러나 특히 상관 관계 / 공분산을 0으로 설정하거나 두 분산을 동일하게 설정 한 경우이 행렬을 채우십시오. 시작점의 경우 시그마 행렬은 다음과 같습니다.
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의 두 번째 관측치 간의 공분산이 0.2라는 것을 의미 합니다. 대각선 행이 모두 같은 숫자 일 필요는 없습니다. 그것은 제가 만든 간단한 가정입니다. 때로는 의미가 있고 때로는 그렇지 않습니다. 일반적으로 이는 3 차 관측치와 4 차 관측치 간의 상관 관계가 1 차 및 2 차 관측기의 상관 관계와 동일 함을 의미합니다.
또한 수단이 필요합니다. 그것은 간단 할 수 있습니다
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는 Y1의 5 개 관측치에 대한 수단입니다. ..., 마지막 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는 Y1의 5 번째 관측치입니다 ...
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
. 비슷한 접근 방식이 두 번째 예를 생성합니다. 그러나 공통적 인 문제가 있습니다. 각 기간 동안 간의 공분산을 잃어 버렸습니다. 이러한 행렬에는 반복되는 측정 구조가 반영되지 않습니다.