概率统计Python计算:离散型自定义分布数学期望的计算(二)

在这里插入图片描述
对于联合分布律为
在这里插入图片描述
的2-维离散型随机向量 ( X , Y ) (X,Y) (X,Y),其函数 g ( X , Y ) g(X,Y) g(X,Y)的数学期望 E ( g ( X , Y ) ) = ∑ i = 1 m ∑ j = 1 n g ( x i , y j ) p i j E(g(X,Y))=\sum\limits_{i=1}^m\sum\limits_{j=1}^ng(x_i,y_j)p_{ij} E(g(X,Y))=i=1mj=1ng(xi,yj)pij是2-维数组 ( g ( x 1 , y 1 ) g ( x 1 , y 2 ) ⋯ g ( x 1 , y n ) g ( x 2 , y 1 ) g ( x 2 , y 2 ) ⋯ g ( x 2 , y n ) ⋮ ⋮ ⋯ ⋮ g ( x m , y 1 ) g ( x m , y 2 ) ⋯ g ( x m , y n ) ) \begin{pmatrix}g(x_1,y_1)&g(x_1,y_2)&\cdots&g(x_1,y_n)\\g(x_2,y_1)&g(x_2,y_2)&\cdots&g(x_2,y_n)\\\vdots&\vdots&\cdots&\vdots\\g(x_m,y_1)&g(x_m,y_2)&\cdots&g(x_m,y_n)\end{pmatrix} g(x1,y1)g(x2,y1)g(xm,y1)g(x1,y2)g(x2,y2)g(xm,y2)g(x1,yn)g(x2,yn)g(xm,yn) ( p 11 p 12 ⋯ p 1 n p 21 p 22 ⋯ p 2 n ⋮ ⋮ ⋯ ⋮ p m 1 p m 2 ⋯ p m 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} p11p21pm1p12p22pm2p1np2npmn 按元素相乘所得2-维数组 ( g ( x 1 , y 1 ) p 11 g ( x 1 , y 2 ) p 12 ⋯ g ( x 1 , y n ) p 1 n g ( x 2 , y 1 ) p 21 g ( x 2 , y 2 ) p 22 ⋯ g ( x 2 , y n ) p 2 n ⋮ ⋮ ⋯ ⋮ g ( x m , y 1 ) p m 1 g ( x m , y 2 ) p m 2 ⋯ g ( x m , y n ) p m n ) \begin{pmatrix}g(x_1,y_1)p_{11}&g(x_1,y_2)p_{12}&\cdots&g(x_1,y_n)p_{1n}\\g(x_2,y_1)p_{21}&g(x_2,y_2)p_{22}&\cdots&g(x_2,y_n)p_{2n}\\\vdots&\vdots&\cdots&\vdots\\g(x_m,y_1)p_{m1}&g(x_m,y_2)p_{m2}&\cdots&g(x_m,y_n)p_{mn}\end{pmatrix} g(x1,y1)p11g(x2,y1)p21g(xm,y1)pm1g(x1,y2)p12g(x2,y2)p22g(xm,y2)pm2g(x1,yn)p1ng(x2,yn)p2ng(xm,yn)pmn 的元素之和。
将上述计算方法写成计算数学期望的函数

def expect(P, Xv=None, Yv=None, func=lambda x, y: x):
    stru=P.shape                                #获取P的结构
    arrayType=type(np.array([]))                #数组类型
    if (len(stru)>1) and (type(Xv)==arrayType): #2维向量且需计算X
        Xv=Xv.reshape(Xv.size,1)
    if type(Yv)==arrayType:                     #2维向量且需计算Y
        Yv=Yv.reshape(1, Yv.size)
    mean=(func(Xv,Yv)*P).sum()                  #计算期望
    return mean

函数expect的4个参数中P表示分布律中的概率序列。Xv和Yv分别表示随机变量 X X X Y Y Y的取值序列,缺省为None。func表示函数关系 Z = g ( X , Y ) Z=g(X,Y) Z=g(X,Y),缺省值为函数 g ( X , Y ) = X g(X,Y)=X g(X,Y)=X。第2行读取表示概率序列的数组P的结构,P.shape是一个元组,其长度大于1表示P是一个矩阵。第3行获取numpy的数组类型,记为arrayType,若参数Xv或Yv传递的是数组,则其类型type(Xv)(或type(Yv))就与arrayType一致。第4~5行的if语句对2-维随机向量(len(stru)>1)且需计算 X X X期望(type(Xv)==arrayType)的情形,将Xv设置成 m × 1 m\times1 m×1的列向量,以保证矩阵按元素计算的正确性。出于同样的目的,第6~7行的if语句对需要计算 Y Y Y的期望(此时,P一定是2-维数组),将Yv设置成 1 × n 1\times n 1×n的行向量。第8行将数组func(Xv,Yv)*P元素之和(func(Xv,Yv)*P).sum()记为返回值mean。第9行将计算结果返回。
例1 ( X , Y ) (X, Y) (X,Y)的联合分布律为
在这里插入图片描述
计算 E ( X ) E(X) E(X) E ( Y ) E(Y) E(Y) E ( X 3 Y 2 ) E(X^3Y^2) E(X3Y2)
解: 为计算 E ( X ) E(X) E(X) E ( Y ) E(Y) E(Y),先计算 X X X Y Y Y的边缘分布。不难解得 X X X~ ( 0 1 5 8 3 8 ) \begin{pmatrix}0&1\\\frac{5}{8}&\frac{3}{8}\end{pmatrix} (085183) Y Y Y~ ( 1 2 3 3 8 2 8 3 8 ) \begin{pmatrix}1&2&3\\\frac{3}{8}&\frac{2}{8}&\frac{3}{8}\end{pmatrix} (183282383)。所以
E ( X ) = 0 × 5 8 + 1 × 3 8 = 3 8 E(X)=0\times\frac{5}{8}+1\times\frac{3}{8}=\frac{3}{8} E(X)=0×85+1×83=83,
E ( Y ) = 1 × 3 8 + 2 × 2 8 + 3 × 3 8 = 2 E(Y)=1\times\frac{3}{8}+2\times\frac{2}{8}+3\times\frac{3}{8}=2 E(Y)=1×83+2×82+3×83=2
为计算 E ( X 3 Y 2 ) E(X^3Y^2) E(X3Y2),可以运用先计算 Z = X 3 Y 2 Z=X^3Y^2 Z=X3Y2的分布律,然后计算 E ( Z ) E(Z) E(Z)。根据 ( X , Y ) (X,Y) (X,Y)的联合分布律,不难算得 Z Z Z~ ( 0 1 4 9 5 4 1 8 1 8 1 8 ) \begin{pmatrix}0&1&4&9\\\frac{5}{4}&\frac{1}{8}&\frac{1}{8}&\frac{1}{8}\end{pmatrix} (045181481981)。于是 E ( X 3 Y 2 ) = E ( Z ) = 0 × 5 4 + 1 × 1 8 + 4 × 1 8 + 9 × 1 8 = 7 4 E(X^3Y^2)=E(Z)=0\times\frac{5}{4}+1\times\frac{1}{8}+4\times\frac{1}{8}+9\times\frac{1}{8}=\frac{7}{4} E(X3Y2)=E(Z)=0×45+1×81+4×81+9×81=47。下列代码验算本例计算结果。

import numpy as np                      #导入numpy
from sympy import Rational as R         #导入Rational
X=np.array([0, 1])                      #设置X取值
Y=np.array([1, 2, 3])                   #设置Y取值
Pxy=np.array([[R(1,4), R(1,8), R(1,4)], #设置分布律中概率矩阵
              [R(1,8), R(1,8), R(1,8)]])
meanx=expect(Pxy, X)                    #计算E(X)
g=lambda x, y: y                        #设置函数g(X,Y)=Y
meany=expect(Pxy, Yv=Y, Py)             #计算E(Y)
g=lambda x, y: (x**3)*(y**2)            #设置函数g(X, Y)=X^3Y^2
mean=expect(Pxy, X, Y, g)               #计算E(X^3Y^2)
print('E(X)=%s'%meanx)
print('E(Y)=%sf'%meany)
print('E(X^3Y^2)=%s'%mean)

程序中第3~6行设置 ( X , Y ) (X,Y) (X,Y)的联合分布律。第7行调用函数expect,传递参数Pxy和X计算 X X X的边缘分布的期望 E ( X ) E(X) E(X),记为meanx。为计算 Y Y Y的边缘分布期望 E ( Y ) E(Y) E(Y),第8行设置函数 g ( X , Y ) = Y g(X,Y)=Y g(X,Y)=Y,第9行调用函数expect传递参数Pxy,Y和g,计算结果记为meany。第10行定义函数 g ( x , y ) = x 3 y 2 g(x,y)=x^3y^2 g(x,y)=x3y2,第11行调用函数expect传递参数Pxy,X,Y和g计算 E ( X 3 Y 2 ) E(X^3Y^2) E(X3Y2),记为mean。运行程序,输出

E(X)=3/8
E(Y)=2
E(X^3Y^2)=7/4

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值