この記事では、python上でデータの相関係数を求める方法をご紹介していきます。
データ分析を行う際、相関係数は必須のチェック項目ですので、ぜひ使いこなせるようになっておきましょう。
それではさっそくやっていきます。
サンプルデータの紹介
ただやり方だけをご紹介するだけではおもしろくないので、今回は以下のデータに対して実際に相関係数を算出してみましょう。
x | y1 | y2 | y3 |
1 | 1 | 8 | 8 |
2 | 5 | 7 | 6 |
3 | 7 | 1 | 4 |
4 | 11 | 8 | 1 |
5 | 16 | 9 | -3 |
このデータをエクセルでグラフにすると以下のような感じ。
y1は正の相関、y2は相関なし、y3は負の相関がありそうですね。
実際にエクセルで相関係数も出してみました。
※今回はCORREL関数で算出してみました。
結果は以下の通りです。
これ以降、このエクセルで算出した
0.990867…, 0.147799…, -0.98722… という数値をpython上で算出していきます。
それではpythonでのプログラミングに移りましょう。
pythonで相関係数を算出する方法
今回はnumpyライブラリの中のcorrcoefというスキルを使って相関係数を算出してみます。
numpyのcorrcoefの使い方は以下の通りです。
最後の[1,0]って何?
と思っている人は多いと思いますので、この点について解説しておきます。
このnumpyのcorrcoefで算出されるデータは以下のような配列として出力されるようになっています。
xとxの相関係数 | xとyの相関係数 |
yとxの相関係数 | yとyの相関係数 |
今回はこの配列の中から、左下の数値を取り出すために、[1,0]を付けています。
(0を基準とした際の2行目と1列目の数値を取り出す)
まぁ深く考えないでcorrcoefを使ったらとりあえず[1,0]をつけておけばOKです。
numpy.corrcoefの実際の使用例
使い方がわかったところで、早速実際に使ってみましょう。
今回は先ほど紹介したデータを記述したテキストファイルが、pythonコードを記述したファイルと同じフォルダに入っていることを想定してコードを書いていきます。
以下がそのテキストファイルです。
今回はdata.txtとして保存しています。
そして以下がこのデータから各データの相関係数を算出してくれるpythonコードです。
※xとy1, xとy2,xとy3の相関係数をそれぞれ算出しています。
import numpy as np
data=np.loadtxt('data.txt')
x=data[:,0]
y1=data[:,1]
y2=data[:,2]
y3=data[:,3]
corr1=np.corrcoef(x,y1)[1,0]
corr2=np.corrcoef(x,y2)[1,0]
corr3=np.corrcoef(x,y3)[1,0]
print(corr1)
print(corr2)
print(corr3)
このコードを実行すると以下の結果が出力されました。
print(corr2) : 0.14779939172464396
print(corr3) : -0.9872177725716264
これは最初にエクセルで算出した数値と同じですね。
⇒numpyのcorrcoefの結果と、エクセルのCORREL関数の結果がしっかり一致していることが確認できました。
おわりに
というわけで今回は、numpyのcorrcoefというスキルをつかって、データ群の相関係数を算出する方法をご紹介しました。
データ分析の際にぜひご活用ください。
このように、私のブログでは様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント