python控制各情况出现概率_python怎样实现离散概率分布和连续概率分布

此文介绍如何用python简单的实现离散概率分布和连续概率分布,加强对分布的理解

离散型概率分布:包括伯努利分布、二项分布、几何分布、泊松分布伯努利分布:伯努利分布就是我们常见的0-1分布,即它的随机变量只取0或者1,各自的频率分别取1−p和p,当x=0或者x=1时,我们数学定义为:

import scipy.stats as stats #导入科学计算包

import numpy as np

import matplotlib.pyplot as plt

#设置默认字体

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=False #axes.unicode_minus控制默认行为

#定义一个随机变量,1次抛硬币成功即正面朝上记录为1,反之记录为0

X = np.arange(0,2,1)

X

#求对应分布的概率:概率质量函数(pmf),他返回的是一个列表,列表中每个元素表示随机变量中对应值的概率

p = 0.5 #硬币朝上概率

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

pList

#绘制图像

'''

plot默认绘制折线,这里我们只绘制点,所以传入下面的参数:

marker:点的形状,值o表示点为圆圈标记(circle marker)

linestyle:线条的形状,值None表示不显示连接各个点的折线

'''

plt.plot(X,pList,marker='o',linestyle='None')

'''

vlines用于绘制竖直线(vertical lines),

参数说明:vline(x坐标值,y坐标最小值,y坐标最大值)

我们传入的X是一个数组,给数组中每个X坐标值绘制竖直线

竖直线y坐标最小值是0,y坐标最大值对应pList中的值

官网文档:https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.vlines

'''

plt.vlines(X, 0, pList)

#x轴文本

plt.xlabel('随机变量:抛硬币1次')

#y轴文本

plt.ylabel('概率')

#标题

plt.title('伯努利分布: p=%.2f' % p)

#显示图形

plt.show()

2.二项分布: 是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。这样的单次成功/失败试验又称为伯努利试验。实际上,当n = 1时,二项分布就是伯努利分布。n次试验中正好得到k次成功的概率由概率质量函数给出:

'''

arange 用于生成一个等差数组,arange(start, stop, step)

使用见文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html

'''

#第1步,定义随机变量:抛10次硬币, 正面朝上的次数

n = 10 #做某件事情的次数

p = 0.5 #做某件独立事件成功的概率

X = np.arange(0, n+1, 1)

X

'''

二项分布官方使用文档:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html#scipy.stats.binom

'''

#第2步,求对应分布的概率:概率质量函数(pmf),它返回一个列表,列表中每个元素表示随机变量中对应值的概率

pList = stats.binom.pmf(X, n, p)

pList

#第3步图形可视化

plt.plot(X, pList, marker='o', linestyle='None')

plt.vlines(X, 0, pList)

#x轴

plt.xlabel('随机变量:抛硬币正面朝上次数')

#y轴

plt.ylabel('概率')

#标题

plt.title('二项分布:n=%i,p=%.2f' % (n, p))

#显示图形

plt.show()

伯努利分布是二项分布在n ;= ;1时的特殊情况。X ;~ ;B(1, ;p)与X ;~ ;Bern(p)的意思是相同的。相反,任何二项分布B(n, ;p)都是n次独立伯努利试验的和,每次试验成功的概率为p。

3.几何分布:在重复多次的伯努利试验中,试验进行到某种结果出现第一次为止,此时的试验总次数服从几何分布,如:射击,首次击中目标时的次数。

#第k次做某件事情,才取到第1次成功

#这里我们想知道10次成功的概率

k = 10

# 做某件事情成功的概率,这里假设每次表白成功概率都是60%

p = 0.6

X = np.arange(1, k+1,1)

X

'''

几何分布官方使用文档:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.geom.html#scipy.stats.geom

'''

#第2步,#求对应分布的概率:概率质量函数 (PMF)

#它返回一个列表,列表中每个元素表示随机变量中对应值的概率

#分别表示第1次才成功的概率,第2次才成功的概率,第3次才成功的概率,一直到第10次才成功的概率,率

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

pList

#第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()

负二项分布是几何分布的一般形式,表示直到成功r次停止,显而易见,当r=1时,它就是几何分布,则

4.泊松分布: 泊松分布主要用来研究单位时间或单位空间内某时间的发生次数,同时事件的发生必须是相互独立的,比如单位时间内通过某一交通灯的车辆数等。λλ大概等于20时,泊松分布基本可以近似为正态分布进行处理。泊松分布用来衡量事件的稳定性是一个不错的方法,再配合一些统计学上的检验方法,能够做很多东西,在之后的连续型随机变量中,有一种分布叫指数分布,它与泊松分布密不可分,可由泊松分布推导出。

'''

第1步,定义随机变量:

已知某路口发生事故的比率是每天2次,

那么在此处一天内发生k次事故的概率是多少?

'''

mu = 2 # 平均值:每天发生2次事故

k=4 #次数,现在想知道每天发生4次事故的概率

#包含了发生0次、1次、2次,3次,4次事故

X = np.arange(0, k+1,1)

X

'''

泊松分布官方使用文档:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.poisson.html#scipy.stats.poisson

'''

#第2步,#求对应分布的概率:概率质量函数 (PMF)

#它返回一个列表,列表中每个元素表示随机变量中对应值的概率

#分别表示发生1次,2次,3次,4次事故的概率

pList = stats.poisson.pmf(X,mu)

pList

#第3步数据可视化

plt.plot(X, pList, marker='o', linestyle='None')

plt.vlines(X, 0, pList)

#x轴文本

plt.xlabel('随机变量:某路口发生k次事故')

#y轴文本

plt.ylabel('概率')

#标题

plt.title('泊松分布:平均值mu=%i' % mu)

#显示图形

plt.show()

连续概率分布:正态分布和幂律分布正态分布:正态曲线呈钟型,两头低,中间高,左右对称。若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

#第1步,定义随机变量:一个(-5,5)等差为0.1数列

mu = 0 #平均值

sigma = 1 #标准差

X = np.arange(-5, 5, 0.1)

X

#第2步求概率密度函数pdf

y = stats.norm.pdf(X, mu, sigma)

y

#第3步,绘图

'''

plot默认绘制折线

'''

plt.plot(X, y)

#x轴文本

plt.xlabel('随机变量:x')

#y轴文本

plt.ylabel('概率:y')

#标题

plt.title('正态分布:$\mu$=%.1f,$\sigma^2$=%.1f' % (mu,sigma))

#网格

plt.grid()

#显示图形

plt.show()标准正态分布表(Z表格)​pan.baidu.com

2. 幂律分布:在日常生活中很常见,像大家所熟知的马太效应和长尾分布,都是幂律分布的典型示范,说简单点,幂律分布就是直白的告诉你世界是不公平的,拥有更多的人会拥有更多,而这根本不像人们愿望中的均富贵,有资源的人占有更多的资源,于是,在他的身上就体现了财富的加速积累的情况,而这样的人,在当今的社会出现的概率并不低。像熊老师所说的在食物链前面的人都是这种情况,所以,你妄图想如万维刚老师说的那样做个认知的精英,实际上无非是自欺欺人的另外一种表述而已,也是常见的商业模式分布。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值