data { int N; int J; vector[N] y; int x[N]; int county[N]; vector[J] u; } parameters { real a[J]; real b; real g_0; real g_1; real sigma_y; real sigma_a; } model { for (j in 1:J) a[j] ~ normal(g_0 + g_1 * u[j], sigma_a); for (n in 1:N) y[n] ~ normal(a[county[n]] + b * x[n], sigma_y); }