与数学期望计算相同,scipy.stats包中提供的经典分布对象都拥有函数var,计算服从该分布的随机变量的方差。常用分布的var函数调用接口如下表所列
分布 | 调用接口 | 参数 |
---|---|---|
bernoulli(0-1分布) | var( p) | p:分布参数 p p p |
binom(二项分布) | var(n, p) | n, p:分布参数 n n n与 p p p |
poisson(泊松分布) | var(mu) | mu:分布参数 λ \lambda λ |
uniform(均匀分布) | var(loc=0, scale=1) | loc:分布参数 a a a,缺省值为0,scale:分布参数 b − a b-a b−a缺省值为1 |
expon(指数分布) | var(scale=1) | scale:分布参数 λ \lambda λ,缺省值为1 |
norm(正态分布) | var(loc=0, scale=1) | loc:分布参数 μ \mu μ,缺省值为0,scale:分布参数 σ \sigma σ,缺省值为1 |
例1 设随机变量
X
X
X~
N
(
0
,
4
)
N(0, 4)
N(0,4),
Y
Y
Y~
U
(
0
,
4
)
U(0, 4)
U(0,4),且
X
X
X与
Y
Y
Y相互独立,计算
D
(
X
+
Y
)
D(X+Y)
D(X+Y)和
D
(
2
X
−
3
Y
)
D(2X-3Y)
D(2X−3Y)。
解: 由于
X
X
X~
N
(
0
,
4
)
N(0, 4)
N(0,4),
D
(
X
)
=
4
D(X)=4
D(X)=4。
Y
Y
Y~
U
(
0
,
4
)
U(0, 4)
U(0,4),故
D
(
Y
)
=
4
2
12
=
4
3
D(Y)=\frac{4^2}{12}=\frac{4}{3}
D(Y)=1242=34。又由于
X
X
X与
Y
Y
Y相互独立,故
D
(
X
+
Y
)
=
D
(
X
)
+
D
(
Y
)
=
4
+
4
/
3
=
16
/
3
D(X+Y)=D(X)+D(Y)=4+4/3=16/3
D(X+Y)=D(X)+D(Y)=4+4/3=16/3。同理,
D
(
2
X
−
3
Y
)
=
2
2
D
(
X
)
+
3
2
D
(
Y
)
=
28
D(2X-3Y)=2^2D(X)+3^2D(Y)=28
D(2X−3Y)=22D(X)+32D(Y)=28。下列代码验算本例计算结果。
from scipy.stats import norm, uniform #导入norm和uniform
Dx=norm.var(scale=2) #计算X的方差
Dy=uniform.var(scale=4) #计算Y的方差
print('D(X+Y)=%.4f'%(Dx+Dy)) #输出D(X+Y)
print('D(2X-3Y)=%.4f'%(4*Dx+9*Dy)) #输出D(2X-3Y)
本题中 X X X~ N ( 0 , 4 ) N(0,4) N(0,4), Y Y Y~ U ( 0 , 4 ) U(0,4) U(0,4),故第2、3两行分别调用norm的var函数和uniform的var函数计算方差 D ( X ) D(X) D(X)和 D ( Y ) D(Y) D(Y)。注意,根据上列表格中正态分布norm的var函数,参数loc表示 μ \mu μ(缺省值为0),参数scale表示 σ \sigma σ。而均匀分布uniform的var函数,参数loc表示 a a a(缺省值为0),scale表示 b − a b-a b−a。故只需各自传递给参数scale的正确值2和4。运行程序,输出
D(X+Y)=5.3333
D(2X-3Y)=28.0000
此即为
D
(
X
+
Y
)
=
16
/
3
D(X+Y)=16/3
D(X+Y)=16/3和
D
(
2
X
−
3
Y
)
=
28
D(2X-3Y)=28
D(2X−3Y)=28精确到万分位的值。
例2 设随机变量
X
1
X_1
X1~
N
(
0
,
1
)
N(0,1)
N(0,1),
X
2
X_2
X2~
b
(
10
,
0.2
)
b(10,0.2)
b(10,0.2),
X
3
X_3
X3~
π
(
4
)
\pi(4)
π(4)且
X
1
X_1
X1,
X
2
X_2
X2,
X
3
X_3
X3相互独立。计算
E
(
X
1
−
X
2
−
2
X
3
+
2
)
E(X_1-X_2-2X_3+2)
E(X1−X2−2X3+2),
D
(
X
1
−
X
2
−
2
X
3
+
2
)
D(X_1-X_2-2X_3+2)
D(X1−X2−2X3+2)。
解: 我们知道
E
(
X
1
)
=
0
E(X_1)=0
E(X1)=0,
D
(
X
1
)
=
1
D(X_1)=1
D(X1)=1,
E
(
X
2
)
=
2
E(X_2)=2
E(X2)=2,
D
(
X
2
)
=
1.6
D(X_2)=1.6
D(X2)=1.6,
E
(
X
3
)
=
D
(
X
3
)
=
4
E(X_3)=D(X_3)=4
E(X3)=D(X3)=4。故
E
(
X
1
−
X
2
−
2
X
3
+
2
)
=
E
(
X
1
)
−
E
(
X
2
)
−
2
E
(
X
3
)
+
2
=
0
−
2
−
2
⋅
4
+
2
=
−
8
,
D
(
X
1
−
X
2
−
2
X
3
+
2
)
=
D
(
X
1
)
+
D
(
X
2
)
+
2
2
⋅
D
(
X
3
)
=
1
+
1.6
+
16
=
18.6.
E(X_1-X_2-2X_3+2)=E(X_1)-E(X_2)-2E(X_3)+2=0-2-2\cdot4+2=-8,\\D(X_1-X_2-2X_3+2)=D(X_1)+D(X_2)+2^2\cdot D(X_3)=1+1.6+16=18.6.
E(X1−X2−2X3+2)=E(X1)−E(X2)−2E(X3)+2=0−2−2⋅4+2=−8,D(X1−X2−2X3+2)=D(X1)+D(X2)+22⋅D(X3)=1+1.6+16=18.6.
下列程序验算本例的计算结果。
from scipy.stats import norm, binom, poisson #导入norm, binom, poisson
Ex1=norm.expect(scale=1) #E(X1)
Ex2=binom.expect(args=(10,0.2)) #E(X2)
Ex3=poisson.expect(args=(4,)) #E(X3)
print('E(X1-X2-2X3+2)=%.1f'%(Ex1-Ex2-2*Ex3+2))
Dx1=norm.var(scale=1) #D(X1)
Dx2=binom.var(10, 0.2) #D(X2)
Dx3=poisson.var(4) #D(X3)
print('D(X1-X2-2X3+2)=%.1f'%(Dx1+Dx2+4*Dx3))
第2~4行分别调用norm,binom和poisson的expect函数计算 E ( X 1 ) E(X_1) E(X1), E ( X 2 ) E(X_2) E(X2)和 E ( X 3 ) E(X_3) E(X3),注意各自传递的参数(参见博文《经典分布数学期望的计算》)。第6~8行调用norm,binom和poisson的var函数计算 D ( X 1 ) D(X_1) D(X1), D ( X 2 ) D(X_2) D(X2)和 D ( X 3 ) D(X_3) D(X3),注意各自传递的参数。运行程序,输出
E(X1-X2-2X3+2)=-8.0
D(X1-X2-2X3+2)=18.6
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》