Thank you for yours response!
Thank you also for your remark about Beta distribution, it definitely improves the model.
I would like to make sure - if I need the distibution of revenue, not just expected revenue, I can do the following:
# p.shape = (2000, 1)
p = idata.posterior['transaction_probability'].values.ravel()[:, np.newaxis]
# mu.shape = (2000, 1)
mu = idata.posterior['mu'].values.ravel()[:, np.newaxis]
# overall_revenue_samples.shape = (2000,)
overall_revenue_samples = (p * (mu + test['Price'].values[np.newaxis, :])).sum(axis=1)
Then, I can visualize overall_revenue_samples with, for example, arviz plot_posterior. Am I right?