2017-08-25 5 views
1

RのJAGSを使用して離散値にワイブルモデルをフィッティングしています。連続データにワイブルを当てはめるのに問題はありませんが、離散値。ここでJAGSまたはバグで離散的なワイブル分布を指定するR

は、いくつかのデータであり、ぎざぎざでワイブルモデルに合うようにコード:

#draw data from a weibull distribution 
y <- rweibull(200, shape = 1, scale = 0.9) 
#y <- round(y) 

#load jags, specify a jags model. 
library(runjags) 

j.model =" 
model{ 
for (i in 1:N){ 
y[i] ~ dweib(shape[i], scale[i]) 

shape[i] <- b1 
scale[i] <- b2 
} 

#priors 
b1 ~ dnorm(0, .0001) I(0,) 
b2 ~ dnorm(0, .0001) I(0,) 
} 
" 

#load data as list 
data <- list(y=y, N = length(y)) 

#run jags model. 
jags.out <-  run.jags(j.model, 
         data=data, 
         n.chains=3, 
         monitor=c('b1','b2') 
         ) 
summary(jags.out) 

このモデルはうまく収まります。しかし、y値をy <- round(y)で離散値に変換して同じモデルを実行すると、エラーError in node y[7], Node inconsistent with parentsで失敗します。試してみるたびにノードの特定の番号が変わりますが、常にその番号は小さいです。

私はこれを私のすべての値に非常に小さな数値を加えて実行することができますが、これはデータが離散的であるという事実を説明していません。離散ワイブル分布が存在することは分かっていますが、JAGSでどのように実装できますか?

答えて

2

JAGSでは、 'ones trick'を使用して離散的ワイブル分布を実装できます。あなたは、一般的に確率は0との間であることを保証するために、いくつかの大規模な定数で、あなたの新しいPMFを分割する必要が動作するように「ものトリック」の

pmf_weib <- function(x, scale, shape){ 

    exp(-(x/scale)^shape) - exp(-((x+1)/scale)^shape) 
} 

# probability of getting 0 through 200 with scale = 7 and shape = 4 
probs <- pmf_weib(seq(0,200), 7, 4) 

y <- sample(0:200, 100, TRUE, probs) # sample from those probabilities 

:我々は機能を作ることができるPMF hereを使用すると、いくつかのデータを生成します1.離散ワイブルのpmfがすでにこれを保証しているように見えますが、我々はまだモデルに大きな定数を追加しています。だから、ここのモデルは今のように見えるものです:私たちは)1のベクトルとデータ引数に大きな定数を1を追加し、2)離散ワイブルのPMF、及び

j.model =" 
data{ 
C <- 10000 
for(i in 1:N){ 
ones[i] <- 1 
} 
} 
model{ 
for (i in 1:N){ 
discrete_weib[i] <- exp(-(y[i]/scale)^shape) - exp(-((y[i]+1)/scale)^shape) 

ones[i] ~ dbern(discrete_weib[i]/C) 
} 

#priors 
scale ~ dnorm(0, .0001) I(0,) 
shape ~ dnorm(0, .0001) I(0,) 
} 
" 

注3)当社ベルヌーイ裁判でその確率を実行してください。

上記のコードと同じコードでモデルを適合させることができます。ここで、モデルがパラメータ値(スケール= 7および形状= 4)を正常に回復したことを示す要約があります。

 Lower95 Median Upper95  Mean  SD Mode  MCerr MC%ofSD SSeff 
scale 6.968277 7.289216 7.629413 7.290810 0.1695400 NA 0.001364831  0.8 15431 
shape 3.843055 4.599420 5.357713 4.611583 0.3842862 NA 0.003124576  0.8 15126 
関連する問題