Я пытаюсь выполнить анализ точки переключения с помощью STAN. У меня есть вектор данных y
, который имеет две разные последовательности гауссовых случайных величин. Цель состоит в том, чтобы найти последующее распределение, когда мог произойти сдвиг. Я использую 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, похоже, не поддерживает случайные целочисленные переменные, только непрерывные.
В этой главе имеется только дискретная модель с изменениями, в которой излагаются скрытые дискретные параметры. –