numpy中计算协方差利用cov方法,如何计算协方差?
利用这个公式,可以求得两个矩阵的协方差,举个例子:
这里
X
,
Y
X,Y
X,Y分别对应着矩阵
[
0
,
3
]
,
[
0
,
3
]
[0,3],[0,3]
[0,3],[0,3],
n
n
n为向量维数即2,
X
1
=
Y
1
=
0
,
X
2
=
Y
2
=
3
X_1=Y_1=0,X_2=Y_2=3
X1=Y1=0,X2=Y2=3,代入公式计算可得:
c
o
v
(
X
,
Y
)
=
(
0
−
1.5
)
∗
(
0
−
1.5
)
+
(
3
−
1.5
)
∗
(
3
−
1.5
)
2
−
1
=
4.5
cov(X,Y)=\frac{(0-1.5)*(0-1.5)+(3-1.5)*(3-1.5)}{2-1}=4.5
cov(X,Y)=2−1(0−1.5)∗(0−1.5)+(3−1.5)∗(3−1.5)=4.5,需要注意的是,协方差矩阵需要计算各个向量的所有组合,在这个例子中表现为:
c
o
v
(
[
X
,
Y
]
)
=
[
c
o
v
(
X
,
X
)
c
o
v
(
X
,
Y
)
c
o
v
(
Y
,
X
)
c
o
v
(
Y
,
Y
)
]
cov([X,Y])= \left[ \begin{matrix} cov(X,X) & cov(X,Y) \\ cov(Y,X) &cov(Y,Y) \\ \end{matrix} \right]
cov([X,Y])=[cov(X,X)cov(Y,X)cov(X,Y)cov(Y,Y)]
再看个例子试试:
这里的4.5计算方法和上个例子相同,这个1.5就是:
c
o
v
(
X
,
Y
)
=
(
0
−
1.5
)
∗
(
1
−
1.5
)
+
(
3
−
1.5
)
∗
(
2
−
1.5
)
2
−
1
=
1.5
cov(X,Y)=\frac{(0-1.5)*(1-1.5)+(3-1.5)*(2-1.5)}{2-1}=1.5
cov(X,Y)=2−1(0−1.5)∗(1−1.5)+(3−1.5)∗(2−1.5)=1.5
我所理解的协方差就是它能够反映两个向量之间的波动程度,一个向量的两个元素如果相同则方差为0,如果两个元素不同则这个向量自身就是在波动的。
此外,numpy的cov中还有个参数叫做rowvar,在我看来,rowvar默认为1,如果人为设定rowvar为0,则相当于给需要计算协方差的矩阵加了个转置。参见下面这个例子:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)