Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

(統計学, (高校数学: データの分析)) 散布図と相関係数とp値 (Python 3, matplotlib: scatter(), Scipy: stats, pearsonr())

使用するライブラリ

matplotlib

Pandas

SciPy

Python 3 コード

scatter_plot_and_cor.py

#!/usr/bin/env python3


"""(docstring)
"""


import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import pearsonr


def scatter_plot_and_cor():
    """(docstring)
    """
    dat = {'生徒id': list(range(1, 21)),
           '教科 A の成績': [24, 30, 12, 22, 28, 20, 32, 18, 28, 36,
                        34, 8, 18, 28, 30, 12, 18, 32, 14, 36],
           '教科 B の成績': [22, 28, 18, 18, 32, 28, 38, 22, 14, 28,
                        30, 14, 14, 26, 32, 28, 24, 42, 28, 34]}

    df = pd.DataFrame(dat, columns=['生徒id', '教科 A の成績', '教科 B の成績'])
    print(df)
    print('')

    x = df.ix[:, '教科 A の成績']
    y = df.ix[:, '教科 B の成績']

    # 直下の日本語設定は、環境によって異なる。
    font = {'family': 'IPAexGothic'}
    plt.rc('font', **font)

    plt.scatter(x, y)
    # or
    # plt.plot(x, y, 'o')
    plt.xlim([0, 50])
    plt.ylim([0, 50])
    plt.title('教科 A の成績と教科 B の成績の散布図')
    plt.xlabel('教科 A の成績')
    plt.ylabel('教科 B の成績')
    plt.grid()
    plt.show()

    r, p = pearsonr(x, y)
    print('相関係数 r: ', r)
    print('p 値: ', p)


if __name__ == '__main__':
    scatter_plot_and_cor()

出力

散布図のスクリーンショット

f:id:my_notes:20180331213930p:plain

$ python3 scatter_plot_and_cor.py
    生徒id  教科 A の成績  教科 B の成績
0      1        24        22
1      2        30        28
2      3        12        18
3      4        22        18
4      5        28        32
5      6        20        28
6      7        32        38
7      8        18        22
8      9        28        14
9     10        36        28
10    11        34        30
11    12         8        14
12    13        18        14
13    14        28        26
14    15        30        32
15    16        12        28
16    17        18        24
17    18        32        42
18    19        14        28
19    20        36        34

相関係数 r:  0.5988781542071395
p 値:  0.005269235852708866

参考文献 (数式を参考)

高校数学解法事典 第九版

高校数学解法事典 第九版

入門 統計学 −検定から多変量解析・実験計画法まで−

入門 統計学 −検定から多変量解析・実験計画法まで−