OK. I have ran the following code:
with pm.Model() as m5:
# α
phi = pm.Uniform("phi", lower=0.0, upper=1.0)
kappa_log = pm.Exponential("kappa_log", lam=1.5)
kappa = pm.Deterministic("kappa", tt.exp(kappa_log))
alpha = pm.Beta("alpha", alpha=phi * kappa, beta=(1.0 - phi) * kappa, shape=n_subj)
alpha2 = pm.Beta("alpha2", alpha=phi * kappa, beta=(1.0 - phi) * kappa, shape=n_subj2)
# β
beta_h = pm.Normal('beta_h', 0,1)
beta_sd = pm.HalfNormal('beta_sd', 5)
beta = pm.Normal('beta',beta_h, beta_sd, shape=n_subj)
beta2 = pm.Normal('beta2',beta_h, beta_sd, shape=n_subj2)
eps = pm.HalfNormal('eps', 5, shape=2)
# first data (69 trials)
Qs = 0.5 * tt.ones((n_subj,2), dtype='float64') # set values for boths stimuli (CS+, CS-)
vec = 0.5 * tt.ones((n_subj,1), dtype='float64') # vector to save the relevant stimulus's expactation
[Qs,vec, pe], updates = theano.scan(
fn=update_Q,
sequences=[stim, shock],
outputs_info=[Qs, vec, None],
non_sequences=[alpha, n_subj])
vec_ = vec[trials, subj,0] * beta[subj]
# add matrix of expected values (trials X subjects)
ev = pm.Deterministic('expected_value', vec_)
# add PE
pe = pm.Deterministic('pe', pe)
scrs = pm.Normal('scrs', vec_, eps[0], observed=scrMat)
# second data (65 trials)
Qs2 = 0.5 * tt.ones((n_subj2,2), dtype='float64') # set values for boths stimuli (CS+, CS-)
vec2 = 0.5 * tt.ones((n_subj2,1), dtype='float64') # vector to save the relevant stimulus's expactation
[Qs2,vec2, pe2], updates = theano.scan(
fn=update_Q,
sequences=[stim2, shock2],
outputs_info=[Qs2, vec2, None],
non_sequences=[alpha2, n_subj2])
vec2_ = vec[trials2, subj2,0] * beta[subj2]
# add matrix of expected values (trials X subjects)
ev2 = pm.Deterministic('expected_value2', vec2_)
# add PE
pe2 = pm.Deterministic('pe2', pe2)
scrs2 = pm.Normal('scrs2', vec2_, eps[1], observed=scrMat2)
trH_phi = pm.sample(target_accept=.9, chains=4, cores=10, return_inferencedata=True)
Basically, I have created two different matrices and generated two likelihoods functions, all under the same hyperparameters. The resulting trace plots don’t look so good. The alpha of the original dataset (89 subjects with 69 trials) looks ok. The one of the second dataset (8 subjects, 65 trials) looks flat (low 95%HDI is on zero, high almost 0.7).
Any ideas what am I doing wrong?