Windows11 WSL2 Ubuntu Python Ⅱ

NumPy を使う

ここからは NumPy を使って行きたいと思います。
NumPy は TensorFlow をインストールした時に一緒にインストールされています。
この中にある相関係数パッケージ np.corrcoef を利用します。

  1. 相関係数とは

    相関係数 r は2組のデータの間にどれほどの関係性があるか示す指標です。
    値は
    -1 ≦ r ≦ 1
    となります。

  2. 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  強い正の相関

  3. 相関係数定義

    相関係数は2つのデータの組 X、Yがあるとき
    それぞれの標準偏差をSx、Sy、共分散をSxy とすると
    r = Sxy/(Sx・Sy)
    となります。
    なお、共分散Sxy は X、Yの要素の平均をそれぞれ Xav、Yav とすると


    共分散定義

    となります。

相関がありそうなデータ作成

相関がありそうな
y = sin(x)
もどきのデータを5組作成します。

  1. 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個の値が設定されます。

  2. 基準値①作成

    比較する元となる基準値①を作成します。
    y = np.sin(x)

  3. 比較データ②作成

    比較するデータ② z0 を作成します。
    z0 = 0.5 * np.sin(x - 0.4)
    正の相関あり
    と想定されます。

  4. 比較データ③作成

    比較するデータ③ z1 を作成します。
    z1 = np.cos(x)
    π/2 位相ずれがあり、相関なし
    と想定されます。

  5. 比較データ④作成

    比較するデータ④ z2 を作成します。
    z2 = 0.5 * np.sin(x) + 1
    強い正の相関あり
    と想定されます。
    なんと r = 1 と判定されます。

  6. 比較データ⑤作成

    比較するデータ⑤ z3 を作成します。
    z3 = - np.sin(x)
    負の相関あり
    と想定されます。
    r = -1 と判定されます。

  7. 比較データまとめ

    比較データ②~⑤を z ⑥にまとめます。
    z = np.r_[z0,z1,z2,z3].reshape(4,33)
    [
     [z0]
     [z1]
     [z2]
     [z3]
    ]
    4×33 の行列になりました。

  8. 相関係数を求める

    基準値①と比較値②~⑥の相関係数を求めます。

    1. 相関係数①-②

      ①を基準として相関係数①-② cor を求めます。
      cor = np.corrcoef(y,z0)
      print(cor)
      結果は

        
      [[1.         0.91419696]
       [0.91419696 1.        ]]
      

      のようになります。
      同一の相関係数値が2個見えます。
      print(cor[1,0])
      とすれば相関係数値を抜き取ることができます。

    2. 相関係数①-⑥

      ①を基準として相関係数①-⑥ cor4 を求めます。
      cor4 = np.corrcoef(y,z)
      cor41 = cor4[1:, 0]
      print(cor41)
      結果は

      [ 0.91419696  0.00528862  1.         -1.        ]
      

      のようになります。
      ①と④z2 との相関係数値が 1. となっており
      強い正の相関あり
      と判定できます。

    3. 相関係数最大値

      相関係数の最大値を
      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)


    ここまで相関係数について説明してきました。
    引き続き相関係数のまとめをします。


  9. 相関係数まとめ に進む
  10. ロ-ソク足表示ファイル作成 に戻る
  11. pandas インスト-ル に戻る
  12. Windows11 WSL2 Ubuntu Python パッケージ に戻る
  13. 70VPS に戻る