二项分布

  1. import numpy as np
  2. from scipy.stats import binom
  3. import matplotlib.pyplot as plt
  4. num_trials = 60
  5. x = np.arange(num_trials)
  6. plt.plot(x, binom(num_trials, 0.2).pmf(x), 'o-', label='p=0.2')
  7. plt.plot(x, binom(num_trials, 0.5).pmf(x), 'o-', label='p=0.5')
  8. plt.plot(x, binom(num_trials, 0.7).pmf(x), 'o-', label='p=0.7')
  9. plt.legend(shadow=True)
  10. plt.title('二项分布:p对结果的影响')
  11. plt.show()
  12. print('当p不同时,成功m次的能性的最大值都出现在均值处,对应概率为n*p')

image.png

  1. import numpy as np
  2. from scipy.stats import binom
  3. import matplotlib.pyplot as plt
  4. n1 = 10
  5. n2 = 15
  6. n3 = 20
  7. p = 0.5
  8. x = np.arange( max([n1,n2,n3])+1 )
  9. plt.plot(x, binom.pmf(x, p = 0.5, n = n1), 'o-', label='n=10')
  10. plt.plot(x, binom.pmf(x, p = 0.5, n = n2), 'o-', label='n=15')
  11. plt.plot(x, binom.pmf(x, p = 0.5, n = n3), 'o-', label='n=20')
  12. plt.legend(shadow=True)
  13. plt.title('二项分布:n对结果的影响')
  14. plt.show()
  15. print('当N不同时,成功m次的可能性的最大值都出现在均值处,对应概率为n*p')

image.png

几何分布

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats


"""
第1步,定义随机变量
首次表白成功的次数,可能是1次,2次,3次等
"""

# 第k次做某件事情,才取到第1次成功
# 这里我们想知道5次表白成功的概率
k = 5   
# 做某件事情成功的概率,这里假设每次表白成功概率都是60%
p = 0.6 
X = np.arange(1, k+1, 1)

"""
第2步 求对应分布的概率: 概率质量函数 (PMF)
它返回一个列表,列表中每个元素表示随机变量中对应值的概率
分别表示表白第1次才成功的概率,表白第2次才成功的概率,表白第3次才成功的概率,表白第4次才成功的概率,表白第5次才成功的概率
"""

pList = stats.geom.pmf(X, p)

# 第3步,绘图
plt.plot(X, pList, marker='o', linestyle='None')
plt.vlines(X, 0, pList)
# x轴文本
plt.xlabel('随机变量: 表白第k次才首次成功')
# y轴文本
plt.ylabel('概率')
#标题
plt.title('几何分布:p=%.2f' % p)
#显示图形
plt.show()

image.png

泊松分布

from scipy import stats

mu=2
k=4
X=np.arange(0, k+1, 1)
plist=stats.geom.pmf(X, p)
plt.plot(X, plist, marker='o', linestyle='None')
plt.vlines(X, 0, plist)
plt.xlabel('随机变量: 某路口发生k次事故')
plt.ylabel('概率')
plt.title('泊松分布: 平均值mu=%i' % mu)
plt.show()

image.png

正态分布

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt


def demo1():
  mu, sigma = 0, 1
  sampleNo = 1000
  np.random.seed(0)
  s = np.random.normal(mu, sigma, sampleNo)

  plt.hist(s, bins=100, normed=True)
  plt.show()

image.png