@@ -208,7 +208,7 @@ model {
208208 sigma ~ normal (0 ,1 );
209209
210210 // individual parameters
211- mu0_pr ~ normal (0 ,1 );
211+ mu0_pr ~ normal (0 ,10 );
212212 kappa_pr ~ normal (0 ,10 );
213213 omega_pr ~ normal (0 ,10 );
214214 zeta_pr ~ normal (0 ,10 );
@@ -262,21 +262,22 @@ model {
262262 real mu_prev_lower = mu_hat[l- 1 ];
263263 real sa_lower = sa[l- 1 ];
264264 real sa_prev_lower = sa_hat[l- 1 ];
265+ real vv, pimhat, ww, rr, dd;
265266
266267 real v = exp( ka * mu_prev_ + om); // volatility
267268 real w = v / sa_prev_lower; // weighting factor (level: l-1)
268269
269270 real vpe = ((sa_lower + pow( mu_lower - mu_prev_lower, 2 )) / sa_prev_lower) - 1 ; // volatility prediction error
270- real lr = 0.5 * ( 1.0 / sa_hat[l]) * ka * w; // learning rate
271+ real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
271272 real pwpe = lr * vpe; // precision-weighted prediction error
273+ mu[l- 1 ] = mu_prev_ + pwpe; // posterior prediction
272274
273- real vv = exp( ka * mu [l- 1 ] + om);
274- real pimhat = 1.0 / (sa_prev_lower + vv);
275- real ww = vv * pimhat;
276- real rr = (vv - sa_prev_lower) * pimhat;
277- real dd = (sa_lower + square( mu_lower - mu_prev_lower)) * pimhat - 1 ;
275+ vv = exp( ka * mu [l- 1 ] + om);
276+ pimhat = 1.0 / (sa_prev_lower + vv);
277+ ww = vv * pimhat;
278+ rr = (vv - sa_prev_lower) * pimhat;
279+ dd = (sa_lower + square( mu_lower - mu_prev_lower)) * pimhat - 1 ;
278280
279- mu[l- 1 ] = mu_prev_ + pwpe; // posterior prediction
280281 sa[l] = 1.0 / ((1.0 / sa_hat[l]) + fmax( 0.0 , 0.5 * square( ka) * ww * (ww + rr * dd)));
281282 }
282283
@@ -350,21 +351,22 @@ generated quantities {
350351 real mu_prev_lower = mu_hat[l- 1 ];
351352 real sa_lower = sa[l- 1 ];
352353 real sa_prev_lower = sa_hat[l- 1 ];
354+ real vv, pimhat, ww, rr, dd;
353355
354356 real v = exp( ka * mu_prev_ + om);// volatility
355357 real w = v / sa_prev_lower; // weighting factor (level: l-1)
356358
357359 real vpe = ((sa_lower + pow( mu_lower - mu_prev_lower, 2 )) / sa_prev_lower) - 1 ; // volatility prediction error
358- real lr = 0.5 * ( 1.0 / sa_hat[l]) * ka * w; // learning rate
360+ real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
359361 real pwpe = lr * vpe; // precision-weighted prediction error
362+ mu[l- 1 ] = mu_prev_ + pwpe; // posterior prediction
360363
361- real vv = exp( ka * mu [l- 1 ] + om);
362- real pimhat = 1.0 / (sa_prev_lower + vv);
363- real ww = vv * pimhat;
364- real rr = (vv - sa_prev_lower) * pimhat;
365- real dd = (sa_lower + square( mu_lower - mu_prev_lower)) * pimhat - 1 ;
364+ vv = exp( ka * mu [l- 1 ] + om);
365+ pimhat = 1.0 / (sa_prev_lower + vv);
366+ ww = vv * pimhat;
367+ rr = (vv - sa_prev_lower) * pimhat;
368+ dd = (sa_lower + square( mu_lower - mu_prev_lower)) * pimhat - 1 ;
366369
367- mu[l- 1 ] = mu_prev_ + pwpe; // posterior prediction
368370 sa[l] = 1.0 / ((1.0 / sa_hat[l]) + fmax( 0.0 , 0.5 * square( ka) * ww * (ww + rr * dd)));
369371 }
370372
0 commit comments