2017-06-30 7 views
0

私はベイジアンデータ分析を学んでいます。私はTrond Reitanによってチュートリアルを複製しようとしていますが、これはもともとWinBugsによって作成されています。スタンで整数潜在変数を指定

具体的には、私はデータとモデル次いる

weta.windata<-list(numdet=c(0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 3, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 3, 1, 1, 3, 1, 1, 2, 0, 2, 1, 1, 1, 1,0, 0, 0, 2, 0, 2, 4, 3, 1, 0, 0, 2, 0, 2, 2, 1, 0, 0, 1), 
      numvisit=c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,4, 4, 4, 4, 4, 4, 4 ,4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), 
      nsites=72) 

model_string1=" 
data{ 
int nsites; 
real<lower=0> numdet[nsites]; 
real<lower=0> numvisit[nsites]; 
} 
parameters{ 
real<lower=0> p; 
real<lower=0> psi; 
int<lower=0> z[nsites]; 
} 
model{ 
p~uniform(0,1); 
psi~uniform(0,1); 

for(i in 1:nsites){ 
z[i]~ bernoulli(psi); 
p.site[i]~z[i]*p; 
numdet[i]~binomial(numvisit[i],p.site[i]); 
} 
} 
" 

mcmc_samples <- stan(model_code=model_string1, 
         data=weta.windata, 
         pars=c("p","psi","z"), 
         chains=3, iter=30000, warmup=10000) 

コンテキストがフィールドにwetasを検出についてです。 72のサイトがあります。各サイトについて、研究者は数回(すなわち、numvisit)訪問し、見つかった回数(すなわちnumdet)を記録した。

潜在変数zがあり、1つのサイトが湿っているかどうかを表します。 psiは、1つのサイトが湿っている確率です。 pは検出率である。

私が持っている問題は、私は本当のことはZに設定した場合しかし、それは、

real<lower=0> z[nsites]; 

ある問題は、私が設定することはできませんとなり、整数

parameters or transformed parameters cannot be integer or integer array; found declared type int, parameter name=z 
Problem with declaration. 

するZ宣言することはできませんです整数としてのベルヌーイからの変数...

私は非常にスタンです。この質問が非常に愚かなら私を許してください。

答えて

2

Stanは、実数変数が整数であることをふるまうための整数パラメータやハックをサポートしていません。それがサポートしているのは、密度から整数変数を外すことです。それで、はるかに高い効率とはるかに高いテール分解能でそれらを再構成することができます。

潜在的な離散パラメータのマニュアルの章は、開始する場所です。これには、CJSの人口モデルの実装が含まれています。ケーススタディとしてDorazioとRoyleの占有モデルを実装し、伊藤博樹はKeryとSchaubの全書籍をStanに翻訳しました。それらはすべて、Webサイトのユーザー>>ドキュメントの下にリンクされています。

関連する問題