计算2-维离散型随机向量
(
X
,
Y
)
(X,Y)
(X,Y)的条件分布律,譬如
P
(
X
∣
Y
=
y
j
)
P(X|Y=y_j)
P(X∣Y=yj),就是用
Y
Y
Y的边缘分布中的
P
(
Y
=
y
j
)
=
p
⋅
j
P(Y=y_j)=p_{\cdot j}
P(Y=yj)=p⋅j遍除联合分布律中第
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/p⋅jp2j/p⋅j⋮pmj/p⋅j
,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/p⋅1p21/p⋅1⋮pm1/p⋅1p12/p⋅2p22/p⋅2⋮pm2/p⋅2⋯⋯⋯⋯p1n/p⋅np2n/p⋅n⋮pmn/p⋅n
表示出了所有已知
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}
p11p21⋮pm1p12p22⋮pm2⋯⋯⋯⋯p1np2n⋮pmn
/(p⋅1p⋅2⋯p⋅n)=
p11/p⋅1p21/p⋅1⋮pm1/p⋅1p12/p⋅2p22/p⋅2⋮pm2/p⋅2⋯⋯⋯⋯p1n/p⋅np2n/p⋅n⋮pmn/p⋅n
这恰与我们根据联合分布律与
Y
Y
Y的边缘分布律计算条件分布
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y)的方式不谋而合。我们将上述计算而得的表示
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y)的矩阵记为
P
X
∣
Y
P_{X|Y}
PX∣Y。而表示
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)的矩阵
P
Y
∣
X
P_{Y|X}
PY∣X是用行向量
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(X∣Y)和
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)。
例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
X∣Y=1和
Y
∣
X
=
0
Y|X=0
Y∣X=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(X∣Y)和 P ( Y ∣ X ) P(Y|X) P(Y∣X),存储于Px_y和Py_x。其第1列数据Px_y[:,0]和第2行数据Py_x[1]恰为条件分布 P ( X ∣ Y = 0 ) P(X|Y=0) P(X∣Y=0)和 P ( Y ∣ X = 1 ) P(Y|X=1) P(Y∣X=1)的概率。运行此程序,将输出
P(X|Y=0):[1/2 1/2]
P(Y|X=1):[3/4 1/4]
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》