Hello, I Have changed my code because it wasn’t really what I wanted to infer…

Here is the new model, let’s imagine that I’m trying to compare mixture rank. To do that I’m using the following ressource Order statistics in PyMC3 . I got two components for each mixture in my case, and here is the new code that I’m using, K is the number of Mixture that I want to compare between each other:

```
y_argsort = np.argsort(y, axis=0)
component_1_dic = {}
component_2_dic = {}
mu_dic = {}
weight_dic = {}
with pm.Model() as mixture_model:
for k in range(K):
component_1_dic['component_1' + str(k)] = pm.Normal('component_1' + str(k), mu = 30, sigma = 8, shape=1)
component_2_dic['component_2' + str(k)] = pm.Normal('component_2' + str(k), mu = 15, sigma = 6, shape=1)
weight_dic['weight_' + str(k)] = pm.Bernoulli('weight_'+ str(k), p = 0.5, shape=1)
theta_stacked = tt.stack([1-weight_dic['weight_' + str(k)], weight_dic['weight_' + str(k)]], axis=1)
component_stacked = [component_1_dic['component_1' + str(k)].distribution, component_2_dic['component_2' + str(k)].distribution]
mu_dic['mixture_' + str(k)] = pm.NormalMixture('mixture_' + str(k), w = theta_stacked , mu = tt.concatenate([component_1_dic['component_1' + str(k)], component_2_dic['component_2' + str(k)]]), sigma = pm.floatX([3, 4]), shape = 1)
mu = tt.concatenate([mu_dic['mixture_' + str(0)]])
for k in range(1, K):
mu = tt.concatenate([mu, mu_dic['mixture_' + str(k)]])
latent = pm.Normal('difference',
mu=mu[y_argsort],
sd=1,
transform=Ordered2D(),
shape=(K,J),
testval=np.repeat(np.arange(K)[:,None], J, axis=1))
trace = pm.sample(100000, tune=10000)
```

My point is already the same, the components of my mixture doesn’t change a lot and python return each time : The number of effective samples is smaller than 10% for some parameters. I have tryied to rise the number of sample to the million (I have acces to a very good computer), and is already the same… Anyone could help me please ?