from scipy.stats import binom import matplotlib.pyplot as plt # experiment: 10 balls, 7 are white and 3 black # we pick a ball 10 times with replacement # What is the probability that there are: # - 0 white balls # - 1 white ball # - 2 white balls # - 3 white balls # .. # - 10 white balls # So the number of white balls is what we are interested in. # This number we call x, so since we are asking for the probability # for various numbers of white balls (here 0 to 10) we create # a vector X=[0,1,..10] for convenience n = 10 #number of trials p = 7/10 #probability for the occurrence of p q = 1-p #probability for the occurrence of q X = list(range(n+1)) #What we can do is, we can make different plots for #different ratios of black and white balls, thus #changing the probability for the occurrence of the balls #we can then see how the distribtion changes dist = [binom.pmf(x,n,p) for x in X]
P=[0.2, 0.5, 0.8] fig,ax1 = plt.subplots(figsize=(6,6)) ax1.set_ylabel("probability", color="blue") ax1.set_xlabel("number of occurrences of our favored event, i.e. draw of a white ball") ax1.bar(X, dist,color='blue') ax1.set_title('p='+str(p)) plt.interactive(True) plt.show()
How to print several distributions in a loop
#array with the probabilites for the occurrence of the event of interest #(in our example this would be the ratio of white balls to the total number of balls) P=[0.2, 0.5, 0.8] #make a figure with one row and 3 ( len(P) ) columns fig, axes =plt.subplots(1,len(P),figsize=(18,6)) colors=['blue', 'red','green'] for i in list(range(len(P))): ax1=axes[i] ax1.set_ylabel("probability", color=colors[i]) ax1.set_xlabel("number of occurrences of our favored event, i.e. draw of a white ball") #compute the distribution for the p value in P[i] dist=[binom.pmf(x,n,P[i]) for x in X] ax1.bar(X, dist,color=colors[i]) ax1.set_title('p='+str(P[i])) plt.tight_layout() plt.interactive(True) plt.show()
Was this helpful?
2 / 0