博客
关于我
概率统计Python计算(6)条件概率和概率乘法公式
阅读量:660 次
发布时间:2019-03-15

本文共 4493 字,大约阅读时间需要 14 分钟。

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

根据条件概率的计算公式 P ( B ∣ A ) = P ( A ∩ B ) / P ( A ) P(B|A)=P(A\cap B)/P(A) P(BA)=P(AB)/P(A),在古典概型下,我们定义如下的Python函数:

def condP(A, B):                #事件B发生的条件下A的概率    return len(A & B) / len(B)

程序中定义的函数condP(A,B)只适合于计算古典概型中的条件概率 P ( A ∣ B ) P(A|B) P(AB)。代码很简单,为求条件概率 P ( A ∣ B ) P(A|B) P(AB),按计算公式需要计算 P ( A ∩ B ) / P ( A ) P(A\cap B)/P(A) P(AB)/P(A),在古典概型下,无论是 P ( A ∩ B ) P(A\cap B) P(AB)还是 P ( A ) P(A) P(A),都是用事件所含样本点数 ∣ A ∩ B ∣ |A\cap B| AB ∣ A ∣ |A| A除以样本空间的样本点数 ∣ S ∣ |S| S,即 P ( A ∣ B ) = P ( A ∩ B ) / P ( A ) = ∣ A ∩ B ∣ / ∣ S ∣ ∣ A ∣ / ∣ S ∣ = ∣ A ∩ B ∣ ∣ A ∣ P(A|B)=P(A\cap B)/P(A)=\frac{|A\cap B|/|S|}{|A|/|S|}=\frac{|A\cap B|}{|A|} P(AB)=P(AB)/P(A)=A/SAB/S=AAB。函数condP,就是按此结论,返回len(A&B)/ len(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#导入permutationsS=set(permutations(range(1,5),2))   							#1,2,3为一等品,4为二等品A = setEvent(S, lambda a: a[0] <= 3)							#设置事件A:“第1次取得一等品”B = setEvent(S, lambda a: a[1] <= 3)							#设置事件B:“第2次取得一等品”p = condP(B, A)print('P(B|A)=%s' % p)

程序的第2行调用permutations函数(第1行导入)设置本试验的样本空间S。第3、4行调用函数setEvent(),设置事件A:“第一次取得一等品”和B:“第2次取得一等品”。第9行调用前面定义的函数condP,计算条件概率P(B|A)。运行程序,输出

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#导入permutationsS=set(permutations(range(1,11),2))      						#1~8为一等品,9,10为二等品A1=setEvent(S, lambda a: a[0]<=8)       						#事件A1A2=setEvent(S, lambda a: a[1]<=8)       						#事件A2A1_=S-A1                                						#A1的对立事件Ā1A2_=S-A2                                						#A2的对立事件Ā2p1=P(A1, S)*condP(A2, A1)               						#P(A1*A2)p2=P(A1_, S)*condP(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/45P(A1_*A2_)=1/45P(A1*A2_+A1_*A2)=16/45P(A2_)=1/5

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

转载地址:http://zhpmz.baihongyu.com/

你可能感兴趣的文章
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql -存储过程
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>