0

次の論文のスクリプトを使用しています (Zipkin, EF, Royle, JA, Dawson, DK, Bates, S., 2010. 保存および管理アクションの影響を評価するための複数種の発生モデル。Biological Conservation 143, 479- 484) 鳥種の占有率を推定します。検出推定の変数の 1 つ (以下のコードの K ループ) は、レベル 1 ~ 6 のカテゴリ変数である風です。OpenBUGS で関数を使用しようとしましたdcatが、これは一様な事前 (beta(1,1)) であることを望んでいますが、OpenBUGS はエラーで失敗します:

expected right parenthesis error pos 1344

これは、行を削除b3[i] ~ dcat(p[i,])#WIND Dataしても発生しません。

dcat を適切に指定する方法、または WinBUGS/OpenBUGS のカテゴリ変数をコーディングする方法についてアドバイスをいただければ幸いです。

#model***************************************************************

occ.full <- function()
{

  #Define prior distributions for community-level model parameters
  omega ~ dunif(0,1)

  mean.u ~ dunif(0,1)
  mu.u <- log(mean.u) - log(1-mean.u)
  mean.v ~ dunif(0,1)
  mu.v <- log(mean.v) - log(1-mean.v)
  #mua1 ~ dnorm(0, 0.001)#WTR
  mua2 ~ dnorm(0, 0.001)#WBH
  mua3 ~ dnorm(0, 0.001)#GPH
  mua4 ~ dnorm(0, 0.001)#FHD
#   mua5 #OPEN this is percent data
  mua6 ~ dnorm(0, 0.001)#EdgeArea
  mua7 ~ dnorm(0, 0.001)#ForestArea
  mua8 ~ dnorm(0, 0.001)#Patch size
  mub1 ~ dnorm(0, 0.001)#OrdDate
  mub2 ~ dnorm(0, 0.001)#Start
  #mub3#WIND
  mub4 ~ dnorm(0, 0.001)#Temp

  tau.u ~ dgamma(0.1,0.1)
  tau.v ~ dgamma(0.1,0.1) 
  #tau.a1 ~ dgamma(0.1,0.1)
  tau.a2 ~ dgamma(0.1,0.1)
  tau.a3 ~ dgamma(0.1,0.1)
  tau.a4 ~ dgamma(0.1,0.1) 
#   tau.a5 #OPEN this is percent data
  tau.a6 ~ dgamma(0.1,0.1)#EDGE
  tau.a7 ~ dgamma(0.1,0.1)#Forest
  tau.a8 ~ dgamma(0.1,0.1) #Patch size
  tau.b1 ~ dgamma(0.1,0.1) 
  tau.b2 ~ dgamma(0.1,0.1)
  p ~ dbeta(1,1) #b3 is categorical
  tau.b4 ~ dgamma(0.1,0.1)

  for (i in 1:(n+nzeroes)) {
    #Create priors for species i from the community level prior distributions
    w[i] ~ dbern(omega)
    u[i] ~ dnorm(mu.u, tau.u)  
    v[i] ~ dnorm(mu.v, tau.v) 
    #a1[i] ~ dnorm(mua2, tau.a2)   
    a2[i] ~ dnorm(mua2, tau.a2)
    a3[i] ~ dnorm(mua3, tau.a3)
    a4[i] ~ dnorm(mua4, tau.a4)     
    a5[i] ~ dbeta(1, 1)#OPEN is percent data
    a6[i] ~ dnorm(mua6, tau.a6)#EdgeArea 
    a7[i] ~ dnorm(mua7, tau.a7)#ForestArea
    a8[i] ~ dnorm(mua8, tau.a8)#Patch size

    b1[i] ~ dnorm(mub1, tau.b1)    
    b2[i] ~ dnorm(mub2, tau.b2)
    b3[i] ~ dcat(p[i,])#WIND Data
    b4[i] ~ dnorm(mub4, tau.b4)

    #Create a loop to estimate the Z matrix (true occurrence for species i 
    #at point j.      
    for (j in 1:J) {
      logit(psi[j,i]) <- u[i] + a2[i]*WBH[j] + a3[i]*GPH[j] + a4[i]*FHD[j] + a5[i]*OPEN[j] + a6[i]*EdgeArea[j] + a7[i]*ForestArea[j] + a8[i]*Patch[j]
      mu.psi[j,i] <- psi[j,i]*w[i]
      Z[j,i] ~ dbern(mu.psi[j,i])

      #Create a loop to estimate detection for species i at point k during 
      #sampling period k.      
      for (k in 1:K[j]) {  
        logit(p[j,k,i]) <- v[i] + b1[i]*OrdDate[j,k] + b2[i]*Start[j,k] + b4[i]*Temp[j,k] + b3[i]*Wind[j,k] 
        mu.p[j,k,i] <- p[j,k,i]*Z[j,i]
        X[j,k,i] ~ dbern(mu.p[j,k,i])
      }#K   
    }#J
  }#N

  #Sum all species observed (n) and unobserved species (n0) to find the 
  #total estimated richness
  n0 <- sum(w[(n+1):(n+nzeroes)])
  N <- n + n0

  #Create a loop to determine point level richness estimates for the 
  #whole community and for subsets or assemblages of interest.
  for(j in 1:J){
    Nsite[j]<- inprod(Z[j,1:(n+nzeroes)],w[1:(n+nzeroes)])
    Nfor[j]<- inprod(Z[j,1:n],h.for[1:n])
    Nnon[j]<- inprod(Z[j,1:n],h.non[1:n])
    Nint[j]<- inprod(Z[j,1:n],h2.int[1:n])
    Nedge[j]<- inprod(Z[j,1:n],h2.edge[1:n])
    #Nneo[j]<- inprod(Z[j,1:n],m.neo[1:n])
  }
}
4

1 に答える 1

0

ディストリビューション自体についてはわかりませんdcatが、次のようなエラーが発生している可能性があります。

b3[i] ~ dcat(p[i,])#WIND Data

ただし、モデルで指定する場合、 必要と思わpれる3次元配列です。p[j,k,i].

b3[i] ~ dcat(p[,,i])#WIND Data

iは の最後のインデックスでpあり、2 つのコンマであることに注意してください。彼が助けてくれることを願っています...

于 2015-09-07T01:04:28.127 に答える