Created
July 2, 2020 08:14
-
-
Save arimitramaiti/9f3b045cebc31b7bffa27c1c719206c6 to your computer and use it in GitHub Desktop.
An example to illustrate continuous distributions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##import required modules | |
import matplotlib.pyplot as plt | |
import numpy as np | |
import scipy.stats as stats | |
import math | |
from matplotlib.ticker import StrMethodFormatter | |
###Python-Graph-1 in article titled Jump from discrete to a continuous distribution | |
##Create the grid | |
fig, axes = plt.subplots(2, 2, figsize=(10,8)) | |
fig.subplots_adjust(top=0.7) | |
#Top left chart | |
axes[0,0].scatter(x=np.arange(10.0,16.0,1.0), y=np.ones(6)) | |
axes[0,0].set_xlim(9,16,1) | |
axes[0,0].set_ylim(0.5,1.5,0.5) | |
axes[0,0].xaxis.set(ticks=range(10,16)) | |
axes[0,0].xaxis.set_major_formatter(StrMethodFormatter('{x:,.1f}')) | |
axes[0,0].spines['top'].set_visible(False) | |
# axes[0,0].spines['right'].set_visible(False) | |
axes[0,0].spines['left'].set_visible(False) | |
axes[0,0].spines['bottom'].set_visible(False) | |
axes[0,0].axes.get_yaxis().set_visible(False) | |
axes[0,0].set_title('1-This can be a continuum', fontsize=14) | |
axes[0,0].set_xlabel('Possible values of X', fontsize=11, weight='bold') | |
#Top right chart | |
axes[0,1].scatter(x=np.arange(10.0,15.5,0.5), y=np.ones(11)) | |
axes[0,1].set_xlim(9.5,15.5,0.5) | |
axes[0,1].set_ylim(0.5,1.5,0.5) | |
axes[0,1].xaxis.set(ticks=range(10,16)) | |
axes[0,1].xaxis.set_major_formatter(StrMethodFormatter('{x:,.1f}')) | |
axes[0,1].spines['top'].set_visible(False) | |
axes[0,1].spines['right'].set_visible(False) | |
# axes[0,1].spines['left'].set_visible(False) | |
axes[0,1].spines['bottom'].set_visible(False) | |
axes[0,1].axes.get_yaxis().set_visible(False) | |
axes[0,1].set_title('2-This can be a continuum', fontsize=14) | |
axes[0,1].set_xlabel('Possible values of X', fontsize=11, weight='bold') | |
#Bottom left chart | |
axes[1,0].scatter(x=np.arange(10.0,15.25,0.25), y=np.ones(21)) | |
axes[1,0].set_xlim(9.5,15.25,0.25) | |
axes[1,0].set_ylim(0.5,1.5,0.5) | |
axes[1,0].xaxis.set(ticks=range(10,16)) | |
axes[1,0].xaxis.set_major_formatter(StrMethodFormatter('{x:,.1f}')) | |
axes[1,0].spines['top'].set_visible(False) | |
# axes[1,0].spines['right'].set_visible(False) | |
axes[1,0].spines['left'].set_visible(False) | |
axes[1,0].spines['bottom'].set_visible(False) | |
axes[1,0].axes.get_yaxis().set_visible(False) | |
axes[1,0].set_title('3-This can be a continuum', fontsize=14) | |
axes[1,0].set_xlabel('Possible values of X', fontsize=11, weight='bold') | |
#Bottom right chart | |
axes[1,1].scatter(x=np.arange(10.0,15.10,0.10), y=np.ones(51)) | |
axes[1,1].set_xlim(9.5,15.10,0.10) | |
axes[1,1].set_ylim(0.5,1.5,0.5) | |
axes[1,1].xaxis.set(ticks=range(10,16)) | |
axes[1,1].xaxis.set_major_formatter(StrMethodFormatter('{x:,.1f}')) | |
axes[1,1].spines['top'].set_visible(False) | |
axes[1,1].spines['right'].set_visible(False) | |
# axes[1,1].spines['left'].set_visible(False) | |
axes[1,1].spines['bottom'].set_visible(False) | |
axes[1,1].axes.get_yaxis().set_visible(False) | |
axes[1,1].set_title('4-This can be a continuum', fontsize=14) | |
axes[1,1].set_xlabel('Possible values of X', fontsize=11, weight='bold') | |
fig.tight_layout() | |
plt.show() | |
###Python-Graph-2 in article titled Jump from discrete to a continuous distribution | |
##Create the grid | |
##This data is used for left chart | |
mean1 = 0 | |
mean2 = 1 | |
mean3 = -1 | |
variance = 1 | |
sigma = math.sqrt(variance) | |
x1 = np.linspace(mean1 - 3*sigma, mean1 + 3*sigma, 100) | |
x2 = np.linspace(mean2 - 3*sigma, mean2 + 3*sigma, 100) | |
x3 = np.linspace(mean3 - 3*sigma, mean3 + 3*sigma, 100) | |
##This data is used for left chart | |
##This data is used for right chart | |
variance1 = 2 | |
sigma1 = math.sqrt(variance1) | |
variance2 = 3 | |
sigma2 = math.sqrt(variance2) | |
x4 = np.linspace(mean1 - 3*sigma, mean1 + 3*sigma, 100) | |
x5 = np.linspace(mean1 - 3*sigma1, mean1 + 3*sigma1, 100) | |
x6 = np.linspace(mean1 - 3*sigma2, mean1 + 3*sigma2, 100) | |
##This data is used for right chart | |
fig, axes = plt.subplots(1, 2, figsize=(12,5)) | |
fig.subplots_adjust(top=0.7) | |
#Left chart | |
axes[0].plot(x1, stats.norm.pdf(x1, mean1, sigma), label=["Mean:0, SD:1"]) | |
axes[0].plot(x2, stats.norm.pdf(x2, mean2, sigma), label=["Mean:1, SD:1"]) | |
axes[0].plot(x3, stats.norm.pdf(x3, mean3, sigma), label=["Mean:-1, SD:1"]) | |
axes[0].legend(loc='best', shadow=True,fontsize='medium') | |
axes[0].spines['top'].set_visible(False) | |
axes[0].spines['right'].set_visible(False) | |
axes[0].spines['left'].set_visible(False) | |
axes[0].set_title('Change in Mean', fontsize=14) | |
axes[0].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
axes[0].axes.get_yaxis().set_visible(False) | |
axes[0].axvline(x=0, color='black', linestyle='dashed', linewidth=1) | |
#Right chart | |
axes[1].plot(x4, stats.norm.pdf(x4, mean1, sigma), label=["Mean:0, SD:1"]) | |
axes[1].plot(x5, stats.norm.pdf(x5, mean1, sigma1), label=["Mean:0, SD:1.4"]) | |
axes[1].plot(x6, stats.norm.pdf(x6, mean1, sigma2), label=["Mean:0, SD:1.7"]) | |
axes[1].legend(loc='best', shadow=True,fontsize='medium') | |
axes[1].spines['top'].set_visible(False) | |
axes[1].spines['right'].set_visible(False) | |
axes[1].spines['left'].set_visible(False) | |
axes[1].set_title('Change in Standard Deviation (Sigma)', fontsize=14) | |
axes[1].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
axes[1].axes.get_yaxis().set_visible(False) | |
axes[1].axvline(x=0, color='black', linestyle='dashed', linewidth=1) | |
fig.tight_layout() | |
plt.show() | |
###Python-Graph-3 in article titled Jump from discrete to a continuous distribution | |
##Common data | |
mu = 0 | |
sigma = 1 | |
x = np.arange(-3,3,0.001) | |
y = stats.norm.pdf(x, mu, sigma) | |
#Chart-0 data | |
z0 = x[x<-1] | |
#Chart-1 data | |
z1 = x[x<1] | |
#Chart-2 data | |
z2 = x[(-1 < x) & (x < 1)] | |
#Chart-3 data | |
z3 = x[x<-2] | |
#Chart-4 data | |
z4 = x[x<2] | |
#Chart-5 data | |
z5 = x[(-2 < x) & (x < 2)] | |
#Chart-6 data | |
z6 = x[x<-3] | |
#Chart-7 data | |
z7 = x[x<3] | |
#Chart-8 data | |
z8 = x[(-3 < x) & (x < 3)] | |
##Create the grid | |
fig, axes = plt.subplots(3, 3, figsize=(12,8)) | |
fig.subplots_adjust(top=0.7) | |
#Chart-0 plotting | |
axes[0,0].plot(x, y) | |
axes[0,0].fill_between(z0, 0, stats.norm.pdf(z0, mu, sigma)) | |
axes[0,0].set_title("Z-score < -1") | |
axes[0,0].get_yaxis().set_visible(False) | |
axes[0,0].spines['top'].set_visible(False) | |
# axes[0,0].spines['right'].set_visible(False) | |
axes[0,0].spines['left'].set_visible(False) | |
axes[0,0].annotate(round(stats.norm.cdf(-1),2), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[0,0].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-1 plotting | |
axes[0,1].plot(x, y) | |
axes[0,1].fill_between(z1, 0, stats.norm.pdf(z1, mu, sigma)) | |
axes[0,1].set_title("Z-score < 1") | |
axes[0,1].get_yaxis().set_visible(False) | |
axes[0,1].spines['top'].set_visible(False) | |
# axes[0,1].spines['right'].set_visible(False) | |
axes[0,1].spines['left'].set_visible(False) | |
axes[0,1].annotate(round(stats.norm.cdf(1),2), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[0,1].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-2 plotting | |
axes[0,2].plot(x, y) | |
axes[0,2].fill_between(z2, 0, stats.norm.pdf(z2, mu, sigma), color="orange") | |
axes[0,2].set_title("-1 < Z-score < 1") | |
axes[0,2].get_yaxis().set_visible(False) | |
axes[0,2].spines['top'].set_visible(False) | |
# axes[0,2].spines['right'].set_visible(False) | |
axes[0,2].spines['left'].set_visible(False) | |
axes[0,2].annotate(round(stats.norm.cdf(1)-stats.norm.cdf(-1),2), (-0.5, 0.1), fontsize=14, weight='bold') | |
axes[0,2].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-3 plotting | |
axes[1,0].plot(x, y) | |
axes[1,0].fill_between(z3, 0, stats.norm.pdf(z3, mu, sigma)) | |
axes[1,0].set_title("Z-score < -2") | |
axes[1,0].get_yaxis().set_visible(False) | |
axes[1,0].spines['top'].set_visible(False) | |
# axes[1,0].spines['right'].set_visible(False) | |
axes[1,0].spines['left'].set_visible(False) | |
axes[1,0].annotate(round(stats.norm.cdf(-2),2), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[1,0].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-4 plotting | |
axes[1,1].plot(x, y) | |
axes[1,1].fill_between(z4, 0, stats.norm.pdf(z4, mu, sigma)) | |
axes[1,1].set_title("Z-score < 2") | |
axes[1,1].get_yaxis().set_visible(False) | |
axes[1,1].spines['top'].set_visible(False) | |
# axes[1,1].spines['right'].set_visible(False) | |
axes[1,1].spines['left'].set_visible(False) | |
axes[1,1].annotate(round(stats.norm.cdf(2),2), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[1,1].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-5 plotting | |
axes[1,2].plot(x, y) | |
axes[1,2].fill_between(z5, 0, stats.norm.pdf(z5, mu, sigma), color="orange") | |
axes[1,2].set_title("-2 < Z-score < 2") | |
axes[1,2].get_yaxis().set_visible(False) | |
axes[1,2].spines['top'].set_visible(False) | |
# axes[1,2].spines['right'].set_visible(False) | |
axes[1,2].spines['left'].set_visible(False) | |
axes[1,2].annotate(round(stats.norm.cdf(2)-stats.norm.cdf(-2),2), (-0.5, 0.1), fontsize=14, weight='bold') | |
axes[1,2].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-6 plotting | |
axes[2,0].plot(x, y) | |
axes[2,0].fill_between(z6, 0, stats.norm.pdf(z6, mu, sigma)) | |
axes[2,0].set_title("Z-score < -3") | |
axes[2,0].get_yaxis().set_visible(False) | |
axes[2,0].spines['top'].set_visible(False) | |
# axes[2,0].spines['right'].set_visible(False) | |
axes[2,0].spines['left'].set_visible(False) | |
axes[2,0].annotate(round(stats.norm.cdf(-3),3), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[2,0].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-7 plotting | |
axes[2,1].plot(x, y) | |
axes[2,1].fill_between(z7, 0, stats.norm.pdf(z7, mu, sigma)) | |
axes[2,1].set_title("Z-score < 3") | |
axes[2,1].get_yaxis().set_visible(False) | |
axes[2,1].spines['top'].set_visible(False) | |
# axes[2,1].spines['right'].set_visible(False) | |
axes[2,1].spines['left'].set_visible(False) | |
axes[2,1].annotate(round(stats.norm.cdf(3),3), (-1.5, 0.1), fontsize=14, weight='bold') | |
axes[2,1].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
#Chart-8 plotting | |
axes[2,2].plot(x, y) | |
axes[2,2].fill_between(z8, 0, stats.norm.pdf(z8, mu, sigma), color="orange") | |
axes[2,2].set_title("-3 < Z-score < 3") | |
axes[2,2].get_yaxis().set_visible(False) | |
axes[2,2].spines['top'].set_visible(False) | |
# axes[2,2].spines['right'].set_visible(False) | |
axes[2,2].spines['left'].set_visible(False) | |
axes[2,2].annotate(round(stats.norm.cdf(3)-stats.norm.cdf(-3),3), (-0.5, 0.1), fontsize=14, weight='bold') | |
axes[2,2].set_xlabel('Z-Score', fontsize=11, weight='bold') | |
fig.tight_layout() | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment