本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-07(11)

2020-08(42)

概率统计Python计算(30)连续型自定义分布数学期望的计算

发布于2021-05-18 20:35     阅读(274)     评论(0)     点赞(18)     收藏(5)



对自定义的连续型随机变量,设其概率密度函数为 f ( x ) f(x) f(x),我们定义计算函数 g ( X ) g(X) g(X)的数学期望 E ( g ( X ) ) E(g(X)) E(g(X))的Python函数如下。

from scipy.integrate import quad            #导入quad
def expectcont(pdf, func=lambda x:x):       #pdf为密度,func为随机变量函数
    xf=lambda x:pdf(x)*func(x)              #被积函数
    mean, _=quad(xf, -np.infty, np.infty)   #计算积分
    return mean

函数expectcont的两个参数pdf和func分别表示随机变量 X X X的概率密度函数 f ( x ) f(x) f(x)和随机变量函数 Y = g ( X ) Y=g(X) Y=g(X)。其中,func的缺省值为函数 g ( X ) = X g(X)=X g(X)=X。第3行定义被积函数 g ( x ) f ( x ) g(x)f(x) g(x)f(x),记为xf。第4行调用scipy.integrate的quad函数(第1行导入),计算 E ( g ( X ) ) = ∫ − ∞ + ∞ g ( x ) f ( x ) d x E(g(X))=\int_{-\infty}^{+\infty}g(x)f(x)dx E(g(X))=+g(x)f(x)dx
例1 设在某一规定的时间间隔内,某电气设备用于最大负荷的时间 X X X(以min计)是一个随机变量。其密度函数为
f ( x ) = { x 150 0 2 0 ≤ x ≤ 1500 3000 − x 150 0 2 1500 < x ≤ 3000 0 其他 {f(x)=}

{x150020x15003000x150021500<x30000其他
f(x)=15002x150023000x00x15001500<x3000其他
计算 E ( X ) E(X) E(X)
解: 按定义
E ( X ) = ∫ − ∞ + ∞ x f ( x ) d x = ∫ 0 3000 x f ( x ) d x = ∫ 0 1500 x 2 150 0 2 d x + ∫ 1500 3000 x ( 3000 − x ) 150 0 2 d x = 1 150 0 2 ⋅ x 3 3 ∣ 0 1500 + 1 150 0 2 ( 3000 ⋅ x 2 2 − x 3 3 ) ∣ 1500 3000 = 1500. E(X)=\int_{-\infty}^{+\infty}xf(x)dx=\int_0^{3000}xf(x)dx\\ =\int_{0}^{1500}\frac{x^2}{1500^2}dx+\int_{1500}^{3000}\frac{x(3000-x)}{1500^2}dx\\ =\frac{1}{1500^2}\cdot\frac{x^3}{3}\bigg|_0^{1500}+\frac{1}{1500^2}\left(3000\cdot\frac{x^2}{2}-\frac{x^3}{3}\right)\bigg|_{1500}^{3000}=1500. E(X)=+xf(x)dx=03000xf(x)dx=0150015002x2dx+1500300015002x(3000x)dx=1500213x301500+150021(30002x23x3)15003000=1500.
下列代码完成 E ( X ) E(X) E(X)的Python计算。

f=lambda x: x/1500**2 if (x>=0)&(x<=1500) else\ #定义密度函数
            (3000-x)/1500**2 if (x>1500)&(x<=3000) else\
            0
mean=expectcont(pdf=f)                          #计算E(X)
print('E(X)=%.1f'%mean)

程序的第1~3行定义 X X X的密度函数 f ( x ) f(x) f(x),第5行调用上列程序定义的函数expectcont,计算 E ( X ) E(X) E(X)。注意,仅将f传递给参数pdf,func参数使用其缺省值。运行程序,输出

E(X)=1500.0

下列代码定义计算2-维连续型随机向量 ( X , Y ) (X, Y) (X,Y)的函数 Z = g ( X , Y ) Z=g(X,Y) Z=g(X,Y)的数学期望 E ( g ( X , Y ) E(g(X,Y) E(g(X,Y)的Python函数。

from scipy.integrate import dblquad         #导入dblquad
def expectcont2(pdf, func):              	#pdf为密度函数func为随机向量函数
    gf=lambda y, x:pdf(y, x)*func(y, x)     #g(x,y)f(x,y)
    mean, _=dblquad(gf, -np.infty, np.infty,#计算E(g(X,Y))
                        -np.infty, np.infty)
    return mean

计算2-维连续型随机向量 ( X , Y ) (X,Y) (X,Y)的函数 Z = g ( X , Y ) Z=g(X,Y) Z=g(X,Y)的数学期望 E ( g ( X , Y ) ) E(g(X,Y)) E(g(X,Y))的Python函数expectcont2的两个参数pdf表示联合密度函数 f ( x , y ) f(x,y) f(x,y),func表示随机向量函数 g ( X , Y ) g(X,Y) g(X,Y)。第3行设置被积函数 g ( x , y ) f ( x , y ) g(x,y)f(x,y) g(x,y)f(x,y),记为gf。注意,作为被积函数,自变量的书写顺序需与积分顺序保持一致:先y后x。第4~5行调用scipy.integrate.dblquad(第1行导入)计算 E ( g ( X , Y ) ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ g ( x , y ) f ( x , y ) d x d y E(g(X,Y))=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}g(x,y)f(x,y)dxdy E(g(X,Y))=++g(x,y)f(x,y)dxdy
例1 设随机向量 ( X , Y ) (X, Y) (X,Y)的联合密度函数为 f ( x , y ) = { 3 2 x 3 y 2 1 x < y < x , x > 1 0 其他 f(x, y)=

{32x3y21x<y<x,x>10其他
f(x,y)={2x3y230x1<y<x,x>1其他,计算 E ( Y ) E(Y) E(Y) E ( 1 X Y ) E\left(\frac{1}{XY}\right) E(XY1)
解: 考虑 ( X , Y ) (X, Y) (X,Y)的联合密度函数 f ( x , y ) f(x, y) f(x,y)的非零区域(如下图所示)。
在这里插入图片描述
E ( Y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ y f ( x , y ) d y d x = ∫ 1 + ∞ ( ∫ 1 / x x 3 y 2 x 3 y 2 d y ) d x = ∫ 1 + ∞ ( 3 2 x 3 ∫ 1 / x x 1 y d y ) d x = ∫ 1 + ∞ ( 3 2 x 3 [ ln ⁡ y ] 1 / x x ) d x = 3 ∫ 1 + ∞ ln ⁡ x x 3 d x = − 3 2 ∫ 1 + ∞ ln ⁡ x d ( 1 x 2 ) = [ − 3 2 ln ⁡ x x 2 ] 1 + ∞ + 3 2 ∫ 1 + ∞ 1 x 3 d x = 3 4 . E(Y)=\int\limits_{-\infty}^{+\infty}\int\limits_{-\infty}^{+\infty}yf(x, y)dydx=\int\limits_{1}^{+\infty}\left(\int\limits_{1/x}^{x}\frac{3y}{2x^3y^2}dy\right)dx=\int\limits_{1}^{+\infty}\left(\frac{3}{2x^3}\int\limits_{1/x}^{x}\frac{1}{y}dy\right)dx\\ =\int\limits_{1}^{+\infty}\left(\frac{3}{2x^3}\left[\ln y\right]_{1/x}^{x}\right)dx =3\int\limits_{1}^{+\infty}\frac{\ln x}{x^3}dx=-\frac{3}{2}\int\limits_{1}^{+\infty}\ln xd\left(\frac{1}{x^2}\right)\\ =\left[-\frac{3}{2}\frac{\ln x}{x^2}\right]_{1}^{+\infty}+\frac{3}{2}\int\limits_{1}^{+\infty}\frac{1}{x^3}dx=\frac{3}{4}. E(Y)=++yf(x,y)dydx=1+1/xx2x3y23ydydx=1+2x331/xxy1dydx=1+(2x33[lny]1/xx)dx=31+x3lnxdx=231+lnxd(x21)=[23x2lnx]1++231+x31dx=43.
E ( 1 X Y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ 1 x y f ( x , y ) d y d x = ∫ 1 + ∞ ∫ 1 / x x 1 x y 3 2 x 3 y 2 d y d x = ∫ 1 + ∞ ∫ 1 / x x 3 2 x 4 y 3 d y d x = 3 2 ∫ 1 + ∞ 1 x 4 ( ∫ 1 / x x 1 y 3 d y ) d x = 3 4 ∫ 1 + ∞ x 4 − 1 x 6 d x = 3 4 ( ∫ 1 + ∞ 1 x 2 d x − ∫ 1 + ∞ 1 x 6 d x ) = 3 5 . E\left(\frac{1}{XY}\right)=\int\limits_{-\infty}^{+\infty}\int\limits_{-\infty}^{+\infty}\frac{1}{xy}f(x, y)dydx=\int\limits_{1}^{+\infty}\int\limits_{1/x}^{x}\frac{1}{xy}\frac{3}{2x^3y^2}dydx\\ =\int\limits_{1}^{+\infty}\int\limits_{1/x}^{x}\frac{3}{2x^4y^3}dydx=\frac{3}{2}\int\limits_{1}^{+\infty}\frac{1}{x^4}\left(\int\limits_{1/x}^{x}\frac{1}{y^3}dy\right)dx\\ =\frac{3}{4}\int\limits_{1}^{+\infty}\frac{x^4-1}{x^6}dx=\frac{3}{4}\left(\int\limits_{1}^{+\infty}\frac{1}{x^2}dx-\int\limits_{1}^{+\infty}\frac{1}{x^6}dx\right)=\frac{3}{5}. E(XY1)=++xy1f(x,y)dydx=1+1/xxxy12x3y23dydx=1+1/xx2x4y33dydx=231+x411/xxy31dydx=431+x6x41dx=431+x21dx1+x61dx=53.
下列代码验算本例计算结果。

from utility import expectcont2                  #导入expectOfxycont
f=lambda y, x: 3/(2*x**3*y**2)\                  #定义联合密度函数
    if (x>1) & (y<x) & (y>1/x)\
    else 0
mean=expectcont2(pdf=f, func=lambda y, x: y)     #计算E(Y)
print('E(Y)=%.2f'%mean)
mean=expectcont2(pdf=f, func=lambda y, x: 1/x/y) #计算E(1/XY)
print('E(1/XY)=%.2f'%mean)

程序的第2~4行定义 ( X , Y ) (X, Y) (X,Y)的联合密度函数 f ( x , y ) f(x, y) f(x,y),需要注意的是,参数书写顺序应与积分顺序一致:先y后x。第5行调用函数expectcont2计算 E ( Y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ y f ( x , y ) d x d y E(Y)=\int\limits_{-\infty}^{+\infty}\int\limits_{-\infty}^{+\infty}yf(x,y)dxdy E(Y)=++yf(x,y)dxdy。传递给func的是函数 g ( x , y ) = y g(x,y)=y g(x,y)=y。第7行调用expectcont2函数计算 E ( 1 X Y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ 1 x y f ( x , y ) d x d y E\left(\frac{1}{XY}\right)=\int\limits_{-\infty}^{+\infty}\int\limits_{-\infty}^{+\infty}\frac{1}{xy}f(x,y)dxdy E(XY1)=++xy1f(x,y)dxdy,传递给参数func的是 g ( X , Y ) = 1 X Y g(X, Y)=\frac{1}{XY} g(X,Y)=XY1。运行程序,输出

E(Y)=0.75
E(1/XY)=0.60

此恰为 E ( Y ) = 3 / 4 E(Y)=3/4 E(Y)=3/4 E ( 1 X Y ) = 3 / 5 E(\frac{1}{XY})=3/5 E(XY1)=3/5精确到百分位的值。

原文链接:https://blog.csdn.net/u012958850/article/details/116701025






所属网站分类: 技术文章 > 博客

作者:python好学吗

链接:https://www.pythonheidong.com/blog/article/970328/2abf914cfc1fe5842426/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)