central limit theorem implementation in python code example
Example: central limit theorem python example
import numpy as npimport matplotlib.pyplot as pltdef repeat_sample_draws_exponential(n, samp_size, mu, show_all=False): means = [] samples = [] for ii in range(0, n): samples.append(np.random.exponential(mu, samp_size)) means.append(np.mean(samples[ii])) if show_all: pltdim = np.math.ceil(np.math.sqrt(n)) fig, axs = plt.subplots(pltdim, pltdim, figsize=(8, 8), gridspec_kw={'hspace': 0.2}, sharex=True, sharey=True) fig.suptitle('Individual Samples\' Order Value Distribution') fig.text(0.5, 0.04, 'Order Values ($)', ha='center') fig.text(0.04, 0.5, 'Number of Customers', ha='center', rotation='vertical') axs = axs.flatten() for ii in range(0, n): plt.sca(axs[ii]) plt.gca().hist(samples[ii], bins=int(50), histtype='step', label='$mean = {0:.2f}$'.format(np.mean(samples[ii])), range=[0, 2 * mu]) if n < 10: plt.gca().set_title('Sample #{0} : average={1:.2f}'.format(ii, np.mean(samples[ii]))) for item in ([axs[ii].title, axs[ii].xaxis.label, axs[ii].yaxis.label] + axs[ii].get_xticklabels() + axs[ii].get_yticklabels()): item.set_fontsize(8) plt.savefig('expdist_{0}_mu_{1}_sample_{2}_sampsize'.format(mu, n, samp_size)) plt.clf() plt.hist(means, bins=int(10), histtype='step') plt.title('Overall Average of {} Samples\' Average Order Value'.format(n)) plt.xlabel('Average of Individual Sample\'s Order Value ($)') plt.savefig('average_of_expdist_{0}_mu_{1}_sample_{2}_sampsize'.format(mu, n, samp_size)) print('mean of the samples is {0:.2f}'.format(np.mean(means))) print('standard deviation of the samples is {0:.2f}'.format(np.std(means)))repeat_sample_draws_exponential(100, 1000, 170, True)