I am pretty new to all this so I’m definitely doing this completely wrong. This is what I tried.
with pm.Model(coords=coords) as model:
sigma_s = pm.HalfNormal('sigma_s', 1)
sigma_r = pm.HalfNormal('sigma_r', 1)
sigma_t_s = pm.HalfNormal('sigma_t_s', 1)
sigma_t_r = pm.HalfNormal('sigma_t_r', 1)
intercept = pm.Normal('intercept', 0, 1)
init_s = pm.Normal('init_s', 0, 1, shape=(1, len(servers)))
init_r = pm.Normal('init_r', 0, 1, shape=(1, len(returners)))
offset_s = pm.Normal('offset_s', 0, sigma_t_s, shape=(len(date)-1, len(servers)))
offset_r = pm.Normal('offset_r', 0, sigma_t_r, shape=(len(date)-1, len(returners)))
offset_concat_s = at.concatenate([init_s, offset_s*sigma_s])
offset_concat_r = at.concatenate([init_r, offset_r*sigma_r])
s = offset_concat_s.cumsum(axis=1)
r = offset_concat_r.cumsum(axis=1)
logits = pm.Deterministic('p', s[date_idx, server_idx] - r[date_idx, returner_idx] + intercept)
spw = pm.Binomial('spw', combined['sp_total'].values, logit_p=logits, observed=combined['sp_won'].values)