概要
その名のとおりです。中央値や四分位点を求めるだけの関数です。
例えばBellCurveの統計Webなど、統計の本やサイトでよく出てきますが、データがたくさん与えられて、それの中央値や四分位点を求めなさいって問題、単純に数えるのが面倒くさくないですか???
そんなものはPCに任せて一瞬で出せば良いんです。
mode.py
import numpy as np
array = [56, 48, 78, 81, 86, 71, 72, 88, 46, 47, 89, 58, 43, 79, 48, 41]
array.sort() # 昇順に並び替え
print(array)
def mode(array):
mode_index = (len(array) - 1) / 2
if len(array) % 2 == 0:
# 中央の二つの値の平均
mode = (array[int(np.floor(mode_index))] + array[int(np.ceil(mode_index))]) / 2
else:
mode = array[mode_index]
print(mode)
mode(array)
def firstQuater(array):
first_index = int(len(array) / 4 - 1)
if len(array) % 4 == 0:
first_mode = ((array[first_index]) + (array[first_index + 1])) / 2
else:
first_mode = array[int(np.ceil(first_index))]
print(first_mode)
firstQuater(array)
def thirdQuater(array):
third_index = int(3 * len(array) / 4 - 1)
if(3 * len(array)) % 4 == 0:
third_mode = ((array[third_index]) + (array[third_index + 1])) / 2
else:
third_mode = array[int(np.ceil(third_index))]
print(third_mode)
thirdQuater(array)
実行結果
[41, 43, 46, 47, 48, 48, 56, 58, 71, 72, 78, 79, 81, 86, 88, 89]
64.5
47.5
80.0
配列を定義してそれを関数にぶち込むだけ。
if文で場合分けしているのは、真ん中の数が一つに定まるかと二つになるかで中央値等の求め方が変わるからです。正直本で公式化されていたので、それをコード化するだけです。
中央値や四分位点の意味はネットで調べてください。
間違い等、ツッコみどころがあったら教えてください。
以上。