2016-09-07 63 views
0

我想爲我的二進制數據建立一個多元Probit模型。 我一直在嘗試一切,但WinBUGS作爲回報給了我這個錯誤。 任何想法或建議受到熱烈歡迎。WinBUGS錯誤:向量值關係z必須包含變量的連續元素

模型{ 的(我在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 

該模型是語法正確的,它可以讓我加載數據。 一旦我編譯,我得到標題中的錯誤。 感謝您給予的任何幫助

回答

0

它看起來好像是在這裏輸入一個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的方差協方差矩陣。由於我不知道模型背後的動機,我無法就如何解決這一問題提供任何建議,但在我看來,爲了防止將矩陣放入dmnorm中,您需要多索引theta

+0

感謝您的回覆。我試圖將兩個二元結果測量結果一起進行薈萃分析。 我有r_ikj,這是第i次研究(i = 1,...,n),第k次手臂(j = 1,2)和第j次結果(j = 1,2) )誰迴應了這個理論,我假定這個數量遵循二項分佈,例如rikj〜Bin(p_ikj,n_ikj)。我有每個研究,手臂和結果的患者人數總數,並且我決定使用probit模型將p_ikj映射到實際的線上。 p_ikj =φ(α_ij+β_ikj·X_K) 其中 z_ikj =α_ij+β_ikj·X_K + e_ikj, – statsmess

+0

然後我假定 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,非對角元素爲ρho。 我修改了代碼,我會嘗試編輯最初的帖子來向你展示我是如何做到的。它仍然無法正常工作。 – statsmess

相關問題