## Some notes on Linear Filters

Let $\{ X_t \}$ and  $\{ Y_t \}$ be two stationary time series related by:

$X_{t} = M_{n}(L)Y_{t} =\sum_{j=- \infty}^{j=\infty} g_{j}Y_{t-j}$

where

$\sum_{j=- \infty}^{j=\infty}|g_{j}| < \infty$ and  $\sum_{j=- \infty}^{j=\infty}|g_{j}|^2 < \infty$

$\{ X_t \}$ is the filtered version of  $\{ Y_t \}$ and $M_{n}(L)$ is the filter. The effect of a linear filter is to change the importance of various cyclical components of the series and/or induce a shift with regard to the position in time.

Tagged , , ,

## ARIMA spectrum

It is ofter useful to examine time-series from a frequency perspective. Note that  the power spectrum is defined as

$f_{y}(\lambda)=\underbrace{|M(e^{-i\lambda})|^{2}}_{| \Gamma ( \omega) |^{2}}f_{x}(\lambda)$

where

$|M(e^{-i\lambda})|^{2}=g(e^{-i\lambda})$

is the spectral generating function. For ARIMA

$f_{y}(\lambda)= \frac{\sigma}{2 \pi}\frac{|\theta(e^{-i\lambda})|^{2}}{|\phi(e^{-i\lambda})|^{2}}$

The following simple R code generates spectra for ARMA class time series.

spectrums<- function (AR,MA, sigma)
{
n<- length(AR)
m<- length(MA)
AR<- matrix(AR)
AR[-1]<- -AR[-1]
MA<- matrix(MA)
flp<- c()
for (i in 1:100){
TAR<- matrix(exp(0:(n-1)*i*pi/100*1i))
TMA<- matrix(exp(0:(m-1)*i*pi/100*1i))
ARs<- (t(AR)%*%TAR)*Conj(t(AR)%*%TAR)
MAs<- (t(MA)%*%TMA)*Conj(t(MA)%*%TMA)
fl<- 1/(2*pi)*MAs/ARs
flp<-c(flp,fl)
}
Re(c(flp))
}


example:

</pre>
#instruction: spectrums(AR parameters, MA parameters, Variance)

# For AR1 AR=c(1,phi1) MA=c(1), for ARMA(2,2) AR=c(1,phi1,phi2), MA=c(1,theta1, theta2) par(mfrow=c(2,2))

#example ARMA(1,1) phi=0.4, theta=-0.6

plot(spectrums(AR<- c(1,.4),MA<- c(1,-0.6), sigma<-1),ylab="ARMA(0.4,-0.6)", type="l")

#example AR(1) phi=0.5

plot(spectrums(AR<- c(1,.5),MA<- c(1), sigma<-1),ylab="AR1(0.5)", type="l")

#example AR(1) phi=0.8

plot(spectrums(AR<- c(1,.8),MA<- c(1), sigma<-1),ylab="AR1(0.8)", type="l")

#example MA(2) theta1=-0.6, theta2=-0.4

plot(spectrums(AR<- c(1),MA<- c(1,-0.6,-0.4),sigma<-1),ylab="MA2(-0.6,-0.4)", type="l")
<pre>

Note that it is also very  easy to apply a linear filter (or a series of them) to a given time series (or to generate its spectral density function). For example a moving average filter could be applied to a given AR(1) process by executing the following command

2*pi*spectrums(AR<- c(1),MA<- c(1/3,1/3,1/3),sigma<-1)*spectrums(AR<- c(1,-0.8,MA<- c(1),sigma<-1)

and a second difference filter

2*pi*spectrums(AR<- c(1),MA<- c(1,0,-1),sigma<-1)*spectrums(AR<- c(1,-0.8,MA<- c(1),sigma<-1)

Tagged , ,