累積平均公式の導出
公式
与えられたサンプル $x_{1} , \cdots , x_{n}$ の標本平均が $y_{n}$ だとするなら、サンプル $x_{n+1}$ が新たに与えられた時の全体の標本平均 $y_{n+1}$ は以下の通りだ。 $$ y_{n+1} := {{ n } \over {n + 1}} y_{n} + {{1} \over {n+1}} x_{n+1} $$
説明
累積平均cummulative Averageは、移動平均moving Averageやランニングアベレージrunning Averageとも呼ばれる。
誰もが中学時代に一度は犯すことができる間違いだが、私はテストの採点をする際に、途中であらかじめ求めた平均をそのまま他の科目にぶち込んで平均を出していた。(この時、将来統計学を専攻するとは夢にも思わなかった。)たとえば、国語、英語がそれぞれ90, 80点で、まだ数学を採点していないとしよう。この時点での私の平均は $$ y_{2} = (90+80)/2 = 85 $$ で、数学を70点受けたら、全体の平均は $$ y_{3} = (90+80+70)/3 = 80 $$ でなければならないが、ただ $$ (85 + 70)/2 = 77.5 $$ 点で計算した。正確な理由はわからないが、全体を全部足して割ることと、ただひたすら1科目ずつぶち込んで平均を出す方法には違いがあることを知った後は、いつも最初から全部足して割った。ブログで紹介された公式は、正確にその愚かな行為を防ぐ方法である。数字をもう一度全部解き直して計算するのでなく、ただ既存の平均と新しいデータに $n, 1$ を乗じる加重平均weighted Averageを求めればいい。
大したことないように見えるが、意外と多くの非専門家がこの公式を知らずに似たような間違いを犯しており、データストリームdata Streamといったものを扱う人工知能分野などで、何の説明もなく突如登場することもある。この時、累積平均の公式の役割は主に、新しいデータが提供された時に、効率的に学習に関連した数値を更新することだ。
導出
$$ \begin{align*} y_{n+1} =& {{ x_{1} + \cdots + x_{n} + x_{n+1} } \over {n + 1}} \\ =& {{ n {{x_{1} + \cdots + x_{n}} \over {n}} + x_{n+1} } \over {n + 1}} \\ =& {{ n y_{n} + x_{n+1} } \over {n + 1}} \end{align*} $$
■