【こつこつPython】Pythonで分散共分散行列を取得する方法|numpy.cov

278covサムネイル
こつこつPython

Pythonで分散共分散行列を取得する方法です。
使用するのはPythonのnumpyライブラリのcov関数です。
分散はデータの値のばらつきを表し、共分散はデータどうしの相関関係を表します。
共分散がプラスだとデータ間に正の相関があり、共分散がマイナスだとデータ間に負の相関があることを意味します。

import numpy as np

1行目に身長のデータ、2行目に体重のデータが入った2次元配列を使用します。

a = np.array([[150, 160, 170, 180, 190], 
              [55, 60, 65, 60, 70]])
a

まず、cov関数を使用して、身長と体重の分散共分散行列を取得してみましょう。
引数に分散共分散行列を求めたい配列を指定します。
実行します。

np.cov(a)

身長と体重の分散共分散行列を取得できました。
この行列の1行1列成分には身長の分散が入り、2行2列成分には体重の分散が入り、非対角成分には共分散の値が入ります。

また、引数に要素数が同じ配列のデータを追加できます。
腹囲のデータが入った配列を追加してみます。
実行します。

b = np.array([60, 85, 55, 60, 70])
np.cov(a, b)

3つのデータの分散共分散行列を取得できました。
対角成分には身長、体重、腹囲それぞれの分散の値が入ります。
1行2列成分には身長と体重の共分散が入り、1行3列成分には身長と腹囲の共分散が入り、2行3列成分には体重と腹囲の共分散が入ります。

また、cov関数はデフォルトでは不偏分散を取得します。
引数biasにTrueを指定すると、標本分散を取得できます。
実行します。

np.cov(a, b, bias=True)

標本分散共分散行列を取得できました。

関連メソッド

【こつこつPython】Pythonで配列の平均、分散、標準偏差を取得する方法|numpy.sum/var/std

【こつこつPython】Pythonで相関係数を取得する方法|numpy.corrcoef

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト