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() | 分布の非対称性を示す指標 |
