This is an old version, view current version.

28.3 Poststratification in Stan

The maximum likelihood and Bayesian estimates can be handled with the same Stan program. The model of individual votes is collapsed to a binomial, where \(A_j\) is the number of voters from group \(j\), \(a_j\) is the number of positive responses from group \(j\), and \(N_j\) is the size of group \(j\) in the population.

data {
  int<lower = 1> J;
  int<lower = 0> A[J]; 
  int<lower = 0> a[J];
  vector<lower = 0>[J] N;
}
parameters {
  vector<lower = 0, upper = 1>[J] theta;
}
model {
  a ~ binomial(A, theta);
}
generated quantities {t
  real<lower = 0, upper = 1> phi = dot(N, theta) / sum(N);
}

The likelihood is vectorized, and implicitly sums over the \(j\). The prior is implicitly uniform on \((0, 1),\) the support of \(\theta.\) The summation is computed using a dot product and the sum function, which is why N was declared as a vector rather than as an array of integers.