Python 数学、統計、機械学習:基本統計量、分散と標準偏差
1.基本統計量
Python 数学、統計、機械学習:基本統計量、ヒストグラム で使用した、Bostonデータセット の住宅価格をヒストグラムに表示し、各基本統計量を出力してみる。
- from sklearn import datasets
- import pandas as pd
- import matplotlib.pyplot as plt
- import math
- def var_stdev():
- """
- https://pythondatascience.plavox.info/matplotlib/%E6%95%A3%E5%B8%83%E5%9B%B3
- https://qiita.com/ynakayama/items/8d3b1f7356da5bcbe9bc
- https://teratail.com/questions/72586
- :return:
- """
- boston = datasets.load_boston()
- df = pd.DataFrame(boston.target)
- df.columns = ['Price']
- x = df['Price']
- # CSVに出力
- # x.to_csv('~/work/house_price.csv')
- import pprint
- print(pprint.pprint(dir(x)))
- label = """
- mean={0:f}
- median={1:f}
- mode={2:f}
- variance={3:f}
- standard deviation={4:f}
- standard error={5:f}
- kurtosis={6:f}
- skewness={7:f}
- """.format(x.mean(), x.median(), x.mode().iloc[0], x.var(), x.std(),
- x.sem(), x.kurtosis(), x.skew())
- fig = plt.figure()
- ax = fig.add_subplot(1,1,1)
- ax.set_title('Boston house price')
- ax.hist(x, bins=int(round(math.sqrt(x.count()), 0)),
- rwidth=0.8, label='house price(x $1,000)')
- ax.text(25, 40, label)
- ax.legend()
- plt.show()
- if __name__ == "__main__":
- var_stdev()
基本統計量 | 対応するDataFrameの関数 | 概要 |
平均(mean) | mean() | 観測値の総和を観測値の個数で割ったもの |
中央値(median) | median() | 有限個のデータを小さい順に並べたとき中央に位置する値 |
最頻値(mode) | mode() | データ群や確率分布で最も頻繁に出現する値 |
分散(variance) | var() | 平均からのバラツキを示す指標、標準偏差の2乗、0 に近いほど散らばりは小さい |
標準偏差(standard deviation) | std() | 平均からのバラツキを示す指標、分散の正の平方根 |
標準誤差(standard error) | sem() |
母集団からある数の標本を選ぶとき、選ぶ組み合わせに依って統計量がどの程度ばらつくかを、全ての組み合わせについての標準偏差で表したもの。 統計量を指定せずに単に「標準誤差」と言った場合、標本平均の標準誤差(standard error of the mean、SEM)のことを普通は指す。 |
尖度(kurtosis) | kurtosis() | 正規分布と比べて、尖度が大きければ鋭いピークと長く太い裾を持った分布を持ち、尖度が小さければより丸みがかったピークと短く細い尾を持った分布であるという事が判断できる |
歪度(skewness) | skew() | 分布の非対称性を示す指標 |