In [1]:
import numpy as np
In [131]:
bin_count = 50
bins = np.array([0]*bin_count)
bins[5] += 10
bins[6] += 1
bins[46] += 1
bin_values = np.array([i for i in range(0,bin_count)])
In [132]:
possibility_distribution = [(bin_values*np.random.dirichlet(bins, bins.sum())/bins.sum()).sum() for i in range(5000)]
In [133]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.xlim(0,bin_count)
plt.hist(possibility_distribution, bins=50)
''
Out[133]:
In [13]:
(bin_values*np.random.dirichlet(bins, 2)).mean()
Out[13]:
In [54]:
bins = np.array([1]*20)
bins[10] += 1
bins[15] += 1
observations = 1
np.random.dirichlet(bins, 1)
Out[54]:
In [30]:
(bin_values*np.random.dirichlet(bins, 2)/2.0).sum()
Out[30]:
In [20]:
np.random.multinomial?
In [53]:
np.random.dirichlet?
In [136]:
def custom_dirichlet(observations):
total_observations = len(observations) + observations.sum()
sample = np.array([np.random.beta(1+total_observations-obs, 1+obs) for obs in observations])
return sample
In [137]:
custom_dirichlet(bins)
In [ ]: