Skip to content

Commit 76ba2e2

Browse files
committed
fix(ehgf): invalid eHGF update code
1 parent 5a22022 commit 76ba2e2

6 files changed

Lines changed: 68 additions & 60 deletions

File tree

commons/stan_files/ehgf_ibrb.stan

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

commons/stan_files/ehgf_ibrb_multipleB.stan

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ model {
214214
sigma ~ normal(0,1);
215215

216216
// individual parameters
217-
mu0_pr ~ normal(0,1);
217+
mu0_pr ~ normal(0,10);
218218
kappa_pr ~ normal(0,10);
219219
omega_pr ~ normal(0,10);
220220
zeta_pr ~ normal(0,10);
@@ -269,21 +269,22 @@ model {
269269
real mu_prev_lower = mu_hat[l-1];
270270
real sa_lower = sa[l-1];
271271
real sa_prev_lower = sa_hat[l-1];
272+
real vv, pimhat, ww, rr, dd;
272273

273274
real v = exp(ka * mu_prev_ + om); // volatility
274275
real w = v / sa_prev_lower; // weighting factor (level: l-1)
275276

276277
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
277-
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
278+
real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
278279
real pwpe = lr * vpe; // precision-weighted prediction error
280+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
279281

280-
real vv = exp(ka *mu [l-1] +om);
281-
real pimhat = 1.0 / (sa_prev_lower +vv);
282-
real ww = vv * pimhat;
283-
real rr = (vv - sa_prev_lower) * pimhat;
284-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
282+
vv = exp(ka * mu[l-1] +om);
283+
pimhat = 1.0 / (sa_prev_lower +vv);
284+
ww = vv * pimhat;
285+
rr = (vv - sa_prev_lower) * pimhat;
286+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
285287

286-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
287288
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
288289
}
289290

@@ -359,21 +360,22 @@ generated quantities {
359360
real mu_prev_lower = mu_hat[l-1];
360361
real sa_lower = sa[l-1];
361362
real sa_prev_lower = sa_hat[l-1];
363+
real vv, pimhat, ww, rr, dd;
362364

363365
real v = exp(ka * mu_prev_ + om);// volatility
364366
real w = v / sa_prev_lower; // weighting factor (level: l-1)
365367

366368
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
367-
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
369+
real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
368370
real pwpe = lr * vpe; // precision-weighted prediction error
371+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
369372

370-
real vv = exp(ka *mu [l-1] +om);
371-
real pimhat = 1.0 / (sa_prev_lower +vv);
372-
real ww = vv * pimhat;
373-
real rr = (vv - sa_prev_lower) * pimhat;
374-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
373+
vv = exp(ka * mu[l-1] +om);
374+
pimhat = 1.0 / (sa_prev_lower +vv);
375+
ww = vv * pimhat;
376+
rr = (vv - sa_prev_lower) * pimhat;
377+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
375378

376-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
377379
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
378380
}
379381

commons/stan_files/ehgf_ibrb_vds.stan

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ model {
183183
sigma ~ normal(0,1);
184184

185185
// individual parameters
186-
mu0_pr ~ normal(0,1);
186+
mu0_pr ~ normal(0,10);
187187
kappa_pr ~ normal(0,10);
188188
omega_pr ~ normal(0,10);
189189

@@ -236,21 +236,22 @@ model {
236236
real mu_prev_lower = mu_hat[l-1];
237237
real sa_lower = sa[l-1];
238238
real sa_prev_lower = sa_hat[l-1];
239+
real vv, pimhat, ww, rr, dd;
239240

240241
real v = exp(ka * mu_prev_ + om); // volatility
241242
real w = v / sa_prev_lower; // weighting factor (level: l-1)
242243

243244
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
244-
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
245+
real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
245246
real pwpe = lr * vpe; // precision-weighted prediction error
247+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
246248

247-
real vv = exp(ka *mu [l-1] +om);
248-
real pimhat = 1.0 / (sa_prev_lower +vv);
249-
real ww = vv * pimhat;
250-
real rr = (vv - sa_prev_lower) * pimhat;
251-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
249+
vv = exp(ka * mu[l-1] +om);
250+
pimhat = 1.0 / (sa_prev_lower +vv);
251+
ww = vv * pimhat;
252+
rr = (vv - sa_prev_lower) * pimhat;
253+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
252254

253-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
254255
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
255256
}
256257

@@ -324,21 +325,22 @@ generated quantities {
324325
real mu_prev_lower = mu_hat[l-1];
325326
real sa_lower = sa[l-1];
326327
real sa_prev_lower = sa_hat[l-1];
328+
real vv, pimhat, ww, rr, dd;
327329

328330
real v = exp(ka * mu_prev_ + om);// volatility
329331
real w = v / sa_prev_lower; // weighting factor (level: l-1)
330332

331333
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
332334
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
333335
real pwpe = lr * vpe; // precision-weighted prediction error
336+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
334337

335-
real vv = exp(ka *mu [l-1] +om);
336-
real pimhat = 1.0 / (sa_prev_lower +vv);
337-
real ww = vv * pimhat;
338-
real rr = (vv - sa_prev_lower) * pimhat;
339-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
338+
vv = exp(ka * mu[l-1] +om);
339+
pimhat = 1.0 / (sa_prev_lower +vv);
340+
ww = vv * pimhat;
341+
rr = (vv - sa_prev_lower) * pimhat;
342+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
340343

341-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
342344
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
343345
}
344346

commons/stan_files/ehgf_ibrb_vds_multipleB.stan

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ model {
190190
sigma ~ normal(0,1);
191191

192192
// individual parameters
193-
mu0_pr ~ normal(0,1);
193+
mu0_pr ~ normal(0,10);
194194
kappa_pr ~ normal(0,10);
195195
omega_pr ~ normal(0,10);
196196

@@ -244,21 +244,22 @@ model {
244244
real mu_prev_lower = mu_hat[l-1];
245245
real sa_lower = sa[l-1];
246246
real sa_prev_lower = sa_hat[l-1];
247+
real vv, pimhat, ww, rr, dd;
247248

248249
real v = exp(ka * mu_prev_ + om); // volatility
249250
real w = v / sa_prev_lower; // weighting factor (level: l-1)
250251

251252
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
252-
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
253+
real lr = 0.5 * sa_hat[l] * ka * w; // learning rate
253254
real pwpe = lr * vpe; // precision-weighted prediction error
255+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
254256

255-
real vv = exp(ka *mu [l-1] +om);
256-
real pimhat = 1.0 / (sa_prev_lower +vv);
257-
real ww = vv * pimhat;
258-
real rr = (vv - sa_prev_lower) * pimhat;
259-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
257+
vv = exp(ka * mu[l-1] +om);
258+
pimhat = 1.0 / (sa_prev_lower +vv);
259+
ww = vv * pimhat;
260+
rr = (vv - sa_prev_lower) * pimhat;
261+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
260262

261-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
262263
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
263264
}
264265

@@ -334,21 +335,22 @@ generated quantities {
334335
real mu_prev_lower = mu_hat[l-1];
335336
real sa_lower = sa[l-1];
336337
real sa_prev_lower = sa_hat[l-1];
338+
real vv, pimhat, ww, rr, dd;
337339

338340
real v = exp(ka * mu_prev_ + om);// volatility
339341
real w = v / sa_prev_lower; // weighting factor (level: l-1)
340342

341343
real vpe = ((sa_lower + pow(mu_lower - mu_prev_lower, 2)) / sa_prev_lower) - 1; // volatility prediction error
342344
real lr = 0.5 * (1.0/sa_hat[l]) * ka * w; // learning rate
343345
real pwpe = lr * vpe; // precision-weighted prediction error
346+
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
344347

345-
real vv = exp(ka *mu [l-1] +om);
346-
real pimhat = 1.0 / (sa_prev_lower +vv);
347-
real ww = vv * pimhat;
348-
real rr = (vv - sa_prev_lower) * pimhat;
349-
real dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
348+
vv = exp(ka * mu[l-1] +om);
349+
pimhat = 1.0 / (sa_prev_lower +vv);
350+
ww = vv * pimhat;
351+
rr = (vv - sa_prev_lower) * pimhat;
352+
dd = (sa_lower + square(mu_lower - mu_prev_lower)) *pimhat - 1;
350353

351-
mu[l-1] = mu_prev_ + pwpe; // posterior prediction
352354
sa[l] = 1.0/((1.0/sa_hat[l]) + fmax(0.0, 0.5 * square(ka) * ww * (ww + rr * dd)));
353355
}
354356

commons/stan_files/hgf_ibrb.stan

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ model {
206206
sigma ~ normal(0,1);
207207

208208
// individual parameters
209-
mu0_pr ~ normal(0,1);
209+
mu0_pr ~ normal(0,10);
210210
kappa_pr ~ normal(0,10);
211211
omega_pr ~ normal(0,10);
212212
zeta_pr ~ normal(0,10);

commons/stan_files/hgf_ibrb_multipleB.stan

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ model {
212212
sigma ~ normal(0,1);
213213

214214
// individual parameters
215-
mu0_pr ~ normal(0,1);
215+
mu0_pr ~ normal(0,10);
216216
kappa_pr ~ normal(0,10);
217217
omega_pr ~ normal(0,10);
218218
zeta_pr ~ normal(0,10);

0 commit comments

Comments
 (0)