Forward Predictor
Suppose we have series x [ t ] x[t] x [ t ] and we want to predict the next values using the previous m m m observations. This problem is written as
x [ t ] = − ∑ i = 1 m a i x [ t − i ] + f [ t ] \begin{align*} x[t] = -\sum_{i=1}^m a_i x[t-i] + f[t] \end{align*} x [ t ] = − i = 1 ∑ m a i x [ t − i ] + f [ t ]
where f [ t ] f[t] f [ t ] is the forward error predictor. Note that a i a_i a i corresponds to the coefficient on the observation that is i i i time-steps before x [ t ] x[t] x [ t ] .
This premise leads to the following matrix formulation:
x = A h + f [ x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] ] = [ x [ m ] x [ m − 1 ] … x [ 1 ] x [ m + 1 ] x [ m ] … x [ 2 ] ⋮ ⋮ ⋱ ⋮ x [ N − 1 ] x [ N ] … x [ N − m ] ] [ − a 1 − a 2 ⋮ − a m ] + [ f [ m + 1 ] f [ m + 2 ] ⋮ f [ N − 1 ] ] \begin{align*} \pmb x &= A\pmb h + \pmb f \\ \begin{bmatrix}x[m+1] \\ x[m+2] \\ \vdots \\ x[N]\end{bmatrix} &= \begin{bmatrix} x[m] & x[m-1] & \dots & x[1] \\ x[m+1] & x[m] & \dots & x[2] \\ \vdots & \vdots & \ddots & \vdots \\ x[N-1] & x[N] & \dots & x[N-m] \end{bmatrix} \begin{bmatrix}-a_1 \\ -a_2 \\ \vdots \\ -a_m\end{bmatrix} + \begin{bmatrix}f[m+1] \\ f[m+2] \\ \vdots \\ f[N-1] \end{bmatrix} \end{align*} x x ⎣ ⎡ x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] ⎦ ⎤ = A h h + f f = ⎣ ⎡ x [ m ] x [ m + 1 ] ⋮ x [ N − 1 ] x [ m − 1 ] x [ m ] ⋮ x [ N ] … … ⋱ … x [ 1 ] x [ 2 ] ⋮ x [ N − m ] ⎦ ⎤ ⎣ ⎡ − a 1 − a 2 ⋮ − a m ⎦ ⎤ + ⎣ ⎡ f [ m + 1 ] f [ m + 2 ] ⋮ f [ N − 1 ] ⎦ ⎤
Backward Predictor
Using the same data as before, we're now interested in predicting the preceeding values using m m m future values. Due flipping the order, we write this problem using the complex conjugate.
x ‾ [ t ] = − ∑ i = 1 m a i x ‾ [ t + i ] + b ‾ [ t ] \begin{align*} \overline x[t] = -\sum_{i=1}^m a_i \overline x[t+i] + \overline b[t] \end{align*} x [ t ] = − i = 1 ∑ m a i x [ t + i ] + b [ t ]
where b [ t ] b[t] b [ t ] is the backward error predictor. Note that a i a_i a i corresponds to the coefficients on the observation that is i i i time-steps after x [ t ] x[t] x [ t ] .
Sampling a various values of t t t we obtain a system of equations that can be written in matrix form as
x ‾ = A ‾ h + b ‾ [ x ‾ [ 1 ] x ‾ [ 2 ] ⋮ x [ N − m ] ] = [ x ‾ [ 2 ] x ‾ [ 3 ] … x ‾ [ m + 1 ] x ‾ [ 3 ] x ‾ [ 4 ] … x ‾ [ m + 2 ] ⋮ ⋮ ⋱ ⋮ x ‾ [ N − m + 1 ] x ‾ [ N − m + 2 ] … x ‾ [ N ] ] [ − a 1 − a 2 ⋮ − a m ] + [ b ‾ [ 1 ] b ‾ [ 2 ] ⋮ b ‾ [ N − m ] ] \begin{align*} \overline{\pmb x} &= \overline A \pmb h + \overline{\pmb b} \\ \begin{bmatrix}\overline x[1] \\ \overline x[2] \\ \vdots \\ x[N-m]\end{bmatrix} &= \begin{bmatrix}\overline x[2] & \overline x[3] & \dots & \overline x[m+1] \\ \overline x[3] & \overline x[4] & \dots & \overline x[m+2] \\ \vdots & \vdots & \ddots & \vdots \\ \overline x[N-m+1] & \overline x[N-m+2] & \dots & \overline x[N]\end{bmatrix} \begin{bmatrix}-a_1 \\ -a_2 \\ \vdots \\ -a_m\end{bmatrix} + \begin{bmatrix} \overline b[1] \\ \overline b[2] \\ \vdots \\ \overline b[N-m] \end{bmatrix} \end{align*} x x ⎣ ⎡ x [ 1 ] x [ 2 ] ⋮ x [ N − m ] ⎦ ⎤ = A h h + b b = ⎣ ⎡ x [ 2 ] x [ 3 ] ⋮ x [ N − m + 1 ] x [ 3 ] x [ 4 ] ⋮ x [ N − m + 2 ] … … ⋱ … x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] ⎦ ⎤ ⎣ ⎡ − a 1 − a 2 ⋮ − a m ⎦ ⎤ + ⎣ ⎡ b [ 1 ] b [ 2 ] ⋮ b [ N − m ] ⎦ ⎤
Forward-Backward Linear Predictor
The insight for the FBLP predictor is seeing that we can stack these A A A matrices to find a lower variance estimate of h \pmb h h h . The assumption being that the relationship is symmetrical.
By this, I mean that the coefficient a a a in the expression a x [ t ] + f [ t ] = x [ t + 1 ] a x[t] + f[t] = x[t+1] a x [ t ] + f [ t ] = x [ t + 1 ] is the same as the coefficient a a a found in the expression a x [ t + 1 ] + b [ t + 1 ] = x [ t ] a x[t+1] + b[t+1] = x[t] a x [ t + 1 ] + b [ t + 1 ] = x [ t ] .
Now we simply stack the the two A A A matrices and x \pmb x x x matrices to get
[ x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] x ‾ [ 1 ] x ‾ [ 2 ] ⋮ x [ N − m ] ] = [ x [ m ] x [ m − 1 ] … x [ 1 ] x [ m + 1 ] x [ m ] … x [ 2 ] ⋮ ⋮ ⋱ ⋮ x [ N − 1 ] x [ N ] … x [ N − m ] x ‾ [ 2 ] x ‾ [ 3 ] … x ‾ [ m + 1 ] x ‾ [ 3 ] x ‾ [ 4 ] … x ‾ [ m + 2 ] ⋮ ⋮ ⋱ ⋮ x ‾ [ N − m + 1 ] x ‾ [ N − m + 2 ] … x ‾ [ N ] ] [ − a 1 − a 2 ⋮ − a m ] + [ f [ m + 1 ] f [ m + 2 ] ⋮ f [ N − 1 ] b ‾ [ 1 ] b ‾ [ 2 ] ⋮ b ‾ [ N − m ] ] \begin{align*} \begin{bmatrix}x[m+1] \\ x[m+2] \\ \vdots \\ x[N] \\ \overline x[1] \\ \overline x[2] \\ \vdots \\ x[N-m]\end{bmatrix} = \begin{bmatrix} x[m] & x[m-1] & \dots & x[1] \\ x[m+1] & x[m] & \dots & x[2] \\ \vdots & \vdots & \ddots & \vdots \\ x[N-1] & x[N] & \dots & x[N-m] \\ \overline x[2] & \overline x[3] & \dots & \overline x[m+1] \\ \overline x[3] & \overline x[4] & \dots & \overline x[m+2] \\ \vdots & \vdots & \ddots & \vdots \\ \overline x[N-m+1] & \overline x[N-m+2] & \dots & \overline x[N] \end{bmatrix} \begin{bmatrix}-a_1 \\ -a_2 \\ \vdots \\ -a_m\end{bmatrix} + \begin{bmatrix} f[m+1] \\ f[m+2] \\ \vdots \\ f[N-1] \\ \overline b[1] \\ \overline b[2] \\ \vdots \\ \overline b[N-m] \end{bmatrix} \end{align*} ⎣ ⎡ x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] x [ 1 ] x [ 2 ] ⋮ x [ N − m ] ⎦ ⎤ = ⎣ ⎡ x [ m ] x [ m + 1 ] ⋮ x [ N − 1 ] x [ 2 ] x [ 3 ] ⋮ x [ N − m + 1 ] x [ m − 1 ] x [ m ] ⋮ x [ N ] x [ 3 ] x [ 4 ] ⋮ x [ N − m + 2 ] … … ⋱ … … … ⋱ … x [ 1 ] x [ 2 ] ⋮ x [ N − m ] x [ m + 1 ] x [ m + 2 ] ⋮ x [ N ] ⎦ ⎤ ⎣ ⎡ − a 1 − a 2 ⋮ − a m ⎦ ⎤ + ⎣ ⎡ f [ m + 1 ] f [ m + 2 ] ⋮ f [ N − 1 ] b [ 1 ] b [ 2 ] ⋮ b [ N − m ] ⎦ ⎤