由于WinBUGS和R对数组的数据组织方式不同,那么在使用R2WinBUGS的时候应该如何组织数据才能保证顺序正确呢?谢谢!
Shall
问问题
536 次
1 回答
2
如果您将数据指定为对象的命名列表,则不必担心 R2WinBUGS 的这一点(请参阅 ?bugs - data 参数)。R2WinBUGS 将重新组织数据,使其在 WinBUGS 中的结构与在 R 中的结构相同。
例如,如果您在 R 中指定一个数组:
y <- array(1:24,dim=c(2,3,4))
看起来像
> y
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
然后在bugs
函数的数据参数中指定它(例如,bugs(data=list(y=y)...
),那么 WinBUGS 的数据(data.txt)是:
list(y= structure(.Data= c(1.00000E+00, 7.00000E+00, 1.30000E+01, 1.90000E+01,
3.00000E+00, 9.00000E+00, 1.50000E+01, 2.10000E+01, 5.00000E+00, 1.10000E+01,
1.70000E+01, 2.30000E+01, 2.00000E+00, 8.00000E+00, 1.40000E+01, 2.00000E+01,
4.00000E+00, 1.00000E+01, 1.60000E+01, 2.20000E+01, 6.00000E+00, 1.20000E+01,
1.80000E+01, 2.40000E+01), .Dim=c(2, 3, 4)))
在 WinBUGS 中看起来像这样:
y[1,1,1] 1.0
y[1,1,2] 7.0
y[1,1,3] 13.0
y[1,1,4] 19.0
y[1,2,1] 3.0
y[1,2,2] 9.0
y[1,2,3] 15.0
y[1,2,4] 21.0
y[1,3,1] 5.0
y[1,3,2] 11.0
y[1,3,3] 17.0
y[1,3,4] 23.0
y[2,1,1] 2.0
y[2,1,2] 8.0
y[2,1,3] 14.0
y[2,1,4] 20.0
y[2,2,1] 4.0
y[2,2,2] 10.0
y[2,2,3] 16.0
y[2,2,4] 22.0
y[2,3,1] 6.0
y[2,3,2] 12.0
y[2,3,3] 18.0
y[2,3,4] 24.0
于 2013-05-19T21:52:16.290 回答