2016-03-10 2 views
0

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

ответ

2

Основной причиной является то, что Стэн не позволяет назначать действительные значения целым числам. Оглядываясь назад, мы, вероятно, вообще не включили бы round(), поскольку он вводит разрывы и, таким образом, побеждает дифференцируемость, что является основой нашего HMC и оптимизации и приближенных алгоритмов вывода.

0

В настоящее время в программе Stan нет составной декларации и определения (начиная с версии 2.0.0).

Исправление проблемы с синтаксисом не исправит статистическую модель. Я считаю, что в руководстве есть постоянная модель точек изменения, которая делает то, что вы пытаетесь, поэтому, пожалуйста, проверьте там решение.

+1

В этой главе имеется только дискретная модель с изменениями, в которой излагаются скрытые дискретные параметры. –