Just looking through your model quickly, it looks like you have have a separate adaptation parameter for every combination of participant and experiment (i.e., dims=("participants","Experiment")). So 2 per participant. I assume this is not what you want. I would assume you want 1 per participant, but have these participant-level parameters drawn from separate hyper parameters. But you have a single list of participant IDs and no way to figure out which condition/group/Experiment each is associated with. So you can do something like this?
adaptation_offset = pm.Normal('a_offset',
mu=0,
sigma=1,
dims="participants"
)
adaptation = pm.Deterministic("adaptation",
mu_adap[exp_idx] +
(adaptation_offset * sigma_adap[exp_idx])
)
If I didn’t screw that up, it should create 1 adaptation_offset per participant, and then creates the per-participant adaptation by selecting the appropriate, experiment-specific value of mu_adap and sigma_adap. Similar sorts of things can be done for the other parameters.