python统计一组数据中的概率_统计概率思维-概率分布与python实现

一、伯努利分布(Bernoulli Distribution)

#导入包

#数组包

import numpy as np

#绘图包

import matplotlib.pyplot as plt

#统计计算包的统计模块

from scipy import stats

'''arange用于生成一个等差数组,arange([start, ]stop, [step, ]使用见文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html'''

'''第1步,定义随机变量:1次抛硬币成功指正面朝上记录为1,失败指反面朝上记录为0'''

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

X

array([0, 1])

'''

伯努利分布官方使用文档:

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

'''

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

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

p = 0.5 # 硬币朝上的概率

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

pList

array([ 0.5, 0.5])

#第3步,绘图

'''

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

#导入包

#数组包

import numpy as np

#绘图包

import matplotlib.pyplot as plt

#统计计算包的统计模块

from scipy import stats

'''

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

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

'''

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

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

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

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

X

array([0, 1, 2, 3, 4, 5])

'''

二项分布官方使用文档:

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

array([ 0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])

#第3步,绘图

'''

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('随机变量:抛硬币正面朝上次数')

#y轴文本

plt.ylabel('概率')

#标题

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

#显示图形

plt.show()

三、几何分布(Geometric Distribution)

#导入包

#数组包

import numpy as np

#绘图包

import matplotlib.pyplot as plt

#统计计算包的统计模块

from scipy import stats

'''

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

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

'''

'''

第1步,定义随机变量:

首次表白成功的次数,可能是1次,2次,3次等

'''

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

#这里我们想知道5次表白成功的概率

k = 5

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

p = 0.6

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

X

array([1, 2, 3, 4, 5])

'''

几何分布官方使用文档:

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

'''

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

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

#分别表示表白第1次才成功的概率,表白第2次才成功的概率,表白第3次才成功的概率,表白第4次才成功的概率,表白第5次才成功的概率

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

pList

array([ 0.6 , 0.24 , 0.096 , 0.0384 , 0.01536])

#第3步,绘图

'''

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('随机变量:表白第k次才首次成功')

#y轴文本

plt.ylabel('概率')

#标题

plt.title('几何分布:p=%.2f' % p)

#显示图形

plt.show()

四、正态分布(Normal Distribution)

#导入包

#数组包

import numpy as np

#绘图包

import matplotlib.pyplot as plt

#统计计算包的统计模块

from scipy import stats

'''

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

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

'''

'''

第1步,定义随机变量:

'''

mu=0 #平均值

sigma= 1 #标准差

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

X

#第2步,概率密度函数(PDF)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值