Windows11 WSL2 Ubuntu Python Ⅱ
NumPy を使う
ここからは NumPy を使って行きたいと思います。
NumPy は TensorFlow をインストールした時に一緒にインストールされています。
この中にある相関係数パッケージ np.corrcoef を利用します。
- 相関係数とは
相関係数 r は2組のデータの間にどれほどの関係性があるか示す指標です。
値は
-1 ≦ r ≦ 1
となります。 - r の範囲と相関度合い
r の範囲によって相関関係の解釈がされます。
- 1 ≦ r < -0.7 強い負の相関
-0.7≦ r < -0.4 負の相関
-0.4≦ r < -0.2 弱い負の相関
-0.2≦ r < 0.2 相関ほとんどなし
0.2 ≦ r < 0.4 弱い正の相関
0.4 ≦ r < 0.7 正の相関
0.7 ≦ r ≦ 1 強い正の相関 - 相関係数定義
相関係数は2つのデータの組 X、Yがあるとき
それぞれの標準偏差をSx、Sy、共分散をSxy とすると
r = Sxy/(Sx・Sy)
となります。
なお、共分散Sxy は X、Yの要素の平均をそれぞれ Xav、Yav とすると
となります。
相関がありそうなデータ作成
相関がありそうな
y = sin(x)
もどきのデータを5組作成します。
- x 値作成
x は 0~2π とし 0.2 間隔に設定します。
x = np.arange(0, 6.5, 0.2)
[
0. 0.2 0.4 0.6 0.8
1. 1.2 1.4 1.6 1.8
2. 2.2 2.4 2.6 2.8
3. 3.2 3.4 3.6 3.8
4. 4.2 4.4 4.6 4.8
5. 5.2 5.4 5.6 5.8
6. 6.2 6.4
]
の 33個の値が設定されます。 - 基準値①作成
比較する元となる基準値①を作成します。
y = np.sin(x)
- 比較データ②作成
比較するデータ② z0 を作成します。
z0 = 0.5 * np.sin(x - 0.4)
正の相関あり
と想定されます。 - 比較データ③作成
比較するデータ③ z1 を作成します。
z1 = np.cos(x)
π/2 位相ずれがあり、相関なし
と想定されます。
- 比較データ④作成
比較するデータ④ z2 を作成します。
z2 = 0.5 * np.sin(x) + 1
強い正の相関あり
と想定されます。
なんと r = 1 と判定されます。 - 比較データ⑤作成
比較するデータ⑤ z3 を作成します。
z3 = - np.sin(x)
負の相関あり
と想定されます。
r = -1 と判定されます。 - 比較データまとめ
比較データ②~⑤を z ⑥にまとめます。
z = np.r_[z0,z1,z2,z3].reshape(4,33)
[
[z0]
[z1]
[z2]
[z3]
]
4×33 の行列になりました。 - 相関係数①-②
①を基準として相関係数①-② cor を求めます。
cor = np.corrcoef(y,z0)
print(cor)
結果は[[1. 0.91419696] [0.91419696 1. ]]
のようになります。
同一の相関係数値が2個見えます。
print(cor[1,0])
とすれば相関係数値を抜き取ることができます。 - 相関係数①-⑥
①を基準として相関係数①-⑥ cor4 を求めます。
cor4 = np.corrcoef(y,z)
cor41 = cor4[1:, 0]
print(cor41)
結果は[ 0.91419696 0.00528862 1. -1. ]
のようになります。
①と④z2 との相関係数値が 1. となっており
強い正の相関あり
と判定できます。 - 相関係数最大値
相関係数の最大値を
np.amax()
で探します。
また、その ID も
np.argmax()
で見つけます。
cor_max = np.amax(cor41)
print('相関max=', cor_max)
c_max_id = np.argmax(cor41)
print('相関max_ID=', c_max_id) - 相関係数まとめ に進む
- ロ-ソク足表示ファイル作成 に戻る
- pandas インスト-ル に戻る
- Windows11 WSL2 Ubuntu Python パッケージ に戻る
相関係数を求める
基準値①と比較値②~⑥の相関係数を求めます。
ここまで相関係数について説明してきました。
引き続き相関係数のまとめをします。