I mentioned on Andrew's blog that I had not had good results with stan v1.0 in high dimension, and he suggested I try again and post here.
The setup is a hierarchical regression model with two groups of random effects, one with 100 members and one with 150 members with 900 total individuals. The numbers from from a real dataset that I don't have permission to share, but I simulate data with similar characteristics. I try out both a continuous and binary outcome. I haven't done any real tuning, but have done the obvious things recommended in the manual. The design matrices are somewhat sparse, and I know that MCMCglmm uses sparse matrix techniques. I didn't see an option for those in stan, or if eigen does so automatically.
The competitor is MCMCglmm, which uses a specialized block-gibbs sampler for regression problems. I dedicate 10% of the iterations to warmup and burnin for each. The results are that (r)stan 1.3 is quite a bit better than I recall from 1.0. The engines are similar on this small test, but I haven't dedicated the CPU time to do numerous replications.
On continuous outcomes (a LMM) MCMCglmm is a bit faster (6.4 effective samples / sec vs 4.1 ES/s), and that the variation of stan is higher (on three trials the minimum ES/s was 1.8; watching the counter go the iteration number has a propensity to go quickly in streaks).
On binary outcomes (a GLMM), stan does better than MCMCglmm with the slice sampling option (2.6 ES/s vs 1.4 ES/s), which is superior to not slice sampling. Again, fairly variable ES/s.
Attached are scripts for both tests and a session info.
Is this a problem likely to benefit from tuning in the warmup or mass matrix options?
Thanks,
Ryan King
University of Chicago Pritzker School of Medicine