0

由于WinBUGS和R对数组的数据组织方式不同,那么在使用R2WinBUGS的时候应该如何组织数据才能保证顺序正确呢?谢谢!

4

1 回答 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 回答