I have a bimodal normal distribution that samples from the following distribution:
G = p * g1(x) + (1 - p) g2(x) g1(x) ~ Normal(mu1, sd=1) g2(x) ~ Normal(mu2, sd=1) p ~ Bernoulli(p=pp) pp ~ beta(alpha=1, beta=1)
I am observing the G and I would like to find the g1, g2, and pp distributions.
I am using the following code but it doesn’t let me (obviously) to use the observed in Deterministic function:
with pm.Model() as rev_mmn: pp = pm.Beta('pp', alpha=1, beta=1) p = pm.Bernoulli('cc', p=pp) g_mus = pm.Uniform('g_mu', lower=-1, upper=10, shape=2) g1 = pm.Normal('g1', mu=g_mus, sd=1) g2 = pm.Normal('g2', mu=g_mus, sd=1) g_mu = pm.Deterministic('g', g1 * cc + g2 * (1 - cc), observed=G_)
I wonder if you guys have any suggestion.