概率统计Python计算:协方差与相关系数计算

在这里插入图片描述
我们知道,若随机向量 ( X , Y ) (X,Y) (X,Y)存在 E ( X ) E(X) E(X) E ( Y ) E(Y) E(Y) E ( X Y ) E(XY) E(XY),则存在 ( X , Y ) (X,Y) (X,Y)的协方差 Cov ( Y , X ) \text{Cov}(Y, X) Cov(Y,X)
Cov ( Y , X ) = E [ ( Y − E ( Y ) ) ( X − E ( X ) ) ] = E ( X Y ) − E ( X ) E ( Y ) . \text{Cov}(Y, X)=E[(Y-E(Y))(X-E(X))]=E(XY)-E(X)E(Y). Cov(Y,X)=E[(YE(Y))(XE(X))]=E(XY)E(X)E(Y).
若还有 D ( X ) D(X) D(X) D ( Y ) D(Y) D(Y)存在,且 D ( X ) D ( Y ) > 0 D(X)D(Y)>0 D(X)D(Y)>0,则 X X X, Y Y Y的相关系数为
ρ X Y = Cov ( X , Y ) D ( X ) D ( Y ) . \rho_{XY}=\frac{\text{Cov}(X, Y)}{\sqrt{D(X)}\sqrt{D(Y)}}. ρXY=D(X) D(Y) Cov(X,Y).
根据协方差的计算公式和相关系数的定义,编写如下的通用Python函数。

def cov(Exy, Ex, Ey):                   #协方差函数定义
    return Exy-Ex*Ey
def rhoxy(Exy, Ex, Ey, sigmax, sigmay): #相关系数函数定义
    return cov(Exy, Ex, Ey)/sigmax/sigmay

第1~2行定义的函数cov计算 ( X , Y ) (X, Y) (X,Y)的协方差 Cov ( X , Y ) \text{Cov}(X, Y) Cov(X,Y)。参数Exy,Ex,Ey分别表示期望 E ( X Y ) E(XY) E(XY) E ( Y ) E(Y) E(Y) E ( Y ) E(Y) E(Y)。第3~4行定义的函数rhoxy计算相关系数 ρ X Y \rho_{XY} ρXY。参数Exy,Ex,Ey与cov函数的同名参数意义相同,参数sigmax和sigmay分别表示 D ( X ) \sqrt{D(X)} D(X) D ( Y ) \sqrt{D(Y)} D(Y)
我们还知道,若 X X X Y Y Y相互独立,则不难推得 Cov ( X , Y ) = 0 \text{Cov}(X,Y)=0 Cov(X,Y)=0,由时必有 ρ X Y = 0 \rho_{XY}=0 ρXY=0,反之却不然。
例1 ( X , Y ) (X, Y) (X,Y)的联合分布律为
在这里插入图片描述
不难算得, E ( X ) = 5 / 2 E(X)=5/2 E(X)=5/2 E ( Y ) = 0 E(Y)=0 E(Y)=0 E ( X Y ) = 0 E(XY)=0 E(XY)=0,故 ρ X Y = 0 \rho_{XY}=0 ρXY=0。即 X X X Y Y Y不相关。但是,
P ( X = 1 , Y = − 2 ) = 0 ≠ 1 2 ⋅ 1 4 = P ( X = 1 ) ⋅ P ( Y = − 2 ) P(X=1, Y=-2)=0\not=\frac{1}{2}\cdot\frac{1}{4}=P(X=1)\cdot P(Y=-2) P(X=1,Y=2)=0=2141=P(X=1)P(Y=2)
X X X Y Y Y不相互独立。
下列代码验证本例计算结果。

import numpy as np                                  #导入numpy
X=np.array([1, 4])                                  #X的取值
Y=np.array([-2, -1, 1, 2])                          #Y的取值
Pxy=np.array([[0, 1/4, 1/4, 0],                     #联合分布律的概率
            [1/4, 0, 0, 1/4]])
Ex=expect(Pxy, X)                                   #E(X)
Ey=expect(Pxy, Yv=Y, func=lambda x, y:y)            #E(Y)
Exy=expect(Pxy, X, Y, func=lambda x, y:x*y)         #E(XY)
covar=cov(Exy, Ex, Ey)                              #Cov(X,Y)
indep=independent(Pxy)                              #检验独立性
print('X与Y不相关是%s, X与Y相互独立是%s'%(covar==0, indep))

程序的2~5行完成随机向量 ( X , Y ) (X,Y) (X,Y)的联合分布律的数据设置。第6、7、8三行调用expect函数(详见博文《离散型自定义分布数学期望的计算》)计算期望 E ( X ) E(X) E(X) E ( Y ) E(Y) E(Y) E ( X Y ) E(XY) E(XY)。第9行调用上列程序定义的函数cov计算协方差 Cov ( X , Y ) \text{Cov}(X,Y) Cov(X,Y)。第10行调用independent函数(详见博文《离散型变量独立性判断》)检验 X X X Y Y Y是否独立。第12行输出计算结果:

X与Y不相关是True, X与Y相互独立是False

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值