1

データの変化点を推定する方法を見つけようとしています。そのために、変化点の前の期間と変化点の後の期間のランダム効果を推定したいと考えています。ただ、変化点がいつなのか分からないので、推定してみます。私が直面している問題は、ループ構造でチェンジポイント (cp) を使用していて、「カウンター i の上位インデックスを評価できません」というエラーが発生することです。私も推定したい変数を使用してループできないと思いますか? 誰かがこれを行ったことがあるかどうか、および/またはこれを行う方法について提案があるかどうか疑問に思っています。もう 1 つの潜在的な問題は、コマンドでカウンター インデックス i を使用していないことですが、while ループを使用しようとすると、ループが壊れないという問題にも遭遇しました。ご意見をお寄せいただきありがとうございます。

コードのサブセット:

    cp ~ dunif(3,51)

for(i in 1:(cp-1)){
  for(j in 1:nsite){
    b[j] ~ dnorm(0,tau.site)
 }
}

for(i in cp:nyear){
  for(j in 1:nsite){
    b1[j] ~ dnorm(0,tau.site1) # random site effects
 }
}
4

1 に答える 1

1

コメントありがとうございます。私が見つけたものは、この問題の最も単純な形式を解決するものです (私が知る限り) は次のとおりです。

model {
changeyear ~ dunif(1,N)

  for(j in 1:nsite){
b[j] ~ dnorm(0,tau.site)
b1[j] ~ dnorm(0, tau.site1)
}
}

# Note priors for tau.site and tau.site1 are not shown
for (i in 1:nyear){
  for(j in 1:nsite){
  y[i,j] <- b[j] * step(i-changeyear) + b1[j] * step(changeyear-i)
}}

y[i,j] は、モデルからの期待値です。ステップ関数は、コマンドが負でない値の場合は 1、それ以外の場合は 0 に評価されるようなインジケーター関数として機能します。これまでのところ、changeyear は私の時系列の中間点として推定されているようですが、それはおそらく構文の問題ではなく、克服すべきモデルの問題です。ご感想ありがとうございます!

于 2014-05-09T15:10:36.117 に答える