离散概率分布,即离散型随机变量的概率分布,与其相对的是连续概率分布。显然,离散往往意味着与自然数密切相关,本文下面介绍几种常见的离散概率分布及其Python运用。

一、离散均匀分布:掷骰子

均匀分布分为离散与连续两种情况,这里介绍离散的情况。离散型均匀分布指有限个数值拥有相同的概率的分布,比如掷骰子。假设实验结果共有n种可能,其分布列为 ,即每种情况发生的可能性相同。

二、二点分布(伯努利分布):扔一次硬币

二点分布,又称伯努利分布。用 X 代表扔一次硬币的结果,正面则 X 取1,反面则 X 取0,该硬币扔出正面的概率为p,其分布列为。数学期望为p。注意到一般不用分类函数表示二点分布的分布列,上述表达形式在 Logistic 回归的最大似然估计中有用。

三、二项分布:扔 n 次硬币中正面的次数

二项分布是多种离散分布的基础,用 X 代表扔 n 次硬币的结果中正面的次数,该硬币扔出正面的概率为p,其分布列为。即先从 n 次结果中随机选出 k 次作为正面,乘以 k 次正面的概率再乘 n - k 次反面的概率。数学期望为 np ,即简单的次数乘以每次期望。

四、几何分布:扔多次硬币第一次出现正面的次数

用 X 代表扔多次硬币在第一次出现正面时扔的次数,该硬币扔出正面的概率为p,其分布列为。即前 k - 1 次均为反面,最后一次为正面的概率。数学期望为 1 / p,即正面概率的倒数。

这样看来,几何分布似乎与几何无关?为什么叫几何分布呢?这是由于其分布列是一个等比数列,而等比数列又被称为几何数列。那等比数列又缘何被称为几何数列呢?这是因为等比数列的中间项是前后两项的几何平均数。

五、负二项分布:扔多次硬币第 r 次出现正面的次数

用 X 代表扔多次硬币在第 r 次出现正面时扔的次数,该硬币扔出正面的概率为p,其分布列为

由于最后一次一定是正面,因此先从前 k - 1 次中随机选出 r - 1 次作为正面,乘以 r 次正面的概率再乘 k - r 次反面的概率。数学期望为 r / p,即出现正面的次数除以正面概率。

几何分布是负二项分布的特例。

六、超几何分布:有限总体不放回抽样

假设一个袋子里有 M 个球,其中有 N 个红球,从袋子里一次性随机摸 n 个球,用 X 代表其中红球的个数,则 X 的分布列为

即先从 N 个红球中选 k 个出来,再从 M - N 个非红球中选 n - k 个出来,这样组成了 n 个球中有 k 个红球的完备情况,再除以从 M 个球中抽取 n 个球的总情况即得到概率。数学期望为 Nn / M,即抽取一个红球的概率乘以抽取个数。

七、泊松分布:二项分布的极限情况

泊松分布是二项分布在单位时间内取极限的情况,即假设每个单位时间里事件发生的次数均服从二项分布,在单位时间趋于 0 时事件发生的次数就服从泊松分布。

首先将时间分成 n 段,每段 1 / n,假设事件发生的概率与时长是线性关系,则  是系数。此时,每段的事件发生次数服从二项分布,。再对 n 求极限,有

注意到,,这是由于分子分母均为 k 项。

综上,,其中  为单位时间内事件发生的平均次数,所以数学期望即为 

八、用 Python 生成上述分布随机数

from scipy.stats import randint, bernoulli, binom, geom, nbinom, hypergeom, poisson###########生成随机数###########
randint.rvs(1, 10, size=100)  # 1 到 9 的均匀离散分布随机数 100 个
bernoulli.rvs(p=0.3, size=100)  # p = 0.3 的伯努利分布随机数 100 个
binom.rvs(n=100, p=0.6, size=10)  # n=100, p=0.6 的二项分布随机数 10 个
geom.rvs(p=0.4, size-100)  # p = 0.4 的几何分布随机数 100 个
nbinom.rvs(n=100, p=0.6, size=10)  # r=100, p=0.6 的负二项分布随机数 10 个
hypergeom.rvs(M=100, n=10, N=20, size=10)  # M=100, n=10, N=20 的超几何分布随机数 10 个
poisson.rvs(mu=1, size=100)  # lambda=1 的泊松分布随机数 100 个###########计算概率###########
randint.pmf(k=2, 1, 10)  # 1 到 9 的均匀离散分布等于 2 的概率
bernoulli.pmf(k=1, p=0.3)  # p = 0.3 的伯努利分布等于 1 的概率
binom.pmf(k=2, n=100, p=0.6)  # n=100, p=0.6 的二项分布等于 2 的概率
geom.pmf(k=2, p=0.4)  # p = 0.4 的几何分布等于 2 的概率
nbinom.pmf(k=2, n=100, p=0.6)  # r=100, p=0.6 的负二项分布等于 2 的概率
hypergeom.rvs(k=2, M=100, n=10, N=20)  # M=100, n=10, N=20 的超几何分布等于 2 的概率
poisson.pmf(k=2, mu=1)  # lambda=1 的泊松分布等于 2 的概率###########累积分布函数###########
randint.cdf(k=2, 1, 10)  # 1 到 9 的均匀离散分布小于等于 2 的概率
bernoulli.cdf(k=1, p=0.3)  # p = 0.3 的伯努利分布小于等于 1 的概率
binom.cdf(k=2, n=100, p=0.6)  # n=100, p=0.6 的二项分布小于等于 2 的概率
geom.cdf(k=2, p=0.4)  # p = 0.4 的几何分布小于等于 2 的概率
nbinom.cdf(k=2, n=100, p=0.6)  # r=100, p=0.6 的负二项分布小于等于 2 的概率
hypergeom.cdf(k=2, M=100, n=10, N=20)  # M=100, n=10, N=20 的超几何分布小于等于 2 的概率
poisson.cdf(k=2, mu=1)  # lambda=1 的泊松分布小于等于 2 的概率

除了上述的 rvs 方法生成随机数、pmf 求概率密度、cdf 求累积概率之外,还有 stats 求矩、median 求中位数等方法,详见https://docs.scipy.org/doc/scipy/reference/stats.html

离散概率分布的介绍及Python运用相关推荐

  1. Python根据离散概率分布采样

    一.概率列表+样本列表 任务描述:我们常常拥有一个概率列表和样本列表,表示每一个样本被选中的概率,并且在概率列表中,概率之和为1.比如,[0.7, 0.2, 0.1]和['钢铁侠', '美国队长', ...

  2. python比较两个列表的重合度_#源代码#超几何分布算法介绍及python下的实现代码...

    原标题:#源代码#超几何分布算法介绍及python下的实现代码 超几何分布是统计学上一种离散概率分布.它描述了由有限个物件中抽出n个物件,成功抽出指定种类的物件的次数(不归还). 在产品质量的不放回抽 ...

  3. 强化学习的学习之路(十)_2021-01-10:K臂老虎机介绍及其Python实现

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  4. tensorflow如何做幂律分布_离散概率分布与连续概率分布

    随机变量:随机变量(random variable)表示随机试验各种结果的实值单值函数.随机事件不论与数量是否直接有关,都可以数量化,即都能用数量化的方式表 概率:,它反映随机事件出现的可能性(lik ...

  5. python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化

    完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...

  6. 概率分布--------离散概率分布和连续概率分布

    解释关键词: 概率分布:离散概率分布和连续概率分布 随机变量:量化的随机世界的函数 分布:数据在统计图中的形状 概率分布:用统计图来表示随机变量所有可能的结果和对应结果发生的概率 离散的概率计算是体积 ...

  7. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...

    点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 文字 OCR 识别技术现在已经相当成熟了,无论 其 准确度还是识别速度 都能够满足我们的日常需要:今天给大家介绍一个 Pytho ...

  8. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  9. 排序算法基本介绍及python实现(含详细注释)

    对数组排序可以说是编程基础中的基础,本文对八种排序方法做简要介绍并用python实现. 代码中注释很全,适合复习和萌新学习.这是刚入学自己写的,可能难免比不上标准的写法,但是懒得改了. 文末会放和排序 ...

  10. 数据结构之平衡树:红黑树的介绍与Python代码实现——17

    红黑树的介绍与Python代码实现 红黑树的介绍 红黑树(Red-Black Tree)是一种平衡二叉查找树,它是一种以比较简单的方式实现的2-3查找树 红黑树基于2-3查找树的表现 红链接:将两个2 ...

最新文章

  1. 打开快手,体验流畅的单目三维手势技术
  2. .Net 基础new关键字的用法
  3. poj 1064 Cable master
  4. flask框架视图和路由_角度视图,路由和NgModule的解释
  5. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習
  6. 网购组装电脑整机为什么便宜?
  7. php tr td,php-基于tr计数的Td / th的XPath
  8. mysql基础-数据库连接、创建、删除、选择等基本操作详解(一)
  9. 反相高低频技术磨皮法
  10. 使用阿里云接口进行银行卡四要素实名认证
  11. 什么相片可以两张弄成一张_图片合成器APP如何将两张照片合成一张
  12. 使用JS快速读取TXT文件
  13. Ubuntu系统清理工具
  14. hdu 1207 汉诺塔II (四柱汉诺塔)
  15. IDAFicator / OllyDBG Plug-in by Zool@nder|AT4RE
  16. Linux识别不了希捷移动硬盘,希捷(Seagate)移动硬盘无法识别怎么办?
  17. 沐风:了不起的便利店
  18. 力扣(718.1143)补9.12
  19. CSMA/CD协议 详解
  20. pair用法(给元素赋值)

热门文章

  1. 公众号平台服务号、订阅号、企业号区别
  2. MK808 vs Raspberry Pi
  3. 广州大学计算机考研有歧视吗,本科985,考研被调剂去了普通一本广州大学,有必要读吗?...
  4. c++实现多对多生产者消费者和socket连用
  5. 基于keras+VGG-16的小数据集多分类图像识别(附代码数据集)
  6. linux系统中rpm啥意思,Linux系统中的RPM简说
  7. C语言 isdigit、isalnum、isalpha、islower、issupper用法及其示例
  8. 计算机无法复制大文件格式,U盘复制文件电脑提示文件过大无法复制怎么解决?...
  9. 每日英语--Week10
  10. 小度加速破圈,智能音箱告别肉搏战