我们知道Python的scipy.stats包提供了大量的经典分布(如0-1分布、二项分布、泊松分布,均匀分布,指数分布,正态分布……等等),这些经典分布对象拥有计算数学期望的expect函数,该函数常见分布的调用接口如下表所列。
分布 | 调用接口 | 参数 |
---|---|---|
bernoulli(0-1分布) | expect(func, args=(p,)) | func:随机变量函数,缺省值为x;args:传递分布参数p |
binom(二项分布) | expect(func, args=(n, p)) | func与上同,args:传递分布参数(n,p) |
poisson(泊松分布) | expect(func, args=(mu,)) | func与上同,args:传递分布参数 λ \lambda λ |
uniform(均匀分布) | expect(func, loc=0, scale=1) | func与上同,loc:传递分布参数 a a a,缺省值为0,scale:传递 b − a b-a b−a,缺省值为1 |
expon(指数分布) | expect(func, scale=1) | func与上同,scale:传递分布参数 λ \lambda λ,缺省值为1 |
norm(正态分布) | expect(func, loc=0, scale=1) | func与上同,loc:传递分布参数 μ \mu μ,缺省值为0,scale:传递分布参数 σ \sigma σ,缺省值为1 |
例1 某城市一天内发生严重刑事案件数
X
X
X服从参数为
1
3
\frac{1}{3}
31的泊松分布。记
Y
Y
Y表示一年(365天)内未发生严重刑事案件的天数,计算
E
(
Y
)
E(Y)
E(Y)。
解:。由于一天中发生严重刑事案件数
X
X
X~
E
x
p
(
1
3
)
Exp(\frac{1}{3})
Exp(31),所以一天中无刑事案件发生的概率
p
=
P
(
X
=
0
)
=
e
−
1
3
p=P(X=0)=e^{-\frac{1}{3}}
p=P(X=0)=e−31。一年中无刑事案件发生的天数
Y
Y
Y~
b
(
365
,
p
)
b(365, p)
b(365,p),所以
E
(
Y
)
=
365
p
E(Y)=365p
E(Y)=365p。用下列代码即可算得
E
(
Y
)
E(Y)
E(Y)
from scipy.stats import poisson, binom #导入poisson和binom
p=poisson.pmf(k=0, mu=1/3) #计算p=P(X=0)
n=365 #设置一年天数n
mean=binom.expect(args=(n, p)) #计算Y~b(n, p)的数学期望
print('E(Y)=%.2f'%mean)
注意程序中第4行调用二项分布 b ( 365 , p ) b(365, p) b(365,p)对象binorm的expect函数计算 Y Y Y的数学期望。该函数中命名参数args需传递二项分布的两个参数 n n n和 p p p。运行程序,输出计算结果
E(Y)=261.53
scipy.stats包中提供的各经典分布的expect函数,均有命名参数func,其默认值为恒等函数
f
(
x
)
=
x
f(x)=x
f(x)=x。传递不同的函数,即可计算变量函数的期望。
例2 设电压
X
X
X~
N
(
0
,
9
)
N(0, 9)
N(0,9),将电压施加于一检波器,其输出电压为
Y
=
5
X
2
Y=5X^2
Y=5X2,计算输出电压
Y
Y
Y的均值。
解:本题就是在
X
X
X~
N
(
0
,
9
)
N(0, 9)
N(0,9),
Y
=
g
(
X
)
=
5
X
2
Y=g(X)=5X^2
Y=g(X)=5X2的假设下,计算
E
(
Y
)
E(Y)
E(Y)。下列代码完成计算。
from scipy.stats import norm #导入norm
g=lambda x: 5*x**2 #设置函数Y=g(X)=5X^2
mean=norm.expect(func=g, loc=0, scale=3) #计算E(Y)
print('E(5X^2)=%.2f'%mean)
程序的第3行调用表示正态分布 N ( 0 , 9 ) N(0,9) N(0,9)norm对象的函数expect,传递给参数func的函数g定义在第2行,即 g ( X ) = 5 X 2 g(X)=5X^2 g(X)=5X2。参数loc为0,scale为3。运行程序,输出
E(5X^2)=45.00
对于构成随机向量
(
X
,
Y
)
(X, Y)
(X,Y)的两个随机变量
X
X
X和
Y
Y
Y,若均服从经典分布且相互独立,则
(
X
,
Y
)
(X, Y)
(X,Y)的函数
Z
=
X
Y
Z=XY
Z=XY的期望也可以直接调用各自的expect函数加以计算。
例3 设随机变量
X
X
X~
E
x
p
(
1
/
2
)
Exp(1/2)
Exp(1/2),
Y
Y
Y~
E
x
p
(
1
/
4
)
Exp(1/4)
Exp(1/4),且
X
X
X和
Y
Y
Y相互独立,计算
E
(
X
Y
)
E(XY)
E(XY)。
解:由
X
X
X~
E
x
p
(
1
/
2
)
Exp(1/2)
Exp(1/2),
Y
Y
Y~
E
x
p
(
1
/
4
)
Exp(1/4)
Exp(1/4),由于
E
(
X
)
=
1
/
2
E(X)=1/2
E(X)=1/2,
E
(
Y
)
=
1
/
4
E(Y)=1/4
E(Y)=1/4。由
X
X
X与
Y
Y
Y相互独立,根据数学期望的性质知
E
(
X
Y
)
=
E
(
X
)
E
(
Y
)
=
1
/
8
E(XY)=E(X)E(Y)=1/8
E(XY)=E(X)E(Y)=1/8。下列代码验算
E
(
X
Y
)
E(XY)
E(XY)。
from scipy.stats import expon #导入expon
meanx=expon.expect(scale=1/2) #计算E(X)
meany=expon.expect(scale=1/4) #计算E(Y)
print('E(XY)=%.3f'%(meanx*meany)) #输出E(XY)
运行程序,输出
E(XY)=0.125
此即为
E
(
X
Y
)
=
1
/
8
E(XY)=1/8
E(XY)=1/8精确到千分位的值。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》