相関係数は、2つの変数間の関係性を示す統計量です。
Pythonのデータ分析ライブラリであるpandasを使用することで、簡単に計算することができます。
pandasを使った相関係数の計算方法をまとめます。
相関係数とは?
相関係数は、2つの変数間の線形関係を示す値で、以下の特徴を持ちます。
- 値の範囲は
-1
から1
。 1
に近い値:正の相関(片方が増えるともう片方も増える)。-1
に近い値:負の相関(片方が増えるともう片方は減る)。0
に近い値:相関がほとんどない。
基本的な相関係数の計算
データフレームを用意する
まず、例として2つの変数X
とY
を持つデータフレームを作成します。
import pandas as pd
# サンプルデータ
data = {
'X': [1, 2, 3, 4, 5],
'Y': [2, 4, 6, 8, 10]
}
df = pd.DataFrame(data)
print(df)
出力
X Y
0 1 2
1 2 4
2 3 6
3 4 8
4 5 10
相関係数を計算する方法
pandasのcorr
メソッドを使用すると、簡単に相関係数を計算できます。
# 相関係数の計算
correlation = df.corr()
print(correlation)
出力
X Y
X 1.0 1.0
Y 1.0 1.0
上記の結果では、X
とY
の相関係数が1.0
となっています。
これは、2つの変数が完全に正の相関を持っていることを意味します。
特定の列間の相関係数を計算する
データフレーム全体ではなく、特定の2列間の相関係数を計算したい場合は、以下のように記述します。
# XとYの相関係数を計算
correlation_xy = df['X'].corr(df['Y'])
print(round(correlation_xy, 2))
出力
1.0
相関係数の種類を変更する
デフォルトでは、pandasのcorr
メソッドはピアソンの相関係数を計算します。
しかし、以下の種類も選択可能です。
- ピアソン相関係数(デフォルト)
method='pearson'
- スピアマン相関係数
method='spearman'
- ケンドールの順位相関係数
method='kendall'
スピアマン相関係数の例
# スピアマン相関係数の計算
correlation_spearman = df.corr(method='spearman')
print(correlation_spearman)
ケンドール相関係数の例
# ケンドール相関係数の計算
correlation_kendall = df.corr(method='kendall')
print(correlation_kendall)
実データでの使用例
CSVファイルからデータを読み込む
現実的な使用例として、CSVファイルから読み込んだデータを使う例を見てみましょう。
# CSVファイルを読み込む
df = pd.read_csv('data.csv')
# 全列間の相関係数を計算
correlation_matrix = df.corr()
print(correlation_matrix)
ヒートマップで相関を視覚化する
相関係数を視覚的に理解するために、ヒートマップを作成することも可能です。
以下は、seaborn
を使用した例です。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# CSVファイルを読み込む
df = pd.read_csv('data.csv')
# 全列間の相関係数を計算
correlation_matrix = df.corr()
# ヒートマップの描画
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix')
plt.show()
まとめ
pandasを使用することで、以下のような相関係数の計算が簡単に行えます。
df.corr()
でデータフレーム全体の相関を計算。df['列1'].corr(df['列2'])
で特定の列間の相関を計算。- 相関の種類(ピアソン、スピアマン、ケンドール)を指定可能。
- ヒートマップで視覚化することで、データの関係性をより直感的に理解。