# AR/MA, ARMA Acf - Pacf Visualizations

As mentioned in previous post, I have been working with Autoregressive and Moving Average simulations.
To test the correctness of estimations by our simulations, we employ acf(Autocorrelation) and pacf(partial autocorrelation) to our use. For different order of AR and MA, we get the varying visualizations with them, such as:

• Exponential decreasing curves.
• Damped sine waves.
• Positive and negative spikes, etc.

While analyzing and writing tests for same, I also took some time to visualize that data on ilne and bar charts to get a clearer picture:

## AR(1) process

AR(1) process is the autoregressive simulation with order p = 1, i.e, with one value of phi.
Ideal AR(p) process is represented by:

To simulate this, install `statsample-timeseries` from here.

Here, number of observations, n = 1500 (greater value is preferrable for best fit), p = 1, with phi = [0.9].

### ACF

To generate it’s autocorrelation

For an AR(1) process, `acf` must exponentially decay if `phi > 0`, or alternate in sign if `phi < 0`Ref. Go through the analysis above. It can be visualized as:
When `phi > 0`, acf decreases exponentially:

When `phi < 0`, you get the alternate acf lags:

### PACF

To generate it’s partial autocorrelation:

For AR(1) process, `pacf` must have a spike at lag 1, then 0. Former spike must be positive if `phi > 0`, otherwise, negative spike. Have a look at the pacf series generated above. On visualizing the data:
When `phi > 0`, positive lag at 1 and 0(contains 1.0):

When `phi < 0`, negative lag at 1:

Here is the representation of ideal acf-vs-pacf for positive phi in AR(1):

## AR(P) process

Simulation of AR(p) process is similar as AR(1).

### ACF

For AR(p), `acf` must give a damping sine wave. The pattern is greatly dependent on the value and sign of phi parameters.
When positive content in phi coefficients is more, you will get a sine wave starting from positive side, else, sine wave will start from negative side.
Notice, the damping sine wave starting from positive side here:

and negative side here..

### PACF

`pacf` gives spike at lag 0(value = 1.0, default) and from lag 1 to lag k. The example above, features AR(2) process, for this, we must get spikes at lag 1 - 2 as:

## MA(1) process

MA(1) process is the moving average simulation with order `q = 1`, i.e, with one value of `theta`.
To simulate this, use `ma_sim` method from `Statsample::ARIMA::ARIMA`

For `theta > 0`, for `MA(1)`, we must get a positive spike at lag 1 as:
For `theta < 0`, the spike at lag 1 must be in negatie direction as:

When I put these two visualizations aside each other, the visualization seems quite fit:

## MA(q) process

MA(q) process. `Order = q` => Number of theta coefficients = q.
Ideal MA(q) process is represented by:

### ACF

Similar to AR(1) simulation, it will have spikes for lag 1 - lag p as :

### PACF

In pacf of MA(q) simulation, we observe exponentially decaying/damping sine wave.

## ARMA(p, q) process

ARMA(p, q) is combination of autoregressive and moving average simulations.
When `q = 0`, the process is called as pure autoregressive process; when `p = 0`, the process is purely moving average.
The simulator of ARMA can be found as `arma_sim` in `Statsample::ARIMA::ARIMA`.
For `ARMA(1, 1)` process, here are the comparisons of the visualizations from `R` and this code, which just made my day :)

Quite Fit!

Cheers,
- Ankur Goel