Pythonで相関行列、偏相関行列を求める

相関行列、偏相関行列の計算(答え合わせ)は通常Rを使うが、今回はPythonでやってみる。

目的変数と説明変数

弊社アプリの結果画面

単相関

偏相関

PythonはQGISのPythonコンソール上で実行

実行するスクリプト


import numpy as np
import scipy as sp
from scipy import linalg

def partialcorrcoef(c):
    inv_cor = linalg.inv(c)
    rows = inv_cor.shape[0]
    regu_1 = 1 / sp.sqrt(sp.diag(inv_cor))
    regu_2 = sp.repeat(regu_1, rows).reshape(rows, rows)
    regu_1 = 1 / sp.sqrt(sp.diag(inv_cor))
    regu_2 = sp.repeat(regu_1, rows).reshape(rows, rows)
    pcor = (-inv_cor) * regu_1 * regu_2
    sp.fill_diagonal(pcor, 1)
    return pcor
    

data=[
[520000,498000,447000,451000,608000],
[160,120,250,105,175],
[284,162,169,163,261],
[400,600,600,600,600]
]

C = np.corrcoef(data)

PC = partialcorrcoef(C)

スクリプトを実行した後に相関行列(C)、偏相関行列(PC}を表示

計算結果は一致したのでアプリには問題はなし