我正在尝试基于 JAGS/Winbugs 脚本的一部分来模拟数据。该脚本来自 Eaves & Erkanli(2003,参见http://psych.colorado.edu/~carey/pdffiles/mcmc_eaves.pdf,第 295-296 页)。
我想要模拟的(部分)脚本如下(与原始论文中的变量名称不同):
for(fam in 1 : nmz ){
a2mz[fam, 1:N] ~ dmnorm(mu[1:N], tau.a[1:N, 1:N])
a1mz[fam, 1:N] ~ dmnorm(a2mz[fam, 1:N], tau.a[1:N, 1:N])
}
#Prior
tau.a[1:N, 1:N] ~ dwish(omega.g[,], N)
我想为上面脚本中给出的参数 a2mz 和 a1mz 模拟 R 中的数据。
所以基本上,我想用 sigma tau.a 的 -Fam-(例如 10)人模拟来自 -N-(例如 = 3)多元分布的数据。
为了使这一点更具说明性:目的是模拟-fam-(例如10)家庭的遗传效应。每个家庭(例如同卵双胞胎)的遗传效应是相同的,具有 tau.a 的差异(例如 0.5)。在这些遗传效应中,必须模拟 3 个“版本”(3 个多元分布)。
我在 R 中尝试模拟 JAGS/Winbugs 脚本中给出的数据如下:
library(MASS)
nmz = 10 #number of families, here e.g. 10
var_a = 0.5 #tau.g in the script
a2_mz <- mvrnorm(3, mu = rep(0, nmz), Sigma = diag(nmz)*var_a)
这模拟了上面 JAGS/Winbugs 脚本中提到的 a2mz 参数的数据:
> print(t(a2_mz))
[,1] [,2] [,3]
[1,] -1.1563683 -0.4478091 -0.15037563
[2,] 0.5673873 -0.7052487 0.44377336
[3,] 0.2560446 0.9901964 -0.65463341
[4,] -0.8366952 0.4924839 -0.56891991
[5,] 0.7343780 0.5429955 0.87529201
[6,] 0.5592868 -0.3899988 -0.33709105
[7,] -1.8233663 -0.7149141 -0.18153049
[8,] -0.8213804 -1.4397075 -0.09159725
[9,] -0.7002797 -0.3996970 -0.29142215
[10,] 1.1084067 0.3884869 -0.46207940
但是,当我尝试使用这些数据来模拟 a1mz(JAGS/Winbugs 的第三行)脚本的数据时,出现了问题,我不确定是什么:
a1_mz <- mvrnorm(3, mu = t(a2_mz), Sigma = c(diag(nmz)*var_a, diag(nmz)*var_a, diag(nmz)*var_a))
这会导致错误:特征中的错误(Sigma,对称 = TRUE,EISPACK = EISPACK):“特征”中的非方阵
谁能给我任何提示或提示我做错了什么?
非常感谢, 最好的问候, inga