I’ve made some fake data and I’m trying to recover the parameters with a Stan model as a training exercise. I’m not getting what I want at all and I’d really appreciate if someone could help me out.

The fake dataset as shown in the code below is just two Dirichlet mixtures with \alpha's (1,2,10) and (1,1,1) combined in equal parts to create a matrix with 3 columns and N=250 rows.

The model cannot recover the parameters because thetas are declared to be simplexes but $\alpha$s are not simplexes. It works (somewhat) if you change the parameter constraints to

There’s still a label switching problem because it could be either theta1=(1,2,10),theta2=(1,1,1) or theta1=(1,1,1),theta2=(1,2,10). If you run only one chain it converges to one solution but if you run multiple chains different chains choose different labeling at random and that messes up the diagnostics.

Sorry, I don’t know anything that isn’t in the Stan User’s Guide. There’s some ideas there but I think in general label switching is an unsolved problem.

That’s a cunning idea; thank you. The ordered simplex is useful to know about but as @nhuurre mentioned, the a parameter of the dirichlet distribution isn’t actually a simplex :-) Will read Betancourt’s article on identifiability in mixture models.

For my use case, I could model my problem as a multi-normal mixture with a common covariance, but would that give me more options to tackle identifiability I wonder?