今日はいろんな平均についてのお話です。

多分超簡単です。

解説動画はこちら




さて平均と一言で言っても
実はたくさんの種類があり
計算方法も違っています。

ちなみに英語だと
meanとaverageの
二通りの訳し方がありますが

meanは統計学上の平均値をあらわし
averageはそれに加えて
「普通・標準的・平凡」などの意味合いが
含まれる言葉だそうです。

英語で平均値であればmean
一般的な平均的なお店のような場合は
average shop などと訳す感じですかね。


世間一般での平均は
算術平均の事かと思います。

算術平均
算術平均、または相加平均とも言っていて
英語はarithmetic meanです。

算術平均の計算方法としては
集合の総和を集合の要素数で割ったもの

ですね。
例として

55kg , 60kg , 80kgの人の平均体重

を求めるとすると
(55+60+80) / 3 = 65
と言うことになります。

Pythonであれば
numpyライブラリを用いて
以下のように求めることができます。
import numpy as np
data = [55,60,80]
np.mean(data)
65




続いて相乗平均(幾何平均)です。

相乗平均
英語だとgeometric mean

集合の総積の累乗根で
求めることができます。

次のような例があったとします。

ある売り上げが2018年度は10%増加
2019年度は5%増加
2020年度は3%増加したとする。

2018-2020年度にかけて
平均で毎年どれくらい
売上が伸びたと言えるだろうか?

出てきた数値を全てかけて
その個数乗根をとると計算できます。

1.1x1.05x1.03の3乗根

pythonだと次のように
求められます。
from scipy.stats.mstats import gmean
data = [1.1,1.05,1.03]
gmean(data)
1.0595945




調和平均

英語だとharmonic mean
逆数の算術平均の逆数で
計算することができます。

例えば
1kmの道を行きは時速 2 km 
帰りは時速 3 kmで往復したときの平均の速さ

と言う問題の場合
要素の逆数は1/2 , 1/3
これを足し合わせたものの
逆をとる形になります。

2/(1/2+1/3) = 2.4

pythonだとこうなります。
from scipy.stats import hmean
data = [2,3]
hmean(data)
2.4

上記3つの平均は
次のような大小関係になっているようです。

算術(相加)平均 > 相乗(幾何)平均 > 調和平均


加重平均

英語だとweighted arithmetic mean

単に相加平均をとるのでなく
重みを考慮した平均の取り方です。

例として

ある学校のクラスに男子が3人
女子が2人いてテストを行いました。

男子の平均点は60点
女子の平均点は90点です。

クラス全体の平均点は何点でしょうか。

要素x重みの合計を
要素の合計で割ります。

(60*3 + 90*2) / (3+2) = 72

Pythonだとnumpyのaverageメソッドの
weightsの値を加えることで算出できます。
import numpy as np
data , w = [60,90],[3,2]
np.average(data, weights=w)
72


最後に移動平均です。

単純移動平均(SMA)
英語だとSimple Moving Average
直近n個のデータの算術平均の値
時系列データなどでよく用いられる

n日移動平均(SMAn)

当日から遡ったn日分のデータの
算術平均の値です。

次のコードを実行すると
移動平均の値を計算することができます。

url = 'http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year=2020&month=12&day=&view='''
value = pd.read_html(url)[0].iloc[0:,6:7].values
data = [float(d) for d in value]
df = pd.DataFrame(data,columns=['気温'])
df['3日移動平均'] = df['気温'].rolling(3).mean()
df['5日移動平均'] = df['気温'].rolling(5).mean()
df['7日移動平均'] = df['気温'].rolling(7).mean()
df.plot()
plt.show()

download

pandasライブラリのrollingメソッドで
区間を指定し、その平均をmeanメソッドで
算出することができます。

長い区間をとると、より滑らかな
値になるのが見て分かるのでは無いでしょうか。


今回は
平均についてお伝えしました。

統計学ではまず最初に習うのが
この平均の事かと思いますので
また、統計用語について
やっていきたいと思います。

それでは