多変量正規値をでシミュレートしmvtnorm::rmvnorm
ます。これは、パラメーターのベクトルを指定できる一変量乱数ジェネレーターのようには機能しないようですが、この制限は簡単に回避できます。
たとえば、モデルを考えてみましょう
E(y1、Y2、Y3)= (− 1 + x 、2 x 、1 − 3 x )
ここで、には多変量正規分布があり、Var (y i)= 1、Cov (y 1、y 2)= Cov (y 2、y 3)= 0.5、Cov (y 1、y 3)= 0です。この共分散行列をRで指定してみましょう。yVar (y私)= 1Cov (y1、Y2)= Cov (y2、Y3)= 0.5Cov (y1、Y3)= 0
sigma <- matrix(c(1, 0.5, 0,
0.5, 1, 0.5,
0, 0.5, 1 ), 3, 3)
実験のために、を1から10まで変化させ、毎回3回の複製を行うことにより、このモデルのデータを生成してみましょう。定数項も含める必要があります。バツ110
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)))