2016-09-07 1 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

여기에 다 변수 정규 분포의 평균에 2x2 행렬을 입력하는 것처럼 보입니다. z 길이 2의 벡터 인 것처럼

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

그러나, 당신은 dmnorm의 평균에 입력 벡터를 필요로하고 길이의 벡터를 공급하는 경우 즉, (그것을 관련된 분산 공분산 행렬을 줄이 나타납니다 3이면 3x3 분산 공분산 행렬이 필요합니다. 지금은 평균 (4 개 매개 변수)과 2 x 2 분산 공분산 행렬에 2x2 행렬 입력이 있습니다. 모델의 동기를 실제로 알지 못하기 때문에 실제로 그 자체를 수정하는 방법에 대한 제안은 할 수 없지만 매트릭스를 dmnorm에 넣는 것을 방지하기 위해 조금 더 theta을 인덱싱해야한다고 생각합니다. .

+0

답장을 보내 주셔서 감사합니다. 두 가지 이진 결과 측정을 함께 메타 분석하려고합니다. i 번째 연구 (i = 1, ... n), k 번째 팔 (j = 1, 2) 및 j 번째 결과 (j = 1, 2)의 환자 수인 r_ikj가 있습니다.) 누가 treament에 반응했고, 나는이 양이 rikj ~ Bin (p_ikj, n_ikj)와 같은 이항 분포를 따른다고 가정했다. 나는 각 연구, 팔 및 결과에 대한 총 환자 수를 가졌고, 실제 라인을 통해 p_ikj를 매핑하기 위해 probit 모델을 사용하기로 결정했습니다. p_ikj의 =의 φ (α_ij + β_ikj · x_k) 곳 z_ikj = α_ij + β_ikj · x_k + e_ikj, – statsmess

+0

그때 생각이 e_ik = (ik1, ik2) '~ BV N (0, R) 세타 α_i1 + β_ik1 · x_k의 벡터와 동일 되는 (zik1, zik2) '~BN 의미 ∀i, K, J, (쎄타, SIGMA) α_i2 + β_ik2 · x_k 및 시그마는 대각선 요소에 1을, 오프 대각선에 rho를 갖는 상관 행렬입니다. 코드를 수정 했으므로 처음 게시물을 편집하여 어떻게 수행했는지 보여 주려고합니다. 아직도 일하지 않습니다. – statsmess

관련 문제