Double exponential smoothing a.k.a. Holt-Winters smoothing tracks level and trend of a time series in coupled IIRs:
State: Lt,Tt -- level and trend
Out: estimate ˆYt+1
Parameters: a, b (a.k.a. α,β)
Step equations:
Lt=aYt+(1−a)(Lt−1+Tt−1) -- level
Tt=b(Lt−Lt−1)+(1−b)Tt−1 -- trend
ˆYt+1=Lt+Tt
How can I calculate the transfer function of this smoother, for given a and b ?
(Two possible approaches:
- manipulate the step equations into ratio-of-polynomials form
- brute force iterate with input e2πift: converges slowly for small a,b.
The first of these is beyond me, the second unsatisfactory.)
Answer
I would use the Z-transform. Let me change the notation slightly by using n as the discrete time index, lower case letters for time domain quantities, x[n] as the observed input data sequence, and y[n] as the output sequence, which is an estimate of x[n+1]. With this notation, the time domain equations are
l[n]=ax[n]+(1−a)(l[n−1]+t[n−1])t[n]=b(l[n]−l[n−1])+(1−b)t[n−1]y[n]=l[n]+t[n]
Taking the Z-transform of these 3 equations gives
L(z)=aX(z)+(1−a)z−1(L(z)+T(z))T(z)=b(1−z−1)L(z)+(1−b)z−1T(z)Y(z)=L(z)+T(z)
From the second equation in (2) we can express T(z) in terms of L(z):
T(z)=b(1−z−1)1−(1−b)z−1L(z)
Plugging (3) into the first equation of (2), we can express L(z) in terms of X(z):
L(z)[1−(1−a)z−1(1+b(1−z−1)1−(1−b)z−1)]=aX(z)
from which, after some algebra, you get
L(z)=a[1−(1−b)z−1]1+[a(1+b)−2]z−1+(1−a)z−2X(z)
Finally, plugging (3) into the last equation of (2) gives
Y(z)=[1+b(1−z−1)1−(1−b)z−1]L(z)=1+b−z−11−(1−b)z−1L(z)
and combining with (4) results in a relation between the output Y(z) and the input X(z):
Y(z)=a(1+b−z−1)1+[a(1+b)−2]z−1+(1−a)z−2X(z)=H(z)X(z)
where H(z) is the desired transfer function, which is of course a second order IIR filter.
No comments:
Post a Comment