STAN - получение разных результатов при использовании оператора выборки и прямого увеличения вероятности записи
Я пытаюсь реализовать модель в stan, напрямую увеличивая вероятность регистрации, используя функциональность 'target += bernoulli_logit_lmpf(y|alpha)'. Полная модель ниже:
data {
int<lower=0> Ntotal;
int y[Ntotal];
int<lower=0> Nsubj;
int<lower=0> s[Ntotal];
int<lower=0> Nstages;
int<lower=0> Nstates;
vector[Nstages*Nstates] log_ts;
vector[Nstages*Nstates] log_ds;
int<lower=0> a_i[Ntotal];
int<lower=0> b_i[Ntotal];
}
parameters {
real log_w1;
real log_w3;
real delta;
real delta_p;
real tau_p;
}
transformed parameters {
vector[Nstates*Nstages] gradient;
gradient = exp(log_ds*delta_p + log_ts*tau_p + log_w3) + exp(log_ds*delta +
log_w1);
}
model {
log_w1 ~ normal(0,5);
log_w3 ~ normal(0,5);
delta ~ normal(0,2);
delta_p ~ normal(0,2);
tau_p ~ normal(0,2);
for(n in 1:Ntotal){
target += bernoulli_logit_lpmf(y[n] | (gradient[a_i[n]] -
gradient[b_i[n]]) );
}
}
Насколько я понимаю, это должно привести к тем же результатам, что и приведенное ниже утверждение выборки:
model {
log_w1 ~ normal(0,5);
log_w3 ~ normal(0,5);
delta ~ normal(0,2);
delta_p ~ normal(0,2);
tau_p ~ normal(0,2);
y ~ bernoulli_logit(gradient[a_i] - gradient[b_i]);
}
Однако две модели дают совершенно разные результаты (даже с одним и тем же начальным числом в R и Stan). Я подумал, что проблема могла заключаться в том, как я реализовал прямое приращение, поэтому я попробовал и следующую модель.
model {
real lps[Ntotal];
log_w1 ~ normal(0,5);
log_w3 ~ normal(0,5);
delta ~ normal(0,2);
delta_p ~ normal(0,2);
tau_p ~ normal(0,2);
for(n in 1:Ntotal){
lps[n] = bernoulli_logit_lpmf(y[n] | (gradient[a_i[n]] - gradient[b_i[n]]));
}
target += log_sum_exp(lps);
}
Тем не менее, все три модели дают разные результаты. Интересно, что прямое приращение выполняется примерно в два раза быстрее, чем оператор выборки, но, похоже, не дает правильных результатов. Мне нужно использовать метод прямого приращения, потому что я в конечном итоге преобразую эту модель в смешанную модель, и, насколько я знаю, смешанные модели нуждаются в непосредственном обновлении логарифмической вероятности. Любая помощь с этим будет высоко ценится!
С уважением, Тим