指数平滑化、移動平均、重み付き移動平均

出典: 竹内寿一郎 JAPLA 2003
論文:重心動揺データの平滑化についてーその1
指数平滑、移動平均、重み付き移動平均
PDF
Script
takeuchi_2003_02.ijs(J8)
  1. 指数平滑化
  2. 移動平均、スペンサー移動平均、ヘンダーソン移動平均

指数平滑化

数式  
\[ F_{t+1}=\alpha X_{i}+(1-\alpha ) \times F_{t} \]
Examples
 data=:+/\(-+/%#)?20#10
  plot data,: 0.7 expsm data
 
 
Plot
  1. red is smoothing
  2. alpha is 0.7
Script
NB. exponential smoothing
expsm=:4 : 0
y0=.({.@],])y
i=.0
sr=:Fr=:{.y0
label_L1.
if.(#y)<:i=.>:i do. goto_OWARI. end.
Fr=:((1-x)*Fr)+x*i{y
sr=:sr,Fr
goto_L1.
label_OWARI.
)

単純移動平均

Example
plot data ,: 3 mmave data
Script
mave=:+/\%[
mmave=:[mave((<.@-:@[)#{.@]),],(<.@-:@[)#{:@]

スペンサー移動平均、ヘンダーソン移動平均

  1. Spencer moving average
    US.センサス局法X10で用いられている
    重み:(-3, -6, -5, 3, 21, 46, 67, 74, 67, 46, 21, 3, -5, -6, -3)/320
    Example
    plot data,: spencer data
    Script
    wts=:(|.,}.)74 67 46 21 3 _5 _6 _3%320
    locspen=:(+/ .*)&wts
    spencer=:15"_ locspen\(7:#{.),],7:#{:
    
  2. Henderson moving average
    X11で使われている。仕組みは論文参照
    Example
    plot data,:   7 henderson data
    Script
    NB. Henderson Moving Average
    hpnt=:4 : 0
    m=:-:x+3
    nm=:315*(((m-1)^2)-*:y)*((m^2)-*:y)*(((m+1)^2)-*:y)*(((3**:m)-16)-11**:y)
    hi=:nm%8*m*((m^2)-1)*((4**:m)-1)*((4**:m)-9)*((4**:m)-25)
    )
    
    henderson=:4 : 0
    wt=:x hpnt i:-:<:x
    x(+/ .*)&wt\((<.@-:x)#{.y),y,(<.@-:x)#{:y
    )