gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

歪度と尖度の逐次計算

f:id:grnishi:20180402011537j:plain

はじめに

どうも。プログラマのgrnishiです。2018年度が始まりました。

今年の抱負なんてものを語るにはちょうど良い時期です。

昨年から始めたエンジニアブログですが、あまり書けなかった事もありますので、今年は月2本×12ヶ月-忙しくて書けない=20本ぐらいを目標にしようかと思います(弱気)

本題

表題にも書いた通りなのですが、平均と分散については逐次計算の式がググれば転がってるのですぐなのですが、歪度、尖度の逐次計算の式が探したがありませんでした(ググる力低)

無いのなら自分で導出する以外に方法が無いので仕方無いです。誰が喜ぶかわかりませんが一応ここに書いておきます。

そもそもなぜこんなものが必要なのかといいますと、データが100個とか1000個なら問題無いのですが、1億個とか10億個になってくるとメモリに乗らないんですよね。

そういうわけで、メモリもあまり使わずに効率よく求める手段が必要な人には多少需要があるのかなと。

ちなみに歪度は

http://ja.wikipedia.org/wiki/%E6%AD%AA%E5%BA%A6ja.wikipedia.org

尖度は

http://ja.wikipedia.org/wiki/%E5%B0%96%E5%BA%A6ja.wikipedia.org

あたりを参考にすると良いでしょう。

一般的な統計量の計算

データ列 \begin{align*} x = \left( x_1, x_2, x_3, \cdots x_N \right) \end{align*} 平均 \begin{align*} \mu = \frac{1}{N}\sum_{i=0}^{N} x_i \end{align*}

分散 \begin{align*} \sigma = \frac{1}{N}\sum_{i=0}^{N} \left( x_i - \bar{ x } \right)^{2} \end{align*}

歪度 \begin{align*} S = \frac{\frac{1}{N}\displaystyle \sum_{i=0}^{N} \left( x_i - \bar{ x } \right)^{3}}{ \sigma^{3}} \end{align*}

尖度 \begin{align*} K = \frac{\frac{1}{N}\displaystyle \sum_{i=0}^{N} \left( x_i - \bar{ x } \right)^{4}}{ \sigma^{4}} \end{align*}

平均、分散の逐次計算

こちらに詳細に載っていました。

mathwords.net

歪度の逐次計算

データ列 \begin{align*} x = \left( x_1, x_2, x_3, \cdots x_n + x_{n+1} \right) \end{align*} の歪度は

\begin{eqnarray} S_{n+1} = \frac{\frac{1}{n+1}\displaystyle \sum_{i=0}^{n+1} \left( x_i - \bar{ x } \right)^{3}}{ \sigma_{ n + 1 }^{3}} \end{eqnarray}

\begin{eqnarray} E\lbrack\left(X-\bar{X} \right)^{3}\rbrack &=& E\lbrack X^{3}\rbrack - 3\mu E\lbrack X^{2} \rbrack + 3\mu^{2} E\lbrack X \rbrack - \mu_{3} \\ &=& E\lbrack X^{3}\rbrack - 3\mu ( \sigma^{2} + \mu^{2} ) + 2\mu^{2} \\ &=& E\lbrack X^{3}\rbrack - 3\mu\sigma^{2} - \mu^{3} \\ &=& E\lbrack X^{3}\rbrack - \mu(3\sigma^{2} - \mu^{2}) より\\ E\lbrack X^{3}\rbrack &=& S\sigma^{3} + \mu(3\sigma^{2} + \mu^{2}) \end{eqnarray}

元の式を変形していく \begin{eqnarray} S_{n+1} &=& \frac{\frac{1}{n+1}\displaystyle \sum_{i=0}^{n+1} \left( x_i - \bar{ x } \right)^{3}}{ \sigma_{ n + 1 }^{3}} \\ &=& \frac{\frac{x_1^{3} + x_2^{3} + x_3^{3} + \cdots + x_{n}^{3} + x_{n+1}^{3}}{n+1}- \mu_{n+1}(3\sigma_{n+1}^{2} + \mu_{n+1}^{2})}{\sigma_{n+1}^{3}} \\ &=& \frac{\frac{\frac{n(x_1^{3} + x_2^{3} + x_3^{3} + \cdots + x_{n}^{3})}{n} + x_{n+1}^{3}}{n+1}- \mu_{n+1}(3\sigma_{n+1}^{2} + \mu_{n+1}^{2})}{\sigma_{n+1}^{3}} \\ &=& \frac{\frac{n E\lbrack X^{3} \rbrack + x_{n+1}^{3}}{n+1}- \mu_{n+1}(3\sigma_{n+1}^{2} + \mu_{n+1}^{2})}{\sigma_{n+1}^{3}} \\ &=& \frac{\frac{n (S_{n}\sigma^{3} + \mu(_{n}3\sigma_{n}^{2} + \mu_{n}^{2})) + x_{n+1}^{3}}{n+1}- \mu_{n+1}(3\sigma_{n+1}^{2} + \mu_{n+1}^{2})}{\sigma_{n+1}^{3}} \\ \end{eqnarray}

というわけです

尖度の逐次計算

データ列 \begin{align*} x = \left( x_1, x_2, x_3, \cdots x_n + x_{n+1} \right) \end{align*} の尖度は

\begin{eqnarray} K_{n+1} = \frac{\frac{1}{n+1}\displaystyle \sum_{i=0}^{n+1} \left( x_i - \bar{ x } \right)^{4}}{ \sigma_{ n + 1 }^{4}} \end{eqnarray}

\begin{eqnarray} E\lbrack\left(X-\bar{X} \right)^{4}\rbrack &=& E\lbrack X^{4}\rbrack - 4\mu E\lbrack X^{3} \rbrack + 6\mu^{2} E\lbrack X^{2} \rbrack - 4\mu^{3} E\lbrack X \rbrack + \mu^{4} \\ &=& E\lbrack X^{4}\rbrack - 4\mu ( S\sigma^{3} + \mu(3\sigma^{2}+\mu^{2}) ) + 6\mu^{2}(\sigma^{2} + \mu^{2}) - 3\mu^{4} \\ &=& E\lbrack X^{4}\rbrack - 4S\mu\sigma^{3} - 4\mu^{2}(3\sigma^{2}+\mu^{2}) + 6\mu^{2}\sigma^{2} + 6\mu^{4} - 3\mu^{4} \\ &=& E\lbrack X^{4}\rbrack - 4S\mu\sigma^{3} - 12\mu^{2}\sigma^{2} - 4\mu^{4} + 6\mu^{2}\sigma^{2} + 6\mu^{4} - 3\mu^{4} \\ &=& E\lbrack X^{4}\rbrack -4S\mu\sigma^{3} - 6\mu^{2}\sigma^{2} - \mu^{4} より\\ E\lbrack X^{4}\rbrack &=& K\sigma^{4} + 4S\mu\sigma^{3} + 6\mu^{2}\sigma^{2} + \mu^{4} \end{eqnarray}

元の式を変形していく \begin{eqnarray} K_{n+1} &=& \frac{\frac{1}{n+1}\displaystyle \sum_{i=0}^{n+1} \left( x_i - \bar{ x } \right)^{4}}{ \sigma_{ n + 1 }^{4}} \\ &=& \frac{\frac{x_1^{4} + x_2^{4} + x_3^{4} + \cdots + x_{n}^{4} + x_{n+1}^{3}}{n+1}- 4S_{n+1}\mu_{n+1}\sigma_{n+1}^{3} - 6\mu_{n+1}^{2}\sigma_{n+1}^{2} - \mu_{n+1}^{4}}{\sigma_{n+1}^{4}} \\ &=& \frac{\frac{\frac{n(x_1^{4} + x_2^{4} + x_3^{4} + \cdots + x_{n}^{4})}{n} + x_{n+1}^{4}}{n+1}- 4S_{n+1}\mu_{n+1}\sigma_{n+1}^{3} - 6\mu_{n+1}^{2}\sigma_{n+1}^{2} - \mu_{n+1}^{4}}{\sigma_{n+1}^{4}} \\ &=& \frac{\frac{n E\lbrack X^{4} \rbrack + x_{n+1}^{4}}{n+1}- 4S_{n+1}\mu_{n+1}\sigma_{n+1}^{3} - 6\mu_{n+1}^{2}\sigma_{n+1}^{2} - \mu_{n+1}^{4}}{\sigma_{n+1}^{4}} \\ &=& \frac{\frac{n (K_{n}\sigma_{n}^{4} + 4S_n\mu_n\sigma_n^{3} + 6\mu_n^{2}\sigma_n^{2} + \mu_n^{4}) + x_{n+1}^{3}}{n+1}- 4S_{n+1}\mu_{n+1}\sigma_{n+1}^{3} - 6\mu_{n+1}^{2}\sigma_{n+1}^{2} - \mu_{n+1}^{4}}{\sigma_{n+1}^{4}} \\ \end{eqnarray}

というわけです

さいごに

だれか数式をエレガントに変形してください。

あと真面目に検算やってないので間違えていたらごめんなさい。