# How to calculate the ACF and PACF for time series

I just started with time series analysis and I would like to know whether there is a formular for calculating the autocorrelation function (ACF) and the partial autocorrelation function (PACF) for time series data. While there are forumlars for 'normal' data points and have not found any for time series. Maybe there is a special algorithm for doing that? I know that it is quite easy to calculate the ACF and PACF using e.g. R or Python. But how is this done? I'd appreciate every comment and will be quite thankful for your help.

## 2 Answers

Well if you mean how to estimate the ACF and PACF, here is how it's done:

1. ACF: In practice, a simple procedure is:

1. Estimate the sample mean: $$\bar{y} = \frac{\sum_{t=1}^{T} y_t}{T}$$
2. Calculate the sample autocorrelation: $$\hat{\rho_j} = \frac{\sum_{t=j+1}^{T}(y_t - \bar{y})(y_{t-j} - \bar{y})}{\sum_{t=1}^{T}(y_t - \bar{y})^2}$$
3. Estimate the variance. In many softwares (including R if you use the acf() function), it is approximated by a the variance of a white noise: $$T^{-1}$$. This leads to confidence intervals that are asymptotically consistent, but the smaller than the actual confidence interval in many cases (leading to a larger probability of Type 1 Error), so interpret theese with caution!

2. PACF: The PACF is a bit more complicated, because it tries to nullify the effects of other order correlations.

It is estimated via a set of OLS regressions: $$y_{t,j} = \phi_{j,1} y_{t-1} + \phi_{j,2} y_{t-2} + ... + \phi_{j,j} y_{t-j} + \epsilon_t$$ And the coefficient you want is the $$\phi_{j,j}$$, estimated via OLS with the standard $$\hat{\beta} = (X'X)^{-1}X'Y$$ coefficients.

So, for example, if you would like the first order PACF: $$y_{t,1} = \phi_{1,1} y_{t-1} + \epsilon_t$$ and the coefficient you want is the $$\hat{\phi_{1,1}}$$ given by OLS: $$\hat{\phi_{1,1}}=\frac{Cov(y_{t-1},y_t)}{Var(y_t)}$$ (assuming weak stationarity).

The second order PACF would be the $$\phi_{2,2}$$ coefficient of: $$y_{t,2} = \phi_{2,1} y_{t-1} + \phi_{2,2} y_{t-2} + \epsilon_t$$

And so on.

Good references on this are Enders (2004) and Hamilton (1994).

• Also, notice that the above mentioned problem with the variance of the ACF is not a problem per se due to consistency, but it's something to bear in mind: if an autocorrelation for, say, lag k is "just out" of the confidence interval, it could be that it would be inside such interval had the variance been correctly estimated. Notice that this is more the case as k increases in order. Oct 27 '20 at 14:50
• Hi Peter, what I was saying is that most softwares will use the variance of a white noise to estimate the variance of the ACF, which is $T^{-1}$. The real correct variance will depend on the type of model the data follows, and that's why they use the white noise. It's the reason you see a linear confidence interval when estimating the ACF in R (for e.g), when the real variance is not linear. Oct 28 '20 at 17:23
• Thanks Caio for your answer. My question was targeting your formula for step 2 for calculating the ACF. I do not see a variance symbol there so how does the variance impact the values of the ACF? Oct 28 '20 at 17:25
• Let me rewrite that: notice that what I have written is the same as: $\hat{\rho_j} = \frac{Cov(y_t,y_{t-j})}{Var(y_t)}$, when written in sample terms: $\hat{\rho_j} = \frac{\frac{\sum_{t=j+1}^{T}(y_t - \bar{y})(y_{t-j} - \bar{y})}{T}}{\frac{\sum_{t=1}^{T}(y_t - \bar{y})^2}{T}}$, and the denominator is the variance. Oct 28 '20 at 17:30
• Yes, that is correct. Oct 28 '20 at 18:35

By definition, a ACF is $$\gamma_j := E[(Y_{t}-\mu)(Y_{t-j}-\mu)]$$ (for covariance) and the is $$\rho_j := \frac{\gamma_j}{\gamma_0}$$ (for correlation). For a closed formula wrote in function of parameters and such, you need to specify the model that you have (if you say what's your model, i can tell you how to get that formula). For example, the ACF for an MA(1) is:

As for the PACF, you want the correlation after having controlled for the other lags in the model, so you need to use OLS, so PACF is defined as the $$\beta_j$$ on $$Y_t = \beta_0 + \beta_1Y_{t-1} + ... + \beta_jY_{t-j} + u_t$$.

For using the data of your time series to calculate the amostral counterpart of those statistics (without having to set a model as what i presented untill now), first you need to assume that your series is at least weakly stationary and ergodic, which in loose terms is like saying that the series "will not change its statistical properties with time", so that the values of the series that you observe can be meaningful to the process behind it. Obs: This is a more formal thing about statistics, ideally you should try to learn what exactly those things mean and how to see when you can make that assumption and when you can't, but it's best to ask that in another post.

Then, you can get $$\gamma_j$$ and $$\rho_j$$ by the formula present in the most upvoted answer in ACF and PACF Formula. And for the PACF, there is a sistem of equations that connect the ACF correlations to it, known as the Levinson recursion (which also is explained in that answer).

• Thanks Ricardo for your answer. But how can I calculate them when having time series? How do I determine the 'mue' for the ACT and how the 'Gamma_j' and 'Gamma_0' for the PACF. Oct 27 '20 at 13:02
• @Richardo The answer you link to has an error in the formula for the sample ACF (as I to no avail have pointed out in the comments to that answer). Oct 27 '20 at 13:09
• I'll be editing my answer to make it more complete. As for the link, didn't the OP for that answer corrected the error you pointed out? Oct 27 '20 at 13:11
• No, @javlacalle didn't do that Oct 27 '20 at 13:13
• He added the squares in the denominator, so that the root can't be of a negative value, but it's still incorrect? Oct 27 '20 at 13:19