Ah, I failed to adapt the per-participant offset. Try this?
adaptation_offset = pm.Normal('a_offset',
mu=0, sigma=1,
dims=("participants"))
adaptation = pm.Deterministic("adaptation",
mu_a[exp_idx] + (adaptation_offset[participant_idx] * sigma_a[exp_idx])
)
So now there is a mu_a per experiment, a sigma_a per experiment, and an offset per participant. Each gets selected according to the appropriate index. I think.