標準偏差の気持ち
標準偏差の前に理解しておくと良いことがあります。
平均と分散です。
平均(算術平均)とは、要素の総和を要素数で割った結果のことですね。
$$ \frac{1}{n} \sum_{j=1}^{n} x_j $$
これです。では分散はというと、
$$ \frac{1}{n} \sum_{j=1}^{n} (x_j - \bar{x})^2 $$
$\frac{1}{n} \sum_{j=1}^{n}$の右側が、平均では$x_j $で、分散では$(x_j - \bar{x})^2 $になってます。「(各要素) - (要素全体の平均)」の2乗の総和を要素数で割ったものが分散です。つまり、一個一個の要素が、平均に比べてどれだけ離れているかを調べて(負の値になったものを足さないようにするために2乗します)、その平均値を出しているということになります。
分散は要素の散らばり具合を調べる指標になりますね。
ここまでくれば標準偏差がわかります。
標準偏差は、
$$ \sqrt[2]{\frac{1}{n} \sum_{j=1}^{n} (x_j - \bar{x})^2} $$
です。つまり分散の平方根です。
なぜ平方根にするかというと、分散が2乗しているからです。分散を平方根にすることで、平均値からどれだけずれているかを把握することができます。
たとえば分散が100であれば、標準偏差が10になるので、平均値から平均的に10ばらついているということになります。
Pythonで実装してみましょう
import numpy as np
np.random.seed(seed=0)
nums = np.random.randint(0,100,10)
nums
array([44, 47, 64, 67, 67, 9, 83, 21, 36, 87])
平均(算術平均)$ \frac{1}{n} \sum_{j=1}^{n} x_j $は
(1/len(nums)) * sum(nums)
52.5
そして分散$ \frac{1}{n} \sum_{j=1}^{n} (x_j - \bar{x})^2 $は
(1/len(nums)) * sum((nums - (1/len(nums)) * sum(nums))**2)
593.25
標準偏差は$ \sqrt[2]{\frac{1}{n} \sum_{j=1}^{n} (x_j - \bar{x})^2} $
np.sqrt((1/len(nums)) * sum((nums - (1/len(nums)) * sum(nums))**2))
24.3567239176372
ということで、この十個の数値は52.5という平均値をとり、その平均値から平均的に24.4程度ばらついているということになります。