概率统计Python计算:条件概率和概率乘法公式

2024-08-22 22:58

本文主要是介绍概率统计Python计算:条件概率和概率乘法公式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

1. 古典概型中条件概率的计算

条件概率 P ( B ∣ A ) P(B|A) P(BA)是将样本空间限制在 A A A上, A ∩ B A\cap B AB的概率。因此,我们可以利用博文《概率统计Python计算:解古典概型问题》定义的函数P(A, S),计算古典概型中的条件概率。这只需对两个参数A和S分别传递 A ∩ B A\cap B AB A A A即可。
例1 一盒子装有4只产品,其中有3只一等品,1只二等品。从中无放回地抽取产品两次,每次任取一只。设事件 A A A为“第一次取到的是一等品”,事件 B B B为“第二次取到的是一等品”。求条件概率 P ( B ∣ A ) P(B|A) P(BA)
解: 由抽取的任意性知,这个试验是一个古典概型。所谓无放回抽样,指的是第1次抽取1球,观察后不放回袋中,然后从袋中抽取第2次。第一次抽取时在4件产品中任取一件,故有4种取法。第2次抽取是在剩下的3件产品中任取一件,有3种取法。因此,样本空间含样本点数 ∣ S ∣ = 4 ⋅ 3 = 12 |S|=4\cdot 3=12 S=43=12。对事件 A A A:“第一次取到的是一等品”而言,第一次取得的一等品应是原有的3件一等品之一,故有3种取法;第二次是在余下的3件中任取一件,也有3种取法。故 ∣ A ∣ = 3 2 = 9 |A|=3^2=9 A=32=9 P ( A ) = 9 / 12 = 3 / 4 P(A)=9/12=3/4 P(A)=9/12=3/4。事件 A ∩ B A\cap B AB:,“第一次和第二次都取到一等品”。这意味着第一次是在3件一等品中任取一件,第二次是在剩下的2件一等品中任取一件,故 ∣ A ∩ B ∣ = 3 ⋅ 2 = 6 |A\cap B|=3\cdot 2=6 AB=32=6 P ( A ∩ B ) = 6 / 12 = 1 / 2 P(A\cap B)=6/12=1/2 P(AB)=6/12=1/2。于是
P ( B ∣ A ) = P ( A ∩ B ) P ( A ) = 1 / 2 3 / 4 = 2 / 3. P(B|A)=\frac{P(A\cap B)}{P(A)}=\frac{1/2}{3/4}=2/3. P(BA)=P(A)P(AB)=3/41/2=2/3.
设1,2,3表示一等品,4表示二等品。其样本空间就是由1, 2, 3, 4中任意抽取2个的排列构成。设 ( i , j ) (i, j) (i,j)为任一样本点( 1 ≤ i ≠ j ≤ 4 1\leq i\not=j\leq4 1i=j4),事件 A A A:第一次抽到一等品中的样本点应满足条件 i ≤ 3 i\leq 3 i3 B B B:第二次抽到一等品中的样本点应满足 j ≤ 3 j\leq 3 j3
将试验的样本空间及样本空间中样本点结构的约定以及事件A和B应满足的条件反映成如下的Python代码:

from sympy.utilities.iterables import variations as permutations#导入permutations
S=set(permutations(range(1,5),2))   							#1,2,3为一等品,4为二等品
A = subSet(S, lambda a: a[0] <= 3)							    #设置事件A:“第1次取得一等品”
B = subSet(S, lambda a: a[1] <= 3)							    #设置事件B:“第2次取得一等品”
p = P(A&B, A)
print('P(B|A)=%s' % p)

程序的第2行调用permutations函数(第1行导入)设置本试验的样本空间S。第3、4行调用函数subSet(定义见博文《按条件设置随机事件》),设置事件A:“第一次取得一等品”和B:“第2次取得一等品”。第9行调用前面定义的函数P,计算条件概率P(B|A)。注意传递给第一个参数的是表示 A ∩ B A\cap B AB的A&B。运行程序,输出

P(B|A)=2/3

即为本例的解。

2. 乘法公式

例2 已知在10件产品中有2件次品,从中取两次,每次任取一件,作不放回抽样。计算下列事件的概率。

  1. 两件都是正品;
  2. 两件都是次品;
  3. 一件是正品,一件是次品;
  4. 第二次取出的是次品。

解: 按不放回抽取方式,从10件产品中(包括2件次品)抽取两次,每次任取一件是一个古典概型。故用Python计算其中随机事件的概率需先考虑样本空间 S S S及其样本点的结构。我们用 1 , 2 , ⋯ , 8 1, 2, \cdots, 8 1,2,,8表示8个正品,9和10表示2个次品。无放回两次抽取产品的样本点可用二元组 ( i , j ) (i, j) (i,j)表示。其中, 1 ≤ i ≠ j ≤ 10 1\leq i\not=j\leq 10 1i=j10。样本空间 S S S就是由所有这样的二元组构成。设事件 A 1 A_1 A1表示“第一次取到正品”, A 2 A_2 A2表示“第二次取到正品”。则 A 1 A_1 A1中样本点 ( i , j ) (i, j) (i,j)满足条件 i ≤ 8 i\leq8 i8 A 2 A_2 A2中样本点 ( i , j ) (i, j) (i,j)满足条件 j ≤ 8 j\leq8 j8。下列程序计算概率 P ( A 1 ∩ A 2 ) P(A_1\cap A_2) P(A1A2) P ( A ‾ 1 ∩ A ‾ 2 ) P(\overline{A}_1\cap\overline{A}_2) P(A1A2) P ( A 1 ∩ A ‾ 2 ∪ A ‾ 1 ∩ A 2 ) = 1 − P ( A 1 ∩ A 2 ) − P ( A ‾ 1 ∩ A ‾ 2 ) P(A1\cap\overline{A}_2\cup\overline{A}_1\cap A_2)=1-P(A_1\cap A_2)-P(\overline{A}_1\cap\overline{A}_2) P(A1A2A1A2)=1P(A1A2)P(A1A2) P ( A 2 ) P(A_2) P(A2)

from sympy.utilities.iterables import variations as permutations#导入permutations
S=set(permutations(range(1,11),2))      						#1~8为一等品,9,10为二等品
A1=subSet(S, lambda a: a[0]<=8)       						    #事件A1
A2=subSet(S, lambda a: a[1]<=8)       						    #事件A2
A1_=S-A1                                						#A1的对立事件Ā1
A2_=S-A2                                						#A2的对立事件Ā2
p1=P(A1, S)*P(A1&A2, A1)               							#P(A1*A2)
p2=P(A1_, S)*P(A1_&A2_, A1_)            						#P(Ā1*Ā2)
p3=1-p1-p2                              						#P(A1*Ā2)+P(Ā1*A2)
p4=P(A2_, S)                            						#P(Ā2)
print('P(A1*A2)=%s'%p1)
print('P(A1_*A2_)=%s'%p2)
print('P(A1*A2_)+P(A1_*A2)=%s'%p3)
print('P(A2_)=%s'%p4)

程序的第2行完成对样本空间的设置: { 1 , 2 ⋯ , 10 } \{1,2\cdots,10\} {1,2,10}中任取2个元素的排列。第3~6行设置事件 A 1 A_1 A1 A 2 A_2 A2 A ‾ 1 \overline{A}_1 A1 A ‾ 2 \overline{A}_2 A2。第7~10行分别计算概率 P ( A 1 ∩ A 2 ) P(A_1\cap A_2) P(A1A2) P ( A ‾ 1 ∩ A ‾ 2 ) P(\overline{A}_1\cap\overline{A}_2) P(A1A2) P ( A 1 ∩ A ‾ 2 ∪ A ‾ 1 ∩ A 2 ) = 1 − P ( A 1 ∩ A 2 ) − P ( A ‾ 1 ∩ A ‾ 2 ) P(A1\cap\overline{A}_2\cup\overline{A}_1\cap A_2)=1-P(A_1\cap A_2)-P(\overline{A}_1\cap\overline{A}_2) P(A1A2A1A2)=1P(A1A2)P(A1A2) P ( A 2 ) P(A_2) P(A2)。第11~14行输出计算所得概率的值。运行程序,输出:

P(A1*A2)=28/45
P(A1_*A2_)=1/45
P(A1*A2_+A1_*A2)=16/45
P(A2_)=1/5

写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

这篇关于概率统计Python计算:条件概率和概率乘法公式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097637

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2