Python3(matplotlib, NumPy, pandas, Scipy)で、(ピアソンの)相関係数(とp値)と散布図

Python3コード

#!/usr/bin/env python3


"""使用するデータは『Rによるやさしい統計学』の第3章から。
"""


import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats


def main():
    """(docstring)
    """

    # matplotlib
    # macOSやOS Xで文字化けするなら。
    font = {'family' : 'Osaka'}

    dat = {'統計テスト1': [6, 10, 6, 10, 5,
                        3, 5, 9, 3, 3,
                        11, 6, 11, 9, 7,
                        5, 8, 7, 7, 9],
            '統計テスト2': [10, 13, 8, 15, 8,
                        6, 9, 10, 7, 3,
                        18, 14, 18, 11, 12,
                        5, 7, 12, 7, 7]}

    df = pd.DataFrame(dat)
    print('df')
    print('')
    print(df)
    print('')

    # 相関係数とp値
    res = sp.stats.pearsonr(df.ix[:, '統計テスト1'], df.ix[:, '統計テスト2'])
    print('ピアソン相関係数とp値')
    print(res)

    # 散布図
    plt.scatter(df.ix[:, '統計テスト1'], df.ix[:, '統計テスト2'])
    plt.xlabel('統計テスト1')
    plt.ylabel('統計テスト2')
    plt.show()

if __name__ == '__main__':
    main()

出力

df

    統計テスト1  統計テスト2
0        6      10
1       10      13
2        6       8
3       10      15
4        5       8
5        3       6
6        5       9
7        9      10
8        3       7
9        3       3
10      11      18
11       6      14
12      11      18
13       9      11
14       7      12
15       5       5
16       8       7
17       7      12
18       7       7
19       9       7

ピアソン相関係数とp値
(0.74965896482424488, 0.00014162288155448246)

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

f:id:my_notes:20170727205427p:plain

参考文献

Rによるやさしい統計学

Rによるやさしい統計学

たとえばR(R言語)でなら。

my-notes.hatenablog.com