cov【NumPy】
目的:共分散行列を求める
書式:
out = numpy.cov(X, Y, rowvar, bias)
主な引数:
X, Y ... 処理の対象となるデータ
ベクトル型のデータを格納したXのみを与えた場合、戻り値は分散となる。
ベクトル型のデータを格納したX, Yを与えた場合、共分散行列を返す。(わかりやすい使い方)
行列型のデータを格納したXのみを与えた場合、共分散行列を返す。
戻り値
分散、共分散行列
基本的な使い方:
code:cov01.py
import numpy as np
x = 1,5,3,2
Vx1 = np.cov(x)
print('cov(x)=\n', Vx1)
Vx2 = np.cov(x,x)
print('cov(x,x)=\n', Vx2)
x = 1,5,3,2
y = 2,1,2,2
Vxy1 = np.cov(x,y)
print('cov(x,y)=\n', Vxy1)
code:(結果).txt
cov(x)=
2.9166666666666665
cov(x,x)=
[2.91666667 2.91666667
2.91666667 2.91666667]
cov(x,y)=
[ 2.91666667 -0.75
-0.75 0.25 ]
[ 2.91666667 -0.75
-0.75 0.25 ]
行列型の引数を一つ与えた場合
code:cov02.py
import numpy as np
x = 1,5,3,2
y = 2,1,2,2
xy = np.array(x, y)
print('xy =\n', xy, xy.shape)
Vxy1 = np.cov(xy)
print('cov(xy)=\n', Vxy1, Vxy1.shape)
Vxy2 = np.cov(xy, rowvar=False)
print('cov(xy, rowvar=False)=\n', Vxy2, Vxy2.shape)
code:(結果).txt
xy =
[1 5 3 2
2 1 2 2] (2, 4)
cov(xy)=
[ 2.91666667 -0.75
-0.75 0.25 ] (2, 2)
cov(xy, rowvar=False)=
[ 0.5 -2. -0.5 0.
-2. 8. 2. 0.
-0.5 2. 0.5 0.
0. 0. 0. 0. ] (4, 4)
2x4の配列を渡した。デフォルトでは各行をデータ列として解析を行うため、2行の行列からは2x2の共分散行列が得られる。
引数rowvar=Falseを与えると、各列をデータ列として解釈するため、これは4つのデータ列として処理される。結果として4x4の共分散行列が得られる。