Первый раз, используя Стэн. Я начинаю с примера, найденного в классе Coursera, где они используют JAGS , который я пытаюсь переопределить в Stan. Класс свободен для аудита, и я связал соответствующую лекцию.
Справочная информация о модели:
(я не понимаю, как использовать LaTeX, поэтому я ' я постараюсь отформатировать это как можно лучше):
Модель представляет собой смешанную модель, в которой входными данными является вектор n
действительных чисел с 2
потенциальными классами. Они предполагают, что это классы Z_1 ~ N(mu_1, stdev)
и Z_2 ~ N(mu_2, stdev)
(это смесь 2 нормалей с разными mu
, но одинаковыми stdev
). Они предполагают единообразный Дирихлект до alpha=1
вероятности нахождения в каждом классе.
Каждая точка данных извлекается из категориального распределения на основе вектора вероятности, и они увеличивают вероятность с соответствующей нормальной вероятностью.
Мой код
model_code_coursera = """
data {
int<lower=1> N; //Num Samples
int<lower=1> K; //Num classes
real y[N]; //Input which we are trying to assign to each class
} parameters {
simplex[K] probs; //Prob of being in each class
vector[K] mu; //Center of each class
real<lower=0> prec;
vector<lower=0, upper=K>[N] z; //Array of classes ****(option 1)****
int<lower=0, upper=K>[N] z; // Array of classes ****(option 2)****
} model {
probs ~ dirichlet(rep_vector(1,K));
prec ~ gamma(1/2, 2/2);
for (k in 1:K)
mu[k] ~ normal(-1+2*(k-1), 1/100);
for (n in 1:N) {
z[n] ~ categorical(probs);
y[n] ~ normal(mu[z[n]], prec);
}
}
"""
Когда я использую опцию 1, я получаю сообщение об ошибке,
No matches for:
real ~ categorical(vector)
Available argument signatures for categorical:
int ~ categorical(vector)
, которое имеет смысл, поскольку вывод категорийного типа является целым числом.
Однако, когда я делаю то, что имеет смысл и определить z как вектор целых чисел как Я вижу в шпаргалках Stan Я получаю другую ошибку (вариант 2)
10: int<lower=0, upper=K>[N] z; // Array of classes
^
11: } model {
-------------------------------------------------
PARSER EXPECTED: <identifier>