I know this is even more memory intensive, but I’ve gotten some pretty great results using both matrix and array-variables like this:
In data
block:
matrix[N,K] x;
In model
block:
matrix[N,J] xbeta_temp = x * beta;
row_vector[J] xbeta[N];
for (n in 1:N)
xbeta[n] = xbeta_temp[n];
So here I’m benefiting from the quick matrix multiplication and just doing a row-wise (from 1 to N) assignment.