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 [157]:
def custom_dirichlet(observations):
total_observations = len(observations) + observations.sum()
sample = np.array([np.random.beta(1+obs, 1+total_observations-obs) for obs in observations])
return sample
In [176]:
bins = np.array([0]*40)
bins[10] += 10
bin_values = np.array([i for i in range(0,len(bins))])
possibility_distribution = [(bin_values*custom_dirichlet(bins)).sum() for i in range(5000)]
plt.xlim(0,bin_count)
plt.hist(possibility_distribution, bins=50)
''
Out[176]:
In [151]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.xlim(0,bin_count)
plt.hist(possibility_distribution, bins=50)
Out[151]:
In [ ]: