R에서 다변량 결과를 시뮬레이션하는 방법? 데이터에서 결과 변수는 고차원 / 다변량

대부분의 상황에서 과 같은 하나의 결과 / 응답 변수 만 처리 합니다. 그러나 일부 시나리오, 특히 임상 데이터에서 결과 변수는 고차원 / 다변량 일 수 있습니다. 예컨대 , 포함 , 및 변수 이들 결과 모두 상관된다. 치료를 받고있는 경우 (예 / 아니오), R에서이 유형의 데이터를 어떻게 시뮬레이트 할 수 있습니까?

y=a+bx+ϵ

Y=βx+ϵ

Y

Y1

Y2

Y3

x

실제 사례에서, 각 환자는 두 가지 유형의 우회 수술 중 하나를 받고 연구자들은 우회 수술 후 통증, 부기, 피로 등에서 각 환자를 측정합니다 (각 증상 비율은 0에서 10까지). 나는 결과 (증상 심각도)가 다변량 정상이라고 가정한다. 이 실제 예가 내 질문을 명확히 할 수 있기를 바랍니다. 미리 감사드립니다.



답변

로 다변량 정규 값을 시뮬레이션합니다 mvtnorm::rmvnorm. 매개 변수 벡터를 지정할 수있는 일 변량 난수 생성기와 같이 작동하지 않는 것처럼 보이지만이 제한 사항은 간단합니다.

예를 들어, 모델을 고려하십시오

E(y1,y2,y3)=(−1+x,2x,1−3x)

여기서 는 다변량 정규 분포를 가지며 , 및 . 이 공분산 행렬을 R로 지정하겠습니다.

y

Var(yi)=1

Cov(y1,y2)=Cov(y2,y3)=0.5

Cov(y1,y3)=0
sigma <- matrix(c(1,   0.5, 0,  
                  0.5, 1,   0.5,
                  0,   0.5, 1  ), 3, 3)

실험하기 위해 매번 세 번의 복제로 가 에서 까지 변화 하도록하여이 모델에 대한 일부 데이터를 생성 해 봅시다 . 상수 항도 포함시켜야합니다.

x

1

10
data <- cbind(rep(1,10*3), rep(1:10,3))

모델은 다음과 같은 평균을 결정합니다.

beta <- matrix(c(-1,1,  0,2,  1,-3), 2, 3)
means <- data %*% beta

여러 다변량 결과를 생성하는 해결 방법은 다음을 사용하는 것입니다 apply.

library(mvtnorm) # Contains rmvnorm
sample <- t(apply(means, 1, function(m) rmvnorm(1, mean=m, sigma=sigma)))

답변

베이지안 네트워크 (BN)는 일반적으로 설명하는 맥락에서 사용됩니다. A와 생식 모델 하는 BN)은 귀하의 경우 1로 아형 수있는 도메인 변수 사이의 통계적 의존성을 대표 할 수 있도록, 2) 치료, 3) 후 처리 변수 처리를 사전 것입니다. 기존 환자 데이터에 대해 모델을 학습 한 다음 특정 환자에 대한 증거 (관찰 된 값 입력)를 입력하여 관찰 된 값이 다른 변수에 영향을 미치는 방식 (예 : 치료 후 결과로 레이블이 지정된 변수 포함)을 조사 할 수 있습니다.

하나의 깔끔한 트릭은 실제로 다양한 치료 유형이 결과 변수에 미치는 영향을 평가할 수 있다는 것입니다. 이를 중재 라고합니다 . 관심이 있으시면 여기에 관련 논문이 있습니다 .