2018年10月15日月曜日

開発環境

  • macOS High Sierra - Apple
  • Emacs (Text Editor)
  • Python 3.7 (プログラミング言語)

Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の2章(データを統計量で記述する)、3.9(プログラミングチャレンジ)、問題3-1(よりよい相関係数を求めるプログラム)を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3


def find_corr_x_y(x, y):
    n = len(x)
    if n != len(y):
        raise Exception('長さが等しくないので相関は計算できない。')
    sum_prod_x_y = sum([xi * yi for xi, yi in zip(x, y)])
    sum_x = sum(x)
    sum_y = sum(y)
    x_square_sum = sum([xi ** 2 for xi in x])
    y_square_sum = sum([yi ** 2 for yi in y])
    squared_sum_x = sum_x ** 2
    squared_sum_y = sum_y ** 2
    num = n * sum_prod_x_y - sum_x * sum_y
    den_t1 = n * x_square_sum - squared_sum_x
    den_t2 = n * y_square_sum - squared_sum_y
    den = (den_t1 * den_t2) ** (1/2)
    return num / den


if __name__ == '__main__':
    x = list(range(10))
    y = list(range(9, -1, -1))
    for x0, y0 in [(x, x), (x, y), (x + [1], y), (x, y + [1])]:
        try:
            print(find_corr_x_y(x0, y0))
        except Exception as err:
            print(err)

入出力結果(Terminal, Jupyter(IPython))

$ ./sample1.py
1.0
-1.0
長さが等しくないので相関は計算できない。
長さが等しくないので相関は計算できない。
$

1 コメント :

eddyshaw9272711さんのコメント...

You must participate in a contest for probably the greatest blogs on the web. I'll advocate this site! online casino games

コメントを投稿