Hi. Assume I have a dataframe consisting of baseball players and their respective
num_hits. I would like to fit a Mixture of Beta Binomials, but am getting a shape mismatch. Any help would be greatly appreciated.
num_mixtures = 3 with pm.Model() as mix_bb_model: mixing_proportions = pm.Dirichlet("mixing_proportions", a=np.ones(num_mixtures)) # Now generate prior Beta hyperparameters for each of the num_mixture Betas phi = pm.Uniform("phi", lower=0.0, upper=1.0, shape=num_mixtures) kappa_log = pm.Exponential("kappa_log", lam=2.5, shape=num_mixtures) kappa = pm.Deterministic("kappa", at.exp(kappa_log)) theta = pm.Beta( "theta", alpha=phi*kappa, beta=(1.0-phi)*kappa, shape=(df.shape,num_mixtures) ) components = pm.Binomial.dist( n=df["num_bats"].values, p=theta, shape=(df.shape,num_mixtures) ) lik = pm.Mixture('lik', w=mixing_proportions, comp_dists=components, observed=df["num_hits"].values)
and this is returning an error of:
ValueError: Incompatible Elemwise input shapes [(18, 18), (18, 3)]
18 is the number of players and
3 is the number of mixtures.