In [21]:
import numpy as np
import scipy.stats as stats
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
In [66]:
-np.log2(1/500.0)
Out[66]:
In [92]:
def shannon_simulation(sample):
shannon = stats.entropy(sample, base=2)
# plot
sns.distplot(shannon)
size = sample.shape[0]
sims = sample.shape[1]
plt.title('Distribution of {size}-component'.format(size=size)+
' Shannon Entropies\n '+
'Randomly sampled from uniform distributions'+
'\n {sim:.1e} simulations'.format(sim=sim))
plt.xlabel('shannon entropy')
plt.show()
return shannon
sims=int(1e6)
size=15
sample = np.random.uniform(size=[size, sims])
print sample.shape
ent = stats.entropy(sample)
print ent.shape
shannon_vals = shannon_simulation(sample)
In [72]:
-np.log(1/500.0)
Out[72]:
In [60]:
def plot_shannon_dist(shannon_vals, size, sim):
sns.distplot(shannon_vals)
plt.title('Distribution of {size}-component'.format(size=size)+
' Shannon Entropies\n '+
'Randomly sampled from uniform distributions'+
'\n {sim:.1e} simulations'.format(sim=sim))
plt.xlabel('shannon entropy')
plt.show()
plot_shannon_dist(shannon_vals, size=3, sim=10000)
sns.distplot(shannon_vals)
Out[60]:
In [67]:
sim = int(1e3)
for i in np.arange(3, 100, 10):
shannon_vals = shannon_simulation(size=i, sims=sim)
plot_shannon_dist(shannon_vals, sim=sim, size=i)
In [68]:
sim = int(1e5)
size = 500
sh = shannon_simulation(sims=sim, size=size)
In [70]:
plot_shannon_dist(sh, sim=sim, size=size)