python作为数据分析被大家熟悉。scipy作为数据分析包更是被广为熟知,scipy.stats用来做统计分析非常好用。scipy.stats包含了各种连续分布和离散分布模型。这篇小文使用scipy.stats来实现几种常见的统计分布。

---------

1. 伯努利分布:伯努利试验单次随机试验,只有"成功(值为1)"或"失败(值为0)"这两种结果,又名两点分布或者0-1分布。

import numpy as npfrom scipy import statsimport matplotlib.pyplot as pltfrom pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei']#中文雅黑字体plt.rcParams['axes.unicode_minus']=False #显示负号

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

p=0.7#科比投篮命中率pList=stats.bernoulli.pmf(X,p)#在离散分布中,请将pmf改为pdfprint(pList)
plt.plot(X,pList,marker='o',linestyle='None')'''vlines用于绘制竖直线(vertical lines),参数说明:vline(x坐标值,y坐标最小值,y坐标最大值)我们传入的X是一个数组,是给数组中的每个x坐标值绘制直线,数值线y坐标最小值是0,y坐标最大值是对应的pList中的值'''plt.vlines(X,(0,0),pList)
plt.xlabel('随机变量:科比投篮1次')
plt.ylabel('概率')
plt.title('伯努利分布:p=%.2f'% p)plt.show()

stats.bernoulli.pmf(X,p)

用于求概率密度。

假设科比投篮命中率为0.7,一次投篮的伯努利分布如图所示。

2. 二项分布:假设某个试验是伯努利试验,其成功概率用p表示,那么失败的概率为q=1-p。进行n次这样的试验,成功了x次,则失败次数为n-x,二项分布求的是成功x次的概率。

#第1步,定义随机变量:5次抛硬币,正面朝上的次数n=10  #做某件事的次数,例如科比三分投篮次数p=0.75 #三分投篮命中率X=np.arange(0,n+1,1)#第2步:求对应分布的概率:概率质量函数(PMF)#它返回一个列表,列表中每个元素表示随机变量中对应的概率pList=stats.binom.pmf(X,n,p) #在离散分布中,请将pdf改为pmfprint(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=%.3f'%(n,p))#显示图形plt.show()

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

用于求概率密度。二项分布的期望np, 方差np(1-p).

假设科比三分投篮命中率为0.75,10次投篮的二项分布如图所示,投中8次的概率最大。

3. 几何分布(Geometric Distribution):在伯努利试验中,得到一次成功所需要的试验次数X。X的值域是{ 1, 2, 3, ... };在得到第一次成功之前所经历的失败次数Y = X − 1。Y的值域是{ 0, 1, 2, 3, ... }

#第k次做某事,才取得第1次成功#这里我们想知道5次表白成功的概率k=5#做某件事成功的概率,这里假设每次表白成功概率都是60%p=0.6X=np.arange(1,k+1,1)#第2步:#求对应分布的概率:概率质量函数(PMF)#它返回一个列表,列表中每个元素表示随机变量中对应值的概率#分别表示表白第1次成功的概率,表白第2次成功的概率,表白第三次成功的概率pList=stats.geom.pmf(X,p)print(pList)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()

stats.geom.pmf(X,p)

用于求概率密度。几何分布的众数永远是1。

表白第一次就成功的概率最大。

3. 泊松分布:泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。

λ=3 #平均值:机器每周发生3次报警k=10 #次数,现在想知道每周发生4次事故的概率#包含了发生0次,1次,2次,3....,10次事故X=np.arange(0,k+1,1)#第2步: #求对应分布的概率:概率质量函数(PMF)#它返回一个列表,列表中每个元素表示随机变量中对应值的概率#分别表示发生1次,2次,3次,4次事故的概率pList=stats.poisson.pmf(X,λ)print(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'%λ)#显示图片plt.show()

stats.poisson.pmf(X,λ)

用于求概率密度。

泊松分布的期望和方差都是λ。计算下周发生10次的概率几乎为0。

4. 正太分布:(Normal Distribution):

#第1步:定义随机变量:mu=0 #平均值sigma=1 #标准差X=np.arange(-5,5,0.1)#第2步:概率密度函数(PDF)y=stats.norm.pdf(X,mu,sigma)#连续分布用pdf,离散分布用pmf#第3步:绘图plt.plot(X,y)plt.xticks(np.arange(-5, 5, 1))#x轴文本plt.xlabel('随机变量:x')#y轴文本plt.ylabel('概率')#标题plt.title('正态分布:$\mu$=%.1f,$\sigma^2$=%.1f'%(mu,sigma))#网格plt.grid()#显示图形plt.show()

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

用于求概率密度。

如图是一个均值为0,方差为1的标准正太分布。

------End------

推荐阅读:

统计中的各种分布:统计中的各种分布

如何判断一个分布是正太分布:如何判断一个数据分布是否是正太分布?

假设检验:假设检验再学习

这本书入门统计学很不错,推荐学习

如何画正太分布曲线_python scipy.stats实现各种常见的统计分布相关推荐

  1. gamma分布python代码_python scipy stats.gamma用法及代码示例

    伽玛连续随机变量. 作为一个实例rv_continuous类,gamma对象从中继承了通用方法的集合(完整列表请参见下文),并使用特定于此特定发行版的详细信息来完善它们. 注意: 的概率密度函数gam ...

  2. python中uniform函数_python scipy stats.uniform用法及代码示例

    均匀连续随机变量. 在标准形式下,分布均匀[0, 1].使用参数loc和scale,在上获得均匀分布[loc, loc + scale]. 作为一个实例rv_continuous类,uniform对象 ...

  3. ks检验python代码_python scipy stats.kstest用法及代码示例

    进行Kolmogorov-Smirnov测试是否合身. 这将针对给定的分布G(x)对观察到的随机变量的分布F(x)进行测试.在原假设下,两个分布相同,F(x)= G(x).替代假设可以是" ...

  4. python randint函数用法_python scipy stats.randint用法及代码示例

    均匀离散随机变量. 作为一个实例rv_discrete类,randint对象从中继承了通用方法的集合(完整列表请参见下文),并使用特定于此特定发行版的详细信息来完善它们. 注意: 的概率质量函数ran ...

  5. 如何画正太分布曲线_图解统计学 01 | 神奇的正态分布

    一.正态分布介绍 这是在统计学中大名鼎鼎的一种分布,最早由德国的天文学家Moivre提出. 后来,德国数学家高斯(Gauss)首先将其应用于天文学研究,故正态分布也叫"高斯分布". ...

  6. python画点云_python scipy Delaunay绘制点云

    编辑:同时绘制凸面外壳import numpy as np from scipy.spatial import Delaunay points = np.random.rand(30, 2) # 30 ...

  7. scipy.stats 用法

    -- coding: utf-8 -- from scipy import stats from numpy import random Distributions 常用分布可参考本文档结尾处 分布可 ...

  8. python可以构建sem模型_python-分组的熊猫DataFrames:如何将scipy.stats.sem应用于它们?...

    我知道我可以通过执行以下操作来应用numpy方法: dataList是DataFrames的列表(相同的列/行). testDF = (concat(dataList, axis=1, keys=ra ...

  9. python scipy.stats.norm.cdf_Python stats.norm方法代码示例

    本文整理汇总了Python中scipy.stats.norm方法的典型用法代码示例.如果您正苦于以下问题:Python stats.norm方法的具体用法?Python stats.norm怎么用?P ...

最新文章

  1. 12.多线程的实现方式、线程安全问题的产生与解决以及生产者与消费者问题
  2. MongoDB的安装及基本命令和pymongo的使用
  3. Knockout 新版应用开发教程之visible绑定
  4. LeetCode 16 3Sum Closest
  5. 你试过这样写C程序吗
  6. Socket系列3 Socket服务端开发 数据的接收和发送
  7. 【UI/UX】桌面GUI设计
  8. observable java_java源码阅读Observable(观察者模式)
  9. Ubuntu 10.04的安装
  10. html三个div相同高度,Html三个div并排,高度相同
  11. 实施工程师面试基本问题
  12. html5新标签转换插件,GOOGLE推出SWIFFY插件 一键转换SWF到HTML5
  13. wps怎么免费导出简历_稻壳儿简历免费手机,手机wps如何免费导出简历?
  14. 堆密度测定的意义_什么叫真密度_真密度的测定_真密度和表观密度、堆积密度-仪器网...
  15. 苹果花期行情结束见顶?铁矿石认沽次末日25倍,纯碱09-01季节性反套?2022.5.10
  16. python程序员前景-一个6年Python程序员的工作感悟,送给还在迷茫的你
  17. curl 请求日志_CURL常用命令
  18. 史上最全的Nokia3250参数
  19. Signing for ‘xxx‘ requires a development team.
  20. 多商户商城系统功能拆解24讲-平台端分销会员

热门文章

  1. 组合数的研究 —— 连续整数的配对
  2. 黄金分割法与单峰函数求极值
  3. mysql 主备监控_mysql 主从备份监控slave状态nagios脚本
  4. 怎么得到16位校检和-c语言,16位CRC校验C语言算法.pdf
  5. python常用代码入门-Python基础总结成千行代码,让Python入门更简单!
  6. python是什么 自学-自学python用什么系统好
  7. python怎么读发音百度翻译-python 百度翻译破解版,亲证可行
  8. python与excel-Python与Excel(1)
  9. mysql signal函数_MySQL:简单记录信号处理
  10. iview表格处理后台返回的字符串