【问题标题】:WinBUGS error: vector valued relation z must involve consecutive elements of variableWinBUGS 错误:向量值关系 z 必须涉及变量的连续元素
【发布时间】:2016-09-07 15:23:53
【问题描述】:

我正在尝试为我的二进制数据建模一个多元 Probit 模型。 我一直在尝试一切,但 WinBUGS 作为回报给了我这个错误。 任何想法或建议都受到热烈欢迎。

型号{ for (i in 1:ns){ ## 循环研究

for (k in 1:2){   ### loop over arm
  for (j in 1:2){  ###  loop over outcomes

    r[i,k,j] ~ dbin(p[i,k,j],n[i,k,j]);             ## Likelihood Function  
    p[i,k,j] <-  phi(z[i,k,j])
    z[i,k,1:2] ~  dmnorm(theta[i,1:2],with[i,,])I(-5, 5)    #latent variable (z<0) or Probit link       

   theta[i,1] <- alpha[i,k,1] + beta[i,k,1]
   theta[i,2] <- alpha[i,k,2] + beta[i,k,2]
  }   ###Close  loop over outcomes

   }   ###Close  loop over arms

alpha[i,2,1] <- 0   
alpha[i,2,2] <- 0 
alpha[i,1,1:2] ~ dnorm(0,.0001)
beta[i,2,1:2] ~  dmnorm(d[1:2],prec[,])    
beta[i,1,1] <- 0   
beta[i,1,2] <- 0 


## priors on within study cov matrix
with[i,1:2,1:2] <- inverse(cov.mat[i,1:2,1:2])   


  #define elements of within-study covariance matrix
  cov.mat[i,1,1] <-  1
  cov.mat[i,2,2] <-  1
  ### prior from IPD data  ######
  cov.mat[i,1,2] ~   dbeta(a[i],b[i])
  cov.mat[i,2,1] <-  cov.mat[i,1,2] 
  a[i]<-31.97
  b[i]<- 4.52                   

}#### Close loop over studies       

for (i in 1:2) {
  d[i]  ~ dnorm(0.0000E+00, 0.0001)    # overall treatment effects
}
## priors on between study cov matrix
prec[1:2,1:2]<-inverse(tau[1:2,1:2])
pi<-3.14/2
a1~dunif(0, pi)
rho.tau<-cos(a1)
sd[1]~dunif(0,2)
sd[2]~dunif(0,2)
tau[1,1]<-pow(sd[1],2)
tau[2,2]<-pow(sd[2],2)
tau[2,1]<-tau[1,2]
tau[1,2]<-sd[1]*sd[2]*rho.tau
}        #END MODEL

这些是我的数据:

list(ns=2)
t[,1,1] t[,1,2] t[,2,1] t[,2,2]  r[,1,1]  n[,1,1] r[,2,1] n[,2,1] r[,1,2]     n[,1,2] r[,2,2] n[,2,2]
1   0   1   0   19  77  23  77  60  82  70  82
1   0   1   0   27  199 54  199 231 393 318 393
END

该模型在语法上是正确的,它允许我加载数据。 编译后,标题中出现错误。 感谢您提供的任何帮助

【问题讨论】:

    标签: data-modeling bayesian winbugs openbugs


    【解决方案1】:

    看起来好像您在此处将 2 × 2 矩阵输入到多元正态分布的平均值中。

    z[i,1:2,k] ~  dmnorm(theta[i,,],with[i,,])I(-5, 5)    #latent variable (z<0) or Probit link
    

    但是,z 似乎只是一个长度为 2 的向量。您需要将一个向量输入到 dmnorm 的平均值中,并给它一个相关的方差协方差矩阵(即,如果您提供一个长度为3,它需要有一个 3×3 的方差协方差矩阵)。现在你有一个 2 × 2 矩阵输入到平均值(4 个参数)和一个 2 × 2 方差协方差矩阵。由于我并不真正了解模型背后的动机,因此我无法就如何修复它本身提供任何建议,但在我看来,您需要多索引theta 以防止放置矩阵进入dmnorm

    【讨论】:

    • 感谢您的回复。我正在尝试对两个二元结果测量进行荟萃分析。我有 r_ikj,它们是第 i 个研究 (i = 1, . . . n)、第 k 个臂 (j = 1, 2) 和第 j 个结果 (j = 1, 2) 中的患者数量对治疗作出反应,我假设这个量服从二项分布,使得 rikj ∼ Bin(p_ikj , n_ikj)。我有每项研究、手臂和结果的患者总数,我决定使用概率模型将 p_ikj 映射到实线上。 p_ikj=φ(α_ij + β_ikj · x_k) 其中 z_ikj = α_ij + β_ikj · x_k + e_ikj ,
    • 然后我假设 e_ik = (ik1, ik2)' ∼ BV N(0, R) ∀i, k, j, 这意味着 (zik1, zik2)' ∼BN (theta, SIGMA)其中 theta 等于 α_i1 + β_ik1 · x_k α_i2+ β_ik2· x_k 的向量,Sigma 是相关矩阵,对角元素为 1,非对角元素为 rho。我修改了代码,我将尝试编辑最初的帖子,向您展示我是如何做到的。还是不行。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多