Python による相関係数の計算

pandas.DataFrame.corr() コマンドをつかい、相関係数を計算する。P 値も計算したい場合には scipy.stats.pearsonr() を使う。

Python を起動し、pandas を import する。

import pandas as pd

通常は Excel 等で作成した CSV ファイルを pandas に読み込んで分析する。しかし、ここでは便宜的に以下の簡単なデータフレームを作成し、data という変数に格納しておく。

data = pd.DataFrame({"縫合結紮の練習時間 (時間)":[100,150,200,250,300,1000], "手術時間 (分)":[210,220,150,100,90,45], "出血量 (ml)":[50,70,60,30,20,10]})

data の内容を確認する。

data

corr()コマンドでピアソン積率相関係数(いわゆる相関係数)を表示する。

data.corr() #ピアソン積率相関係数。

以下のようにすると順位相関係数も計算できる。

data.corr(method = "spearman") #スピアマン順位相関係数。
data.corr(method = "kendall") #ケンドール順位相関係数。

Pandas だけでは P 値は自動計算されない。これも計算したい場合は scipy.stats を使う。

from scipy import stats

以下のコマンドで x と y の相関係数と両側検定による P 値を計算する。
ここでは、x = 縫合結紮の練習時間 (時間)、y = 手術時間 (分)を data から抽出して相関をみている。

x, y = data["縫合結紮の練習時間 (時間)"], data["手術時間 (分)"]
stats.pearsonr(x, y) #ピアソン積率相関係数。
stats.spearmanr(x, y) #スピアマン順位相関係数。
stats.kendalltau(x, y) #ケンドール順位相関係数。