Accelerating the pace of engineering and science

• Trials

# autocorr

Sample autocorrelation

## Syntax

• acf = autocorr(y) example
• acf = autocorr(y,numLags) example
• acf = autocorr(y,numLags,numMA,numSTD) example
• [acf,lags,bounds] = autocorr(___) example

## Description

example

autocorr(y) plots the sample autocorrelation function (ACF) of the univariate, stochastic time series y with confidence bounds.

example

autocorr(y,numLags) plots the ACF, where numLags indicates the number of lags in the sample ACF.

example

autocorr(y,numLags,numMA,numSTD) plots the ACF, where numMA specifies the number of lags beyond which the theoretical ACF is effectively 0, and numSTD specifies the number of standard deviations of the sample ACF estimation error.

example

acf = autocorr(y) returns the sample ACF of the univariate, stochastic time series y.

example

acf = autocorr(y,numLags) returns the ACF, where numLags specifies the number of lags in the sample ACF.

example

acf = autocorr(y,numLags,numMA,numSTD) returns the ACF, where numMA specifies the number of lags beyond which the theoretical ACF is effectively 0, and numSTD specifies the number of standard deviations of the sample ACF estimation error.

example

[acf,lags,bounds] = autocorr(___) additionally returns the lags (lags) corresponding to the ACF and the approximate upper and lower confidence bounds (bounds), using any of the input arguments in the previous syntaxes.

## Examples

expand all

### Plot the Autocorrelation Function of a Time Series

Specify the MA(2) model:

where is Gaussian with mean 0 and variance 1.

rng(1); % For reproducibility
Mdl = arima('MA',{-0.5 0.4},'Constant',0,'Variance',1)

Mdl =

ARIMA(0,0,2) Model:
--------------------
Distribution: Name = 'Gaussian'
P: 0
D: 0
Q: 2
Constant: 0
AR: {}
SAR: {}
MA: {-0.5 0.4} at Lags [1 2]
SMA: {}
Variance: 1


Simulate 1000 observations from Mdl.

y = simulate(Mdl,1000);


Compute the ACF.

[ACF,lags,bounds] = autocorr(y,[],2);
bounds

bounds =

0.0843
-0.0843



[] tells the software to return the default number of lags (20). numMA = 2 indicates that the ACF is effectively 0 after the second lag. bounds displays (-0.0843, 0.0843), which are the upper and lower confidence bounds.

Plot the ACF.

autocorr(y)


The ACF cuts off after the second lag. This behavior indicataes an MA(2) process.

### Specify More Lags for the ACF Plot

Specify the mutliplicative seasonal ARMA model:

where is Gaussian with mean 0 and variance 1.

Mdl = arima('AR',{0.75,0.15},'SAR',{0.9,-0.5,0.5},...
'SARLags',[12,24,36],'MA',-0.5,'Constant',2,...
'Variance',1);


Simulate data from Mdl.

rng(1); % For reproducibility
y = simulate(Mdl,1000);


Plot the default autocorrelation function (ACF).

figure
autocorr(y)


The default correlogram does not display the dependence structure for higher lags.

Plot the ACF for 40 lags.

figure
autocorr(y,40,[],3)


The correlogram shows the larger correlations at lags 12, 24, and 36.

### Compare the ACF for Normalized and Unnormalized Series

Although various estimates of the sample autocorrelation function exist, autocorr uses the form in Box, Jenkins, and Reinsel, 1994. In their estimate, they scale the correlation at each lag by the sample variance (var(y,1)) so that the autocorrelation at lag 0 is unity. However, certain applications require rescaling the normalized ACF by another factor.

Simulate 1000 observations from the standard Gaussian distribution.

rng(1); % For reproducibility
y = randn(1000, 1);


Compute the normalized and unnormalized sample ACF.

[normalizedACF, lags] = autocorr(y, 10);
unnormalizedACF = normalizedACF*var(y,1);


Compare the first 10 lags of the sample ACF with and without normalization.

[lags  normalizedACF  unnormalizedACF]

ans =

0    1.0000    0.9960
1.0000   -0.0180   -0.0180
2.0000    0.0536    0.0534
3.0000   -0.0206   -0.0205
4.0000   -0.0300   -0.0299
5.0000   -0.0086   -0.0086
6.0000   -0.0108   -0.0107
7.0000   -0.0116   -0.0116
8.0000    0.0309    0.0307
9.0000    0.0341    0.0340
10.0000    0.0076    0.0075



## Input Arguments

expand all

### y — Observed univariate time seriesvector

Observed univariate time series for which the software computes or plots the ACF, specified as a vector. The last element of y contains the most recent observation.

Data Types: double

### numLags — Number of lagsmin(20,length(y)-1) (default) | positive integer

Number of lags of the ACF that the software returns or plots, specified as a positive integer.

For example, autocorr(y,10) plots the ACF for lags 0 through 10.

Data Types: double

### numMA — MA order0 (default) | nonnegative integer

MA order that specifies the number of lags beyond which the theoretical ACF is effectively 0, specified as a nonnegative integer.

• numMA must be less than numLags.

• Specify numMA to assess whether the ACF is effectively zero beyond lag numMA [1]. The software uses Bartlett's approximation to estimate the large-lag standard error for lags that are greater than numMA.

• If numMA = 0, then the software assumes that y is a length T Gaussian white noise process. In this case, the standard error is approximately

Example: [~,~,bounds] = autocorr(y,[],5)

Data Types: double

### numSTD — Number of standard deviations2 (default) | positive scalar

Number of standard deviations for the sample ACF estimation error assuming the theoretical ACF is 0 beyond lag numMA, specified as a positive scalar. For example, autocorr(y,[],[],1.5) plots the ACF with estimation error bounds 1.5 standard deviations away from 0.

If numMA = 0 and y a lengthT Gaussian process, then the confidence bounds are:

The default (numSTD = 2) corresponds to approximate 95% confidence bounds.

Data Types: double

## Output Arguments

expand all

### acf — Sample ACFvector

Sample ACF of the univariate time series y, returned as a vector of length numLags + 1.

The elements of acf correspond to lags 0,1,2,...,numLags. The first element, which corresponds to lag 0, is unity (i.e., acf(1) = 1).

### lags — Sample ACF lagsvector

Sample ACF lags, returned as a vector. Specifically, lags = 0:numLags.

### bounds — Approximate confidence boundsvector

Approximate confidence bounds of the ACF assuming y is an MA(numMA) process, returned as a two-element vector. bounds is approximate for lags > numMA.

expand all

### Autocorrelation Function

Measures the correlation between yt and yt + k, where k = 0,...,K and yt is a stochastic process.

According to [1], the formula for the autocorrelation for lag k is

where

• c0 is the sample variance of the time series.

The estimated standard error for the autocorrelation at lag k is

where q is the lag beyond which the theoretical ACF is effectively 0. If the series is completely random, then the standard error reduces to [1].

### Tips

To plot the ACF without confidence bounds, set numSTD to 0.

## References

[1] Box, G. E. P., G. M. Jenkins, and G. C. Reinsel. Time Series Analysis: Forecasting and Control. 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Hamilton, J. D. Time Series Analysis. Princeton, NJ: Princeton University Press, 1994.