概率统计Python计算:离散型随机向量条件分布计算

在这里插入图片描述
计算2-维离散型随机向量 ( X , Y ) (X,Y) (X,Y)的条件分布律,譬如 P ( X ∣ Y = y j ) P(X|Y=y_j) P(XY=yj),就是用 Y Y Y的边缘分布中的 P ( Y = y j ) = p ⋅ j P(Y=y_j)=p_{\cdot j} P(Y=yj)=pj遍除联合分布律中第 j j j列中每个元素 p i j p_{ij} pij i = 1 , 2 , ⋯ n i=1, 2, \cdots n i=1,2,n。即 ( p 1 j / p ⋅ j p 2 j / p ⋅ j ⋮ p m j / p ⋅ j ) , j = 1 , 2 , ⋯   , n \begin{pmatrix} p_{1j}/p_{\cdot j}\\p_{2j}/p_{\cdot j}\\\vdots\\p_{mj}/p_{\cdot j}\end{pmatrix}, j=1, 2, \cdots, n p1j/pjp2j/pjpmj/pj ,j=1,2,,n
也就是说,矩阵
( p 11 / p ⋅ 1 p 12 / p ⋅ 2 ⋯ p 1 n / p ⋅ n p 21 / p ⋅ 1 p 22 / p ⋅ 2 ⋯ p 2 n / p ⋅ n ⋮ ⋮ ⋯ ⋮ p m 1 / p ⋅ 1 p m 2 / p ⋅ 2 ⋯ p m n / p ⋅ n ) \begin{pmatrix} p_{11}/p_{\cdot1}&p_{12}/p_{\cdot2}&\cdots&p_{1n}/p_{\cdot n}\\ p_{21}/p_{\cdot1}&p_{22}/p_{\cdot2}&\cdots&p_{2n}/p_{\cdot n}\\ \vdots&\vdots&\cdots&\vdots\\ p_{m1}/p_{\cdot1}&p_{m2}/p_{\cdot2}&\cdots&p_{mn}/p_{\cdot n} \end{pmatrix} p11/p1p21/p1pm1/p1p12/p2p22/p2pm2/p2p1n/pnp2n/pnpmn/pn
表示出了所有已知 Y Y Y取一值, X X X的条件分布。幸运的是,numpy的 array类对象表示的一个 m × n m\times n m×n的矩阵 A A A与一个具有同结构的矩阵,或具有 m m m个元素的列向量或具有 n n n个元素的行向量 B B B支持包括“+”、“-”、“*”、“/”等的按元素运算。例如,
( p 11 p 12 ⋯ p 1 n p 21 p 22 ⋯ p 2 n ⋮ ⋮ ⋯ ⋮ p m 1 p m 2 ⋯ p m n ) / ( p ⋅ 1 p ⋅ 2 ⋯ p ⋅ n ) = ( p 11 / p ⋅ 1 p 12 / p ⋅ 2 ⋯ p 1 n / p ⋅ n p 21 / p ⋅ 1 p 22 / p ⋅ 2 ⋯ p 2 n / p ⋅ n ⋮ ⋮ ⋯ ⋮ p m 1 / p ⋅ 1 p m 2 / p ⋅ 2 ⋯ p m n / p ⋅ n ) \begin{pmatrix} p_{11}&p_{12}&\cdots&p_{1n}\\ p_{21}&p_{22}&\cdots&p_{2n}\\ \vdots&\vdots&\cdots&\vdots\\ p_{m1}&p_{m2}&\cdots&p_{mn} \end{pmatrix}/ \begin{pmatrix} p_{\cdot1}&p_{\cdot2}&\cdots&p_{\cdot n}\end{pmatrix}=\begin{pmatrix} p_{11}/p_{\cdot1}&p_{12}/p_{\cdot2}&\cdots&p_{1n}/p_{\cdot n}\\ p_{21}/p_{\cdot1}&p_{22}/p_{\cdot2}&\cdots&p_{2n}/p_{\cdot n}\\ \vdots&\vdots&\cdots&\vdots\\ p_{m1}/p_{\cdot1}&p_{m2}/p_{\cdot2}&\cdots&p_{mn}/p_{\cdot n} \end{pmatrix} p11p21pm1p12p22pm2p1np2npmn /(p1p2pn)= p11/p1p21/p1pm1/p1p12/p2p22/p2pm2/p2p1n/pnp2n/pnpmn/pn
这恰与我们根据联合分布律与 Y Y Y的边缘分布律计算条件分布 P ( X ∣ Y ) P(X|Y) P(XY)的方式不谋而合。我们将上述计算而得的表示 P ( X ∣ Y ) P(X|Y) P(XY)的矩阵记为 P X ∣ Y P_{X|Y} PXY。而表示 P ( Y ∣ X ) P(Y|X) P(YX)的矩阵 P Y ∣ X P_{Y|X} PYX是用行向量 P X P_X PX中的每个元素,遍除 P X Y P_{XY} PXY中的每一列。
利用numpy的array类的这一技术,我们定义如下的计算2-维离散型随机向量的条件分布的Python函数。

def condDist(Pxy):                          #定义计算条件分布的函数
    Px, Py=margDist(Pxy)                    #计算边缘分布
    Px_y=Pxy/Py                             #计算P(X|Y)
    Px_y=Pxy/Px                             #计算P(Y|X)
    return Px_y, Py_x

函数condDist的参数Pxy是 ( X , Y ) (X, Y) (X,Y)的联合分布律中的概率值矩阵。第3行调用博文《离散型2-维随机向量的联合分布律及边缘分布》中定义的计算边缘分布的函数margDist(Pxy),计算 X X X Y Y Y的边缘分布律的概率值序列,存于Px(行向量),Py(列向量)。第4行、第5行分别计算 P ( X ∣ Y ) P(X|Y) P(XY) P ( Y ∣ X ) P(Y|X) P(YX)
例1 从含有3个正品,2个次品的5个产品中依次无放回地抽取两个。设 X X X表示第1次取到的次品个数, Y Y Y表示第2次取到的次品个数。则 ( X , Y ) (X, Y) (X,Y)的联合分布律的概率矩阵为 P X Y = ( 3 10 3 10 3 10 1 10 ) P_{XY}=\begin{pmatrix}\frac{3}{10}&\frac{3}{10}\\\frac{3}{10}&\frac{1}{10}\end{pmatrix} PXY=(103103103101),且由此算得 X X X Y Y Y的边缘分布律的概率序列分别为 P X = ( 3 5 2 5 ) P_X=\begin{pmatrix}\frac{3}{5}\\\frac{2}{5}\end{pmatrix} PX=(5352) P Y = ( 3 5 , 2 5 ) P_Y=(\frac{3}{5},\frac{2}{5}) PY=(53,52)。于是 X ∣ Y = 1 X|Y=1 XY=1 Y ∣ X = 0 Y|X=0 YX=0的分布律概率序列分别为 ( 3 4 1 4 ) \begin{pmatrix}\frac{3}{4}\\\frac{1}{4}\end{pmatrix} (4341) ( 1 2 , 1 2 ) \left(\frac{1}{2},\frac{1}{2}\right) (21,21)。利用函数condDist,下列代码验算本例。

import numpy as np                  #导入numpy
from sympy import Rational as R     #导入Rational
Pxy=np.array([[R(3,10), R(3,10)],   #创建联合分布律Pxy
             [R(3,10), R(1,10)]])
Px_y, Py_x=condDist(Pxy)            #计算条件分布律
print('P(X|Y=0):%s'%Px_y[:,0])    	#输出Px|y=0
print('P(Y|X=1):%s'%Py_x[1])      	#输出Py|x=1

程序的第6行调用上列程序定义的计算条件分布的函数condDist(Pxy),计算由Pxy表示的联合分布律的2-维离散型随机向量 ( X , Y ) (X, Y) (X,Y)的条件分布律 P ( X ∣ Y ) P(X|Y) P(XY) P ( Y ∣ X ) P(Y|X) P(YX),存储于Px_y和Py_x。其第1列数据Px_y[:,0]和第2行数据Py_x[1]恰为条件分布 P ( X ∣ Y = 0 ) P(X|Y=0) P(XY=0) P ( Y ∣ X = 1 ) P(Y|X=1) P(YX=1)的概率。运行此程序,将输出

P(X|Y=0):[1/2 1/2]
P(Y|X=1):[3/4 1/4]

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值