1

STANでスイッチポイント解析をしようとしています。yガウス確率変数の 2 つの異なるシーケンスを持つデータ ベクトルがあります。目標は、シフトが発生した可能性がある時期の事後分布を見つけることです。実行に使用RStanしていますが、エラーは STAN 内にあります。

これは STAN コードです。

data {
  int N;
  vector[N] y;
}
parameters {
  real mu1;
  real sigma1;
  real mu2;
  real sigma2;
  real<lower=0, upper=N> shift;
}
model {
  int i_shift <- round(shift);
  for(n1 in 1:i_shift)
    y[n1] ~ normal(mu1, sigma1);
  for(n2 in i_shift:N)
    y[n2] ~ normal(mu2, sigma2);
}

パーサー (Rstudio に付属) は次のエラーを返します。

SYNTAX ERROR, MESSAGE(S) FROM PARSER:


ERROR at line 13

 11:    }
 12:    model {
 13:      int i_shift <- round(shift);
                      ^
 14:      for(n1 in 1:i_shift)

PARSER EXPECTED: ";"
Error in stanc(model_code = paste(program, collapse = "\n"), model_name = model_cppname,  : 
  failed to parse Stan model due to the above error.

キャストを行う変数の割り当てを処理できないのはなぜですか? STAN では、この種の分析に別のパターンが必要ですか。で整数変数を作成しようとしましたparametersが、STAN はランダム整数変数をサポートしていないようで、連続変数のみをサポートしています。

4

2 に答える 2

0

現在、Stan プログラム内に複合宣言と定義はありません (v2.9.0 の時点)。

ただし、構文の問題を修正しても、統計モデルは修正されません。マニュアルには、あなたが試みていることを行う継続的な変更点モデルがあると思いますので、そこで解決策を確認してください。

于 2016-03-10T22:21:30.030 に答える