楼主: azheforever
9824 37

[问答] 急!!求解关于winbugs软件怎么运用矩阵正态分布的问题 [推广有奖]

11
epoh 发表于 2011-7-8 20:26:15
语法或数据结构错误的地方
请先依据下列修改看看
model{       
for (i in 1:Subjects){
for (j in 1:Replications){
x[i,j,1:3] ~ dmnorm(mu[i,1:3],P[,])}
mu[i,1:3] ~ dmnorm(theta[1:3],T[,])}
for (k in 1:3){
theta[k] ~ dnorm(0,0.0001)
ICC[k] <- V[k,k]/(V[k,k]+W[k,k])}         # Intra-class correlation
P[1:3,1:3] ~ dwish(U[1:3,1:3],3)
T[1:3,1:3] ~ dwish(R[1:3,1:3],3)
W[1:3,1:3] <- inverse(P[1:3,1:3])
V[1:3,1:3] <- inverse(T[1:3,1:3])
p.mu[1:3] ~ dmnorm(theta[1:3],T[,])      # Predicted means
p.x[1:3] ~ dmnorm(p.mu[1:3],P[,])         # Predicted measurements
for (y in 1:2){
        for (z in (y+1):3){
        bias[y,z] <- theta[y]-theta[z]         # Bias estimation
        diff[y,z] <- p.x[y]-p.x[z]}}}               # Limits of agreement

INITIALS
list(theta=c(127,143,143),
P=structure(.Data=c(1,0,0,0,1,0,0,0,1),.Dim=c(3,3)),
T=structure(.Data=c(1,0,0,0,1,0,0,0,1),.Dim=c(3,3)))

DATA
list(Subjects=85, Replications=3,
x=structure(.Data=c(100,98,122,106,98,...(data omitted)...,128),.Dim=c(85,3,3)),
U=structure(.Data=c(0.100,0.005,0.005,
          0.005,0.100,0.005,
          0.005,0.005,0.100), .Dim=c(3,3)),
R=structure(.Data=c(0.100,0.005,0.005,
          0.005,0.100,0.005,
          0.005,0.005,0.1), .Dim=c(3,3)))
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 好的意见建议

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

12
zhangtao 发表于 2011-7-8 21:59:26
非常感谢epoh大师!
Dim=c(85,3,3)),这个85,3,3是什么意思?
Subjects=85, Replications=3,又是什么意思?
附件中程序运行时提示:node dimension doesnt match,如何修改?

附件中有odc文件
model{        
for (i in 1:Subjects){
for (j in 1:Replications){
x[i,j,1:3] ~ dmnorm(mu[i,1:3],P[,])}
mu[i,1:3] ~ dmnorm(theta[1:3],T[,])}
for (k in 1:3){
theta[k] ~ dnorm(0,0.0001)
ICC[k] <- V[k,k]/(V[k,k]+W[k,k])}         # Intra-class correlation
P[1:3,1:3] ~ dwish(U[1:3,1:3],3)
T[1:3,1:3] ~ dwish(R[1:3,1:3],3)
W[1:3,1:3] <- inverse(P[1:3,1:3])
V[1:3,1:3] <- inverse(T[1:3,1:3])
p.mu[1:3] ~ dmnorm(theta[1:3],T[,])      # Predicted means
p.x[1:3] ~ dmnorm(p.mu[1:3],P[,])         # Predicted measurements
for (y in 1:2){
        for (z in (y+1):3){
        bias[y,z] <- theta[y]-theta[z]         # Bias estimation
        diff[y,z] <- p.x[y]-p.x[z]}}}               # Limits of agreement

DATA
list(Subjects=85, Replications=3,
x=structure(.Data=c(100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98, 100,98,122,106,98),.Dim=c(85,3,3)),
U=structure(.Data=c(0.100,0.005,0.005,
          0.005,0.100,0.005,
          0.005,0.005,0.100), .Dim=c(3,3)),
R=structure(.Data=c(0.100,0.005,0.005,
          0.005,0.100,0.005,
          0.005,0.005,0.1), .Dim=c(3,3)))
INITIALS
list(theta=c(127,143,143),
P=structure(.Data=c(1,0,0,0,1,0,0,0,1),.Dim=c(3,3)),
T=structure(.Data=c(1,0,0,0,1,0,0,0,1),.Dim=c(3,3)))

A99.rar
下载链接: https://bbs.pinggu.org/a-933327.html

971 Bytes

本附件包括:

  • A99.odc

数学好就是要天天学

13
epoh 发表于 2011-7-9 09:06:04
.Dim=c(85,3,3)
请看Bayesian Modeling Using WinBUGS.pdf
CHAPTER 3,page 126/518

3.4.6.2 List data format
  Arrays: using the same syntax as in matrices but the
          .Dim argument will have at least three values
          specifying the length of each corresponding dimension

假设数据结构如下:  
dimension 5 x 3 x 2

  , , 1
        [,1]  [,2]  [,3]
  [1,]    1    2     3
  [2,]    4    5     6
  [3,]    7    8     9
  [4,]   10   11    12
  [5,]   13   14    15

  , , 2
        [,1]  [,2]  [,3]
  [1,]   16    17    18
  [2,]   19    20    21
  [3,]   22    23    24
  [4,]   25    26    27
  [5,]   28    29    30

first define(x11j;j=1,2),then elements(x12j;j=1,2),(x13j;j=1,2),
followed by (x21j;j=1,2),then elements(x22j;j=1,2),(x23j;j=1,2),
........

语法如下:
  A=structurec(.Data=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
                16,17,18,19,20,21,22,23,24,25,26,27,28,29,30),
               .Dim=c(5,3,2))

########
请注意,相同语法在R/S-PLUS,
结果是不同的 !!   

#########
这篇文献是我两年前看的
当时也是因为关注multivariate hierarchical Bayesian
想到winbugs 可能对楼主有帮助,所以贴上
其实现在也忘光了!!
没想到zhangtao兄对此也有兴趣
这篇文献及data file,winbugs code 可由此下载
  http://www.biomedsearch.com/nih/ ... ch-to/19161599.html
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 对epoh大师致谢最崇高的敬意!

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

14
zhangtao 发表于 2011-7-9 10:38:54
非常感谢epoh大师的指导!
数学好就是要天天学

15
epoh 发表于 2011-7-10 08:26:22
node dimension doesnt match
是因为 .Dim=c(85,3,3)
需要数据 85 x 3 x 3 = 765,你给的不够多

我把数据附上
burn in   :  95,000
iteration : 200,000
chain     :       1


这个结果跟作者文献.

page 7/13,table 1 相近.



node    mean  sd       MC error 2.5%   median 97.5% start sample
ICC[1] 0.9609 0.007197 4.188E-5 0.9452 0.9615 0.9734 95001 105000
ICC[2] 0.9596 0.007439 4.37E-5  0.9434 0.9602 0.9725 95001 105000
ICC[3] 0.9206 0.01423  6.766E-5 0.8899 0.9216 0.9453 95001 105000

node   mean  sd     MC error       2.5% median 97.5% start sample
theta[1]125.2 3.082  0.1709         120.2 124.9 131.3 95001 105000
theta[2]125.2 3.052  0.1692         120.2 124.8 131.2 95001 105000
theta[3]141.1 3.276  0.1449         135.1 141.0 147.6 95001 105000


######################
作者文献

θm     126.9 (120.6, 133.5)   126.9 (120.5, 133.3)   142.6 (135.9, 149.3)
ICCm     0.96 (0.95, 0.97)      0.96 (0.94, 0.97)      0.92 (0.89, 0.95)


multimodel.rar (1.69 KB) 本附件包括:
  • multimodel.bug


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 好的意见建议

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

16
zhangtao 发表于 2011-7-10 10:15:55
T[1:3,1:3] ~ dwish(R[1:3,1:3],3)
epoh老师,dwish是个什么函数?我在winbugs中还没有见过。
数学好就是要天天学

17
epoh 发表于 2011-7-10 11:11:50
Continuous Multivariate
1.Dirichlet
    p[] ~ ddirch(alpha[])

2.Multivariate Normal
    x[] ~ dmnorm(mu[], T[,])

3.Multivariate Student-t
    x[] ~ dmt(mu[], T[,], k)

4.Wishart
    x[,] ~ dwish(R[,], k)

WinBUGS User Manual Version 1.4
  page 59/60
  http://www.mrc-bsu.cam.ac.uk/bugs/winbugs/manual14.pdf
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 好的意见建议

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

18
zhangtao 发表于 2011-7-10 19:05:26
非常感谢epoh大师!
数学好就是要天天学

19
epoh 发表于 2011-7-10 22:25:25
zhangtao兄
mcmc.src  原本就可运行.
garch.src   需要用"EAFE"当index的数据
                   所以我拿garch.asc  (265 x 1)
                   转换成garch.dht
                   请输入
                    load x[265,1]=garch.asc
                   call saved(x,"garch.dht","EAFE")  /*create garch.dht*/;

                    and revised garch.src
                    /*dsn = "indx";*/
                    dsn = "garch.dht";
                    就可运行.
                    运行后会存贮为文件tgarch.out
garch_p.src 需要自己定义参数,才能运行.

garch.asc
     http://faculty.washington.edu/rons/garch.html
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 好的意见建议
ywh19860616 + 5 + 5 + 5 好的建议。epoh老师,那位兄弟可能没有安装cml模块吧

总评分: 学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

20
ywh19860616 发表于 2011-7-11 07:16:43
epoh老师,您上面的问题的,原始数据应该在这里面有,请您查看

http://faculty.washington.edu/rons/software/garch.asc
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 我很赞同

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

一份耕耘,一份收获。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 03:42