実効湿度
気象では実効湿度 Effective Humidity というものがあります。火災予防のため、木材の実効的水分含有量を模するものだそうで、次のように計算されます。
$H_e(t) = \left(1-r \right) \left[ H(t) + r H(t-1) + r^2 H(t-2) + ... \right]$
ここで $H(t)$ は日付 $t$ の平均湿度、計数は通例 $r = 0.7$ が用いられます(出典:たとえば https://doi.org/10.2480/agrmet.25.123 )。
この関数形は、過去の乾燥も次第に弱まる重みをつけて評価すべき、という発想によるのでしょうが、数値的利点もあります。
まず、次のように変形できて、過去の履歴を保存していなくても、前日の実効湿度と今日の平均湿度だけあれば計算できます。コンピュータでいうとメモリ・ストレージ・入出力帯域が大変節約できるアルゴリズムです。
$H_e(t) = (1-r)\left[ H(t) + r H_e(t-1) \right] $
もうひとつの長所として、立ち上げが早く障害にも強いのですよね。なんらかの事情で観測が中断したとき、復帰翌日には $H_e(t-1) \approx H(t-1)$ と近似してしまえば、次の日から実効湿度算出が復帰できます。これって2日前の未知の値を適当に推測したことになるわけですが、相対湿度の variability (テキトーな値で代替した誤差)がたとえば 30% としたら、2日前に推測したことによる誤差は $a^2\cdot 30 % = 14%$ に留まり、数日のうちに実用的に問題ない誤差に縮小していきます。
ロードアベレージも同じ算法
同じ算法がロードアベレージの計算にも使われています。これは特に、省メモリ・省エネというところで選ばれているのだと考えます。
Load Average はどうやって算出されているのか - TechScore Blog
https://www.techscore.com/blog/2017/12/08/how_is_load_average_calculated/
ロードアベレージは通例「1分、5分、15分間の平均」と説明されるのですが、それは係数を累乗していって $1/e$ になる期間、上の $r$ を使っていうと $-1/\log(r)$ であることがわかります。
同じ要領でいうと、実効湿度は $-1/\log(0.7) = 2.80367$ 日平均であるわけです。
指数移動平均というらしい
さてこの算法を一般に何と言うかわからないので長年不便に思っていたのですが、指数移動平均というようです。
下添、工学ですから省メモリは当然挙げてあるとともに、単なる移動平均とくらべて、遅延が小さい(例としてインディシャル応答の立ち上がりが早い)ことを評価しているように見えます。
引用文献
Masao KUSAKABE, Effective Humidity at Fukuoka, Journal of Agricultural Meteorology, 1969-1970, Volume 25, Issue 2, Pages 123-126, Released on J-STAGE February 25, 2010, Online ISSN 1881-0136, Print ISSN 0021-8588, , https://www.jstage.jst.go.jp/article/agrmet1943/25/2/25_2_123/_article/-char/en