# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# crosscorr

Sample cross-correlation

## Syntax

``crosscorr(y1,y2)``
``crosscorr(y1,y2,numLags)``
``crosscorr(y1,y2,numLags,numSTD)``
``xcf = crosscorr(y1,y2)``
``xcf = crosscorr(y1,y2,numLags)``
``xcf = crosscorr(y1,y2,numLags,numSTD)``
``````[xcf,lags,bounds] = crosscorr(___)``````

## Description

example

````crosscorr(y1,y2)` plots the sample cross correlation (XCF) between the two univariate, stochastic time series `y1` and `y2` with confidence bounds.```

example

````crosscorr(y1,y2,numLags)` plots the XCF, where `numLags` indicates the number of lags in the sample XCF.```

example

````crosscorr(y1,y2,numLags,numSTD)` plots the XCF, where `numSTD` specifies the number of standard deviations of the sample XCF estimation error.```

example

````xcf = crosscorr(y1,y2)` returns the sample cross-correlation function (XCF) between the two univariate, stochastic time series `y1` and `y2`.```

example

````xcf = crosscorr(y1,y2,numLags)` returns the XCF, where `numLags` specifies the number of lags in the sample XCF.```

example

````xcf = crosscorr(y1,y2,numLags,numSTD)` returns the XCF, where `numSTD` specifies the number of standard deviations of the sample ACF estimation error.```

example

``````[xcf,lags,bounds] = crosscorr(___)``` 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

collapse all

Generate 100 random deviates from a Gaussian distribution with mean 0 and variance 1.

```rng(1); % For reproducibility x = randn(100,1);```

Create a 4-period delayed version of `x`.

`y = lagmatrix(x,4);`

Compute and plot the XCF.

```y(isnan(y)) = 0; % crosscorr does not accept NaNs [XCF,lags,bounds] = crosscorr(x,y); bounds```
```bounds = 0.2000 -0.2000 ```
`crosscorr(x,y)`

`bounds` displays the upper and lower confidence bounds, which are the horizontal lines in the XCF plot. As you should expect, `XCF` peaks at lag 4.

Specify the AR(1) model for the first series:

where is Gaussian with mean 0 and variance 1.

`MdlY1 = arima('AR',0.3,'Constant',2,'Variance',1);`

Simulate data from `Mdl`.

```rng(1); T = 1000; y1 = simulate(MdlY1,T);```

Simulate data for the second series by inducing correlation at lag 36.

`y2 = [randn(36,1);y1(1:end-36)+randn(T-36,1)*0.1];`

Plot the XCF using the default settings.

```figure crosscorr(y1,y2,[],3)```

The plot does not indicate significant cross-correlation between the two series.

Plot the XCF for 60 lags on either side of lag 0.

```figure crosscorr(y1,y2,60,3)```

The plot shows significant correlation at lag 36, as expected.

## Input Arguments

collapse all

First observed univariate time series for which the software computes or plots the XCF, specified as a vector. The last element of `y1` contains the most recent observation.

Data Types: `double`

Second observed univariate time series for which the software computes or plots the XCF, specified as a vector. The last element of `y2` contains the most recent observation.

Data Types: `double`

Number of lags of the XCF that the software returns or plots, specified as a positive integer. `crosscorr` returns the XCF at lags 0, ±1, ±2,... ±`numLags`.

For example, `crosscorr(y1,y2,10)` plots the XCF for lags 0, ±1, ±2,...,±10.

Number of standard deviations for the sample XCF estimation error assuming `y1` and `y2` are uncorrelated. For example, `crosscorr(y1,y2,[],1.5)` plots the XCF with estimation error bounds 1.5 standard deviations away from 0.

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

## Output Arguments

collapse all

Sample XCF between the univariate time series `y1` and `y2`, returned as a vector of length `2*numLags + 1`.

The elements of `xcf` correspond to lags 0, ±1, ±2,... ±`numLags`, with the center element containing the XCF for lag 0.

The software returns `xcf` in the same orientation as `y1`.

Sample XCF lags, returned as a vector. Specifically, ```lags = -numLags:numLags```.

Approximate confidence bounds of the XCF assuming `y1` and `y2` are uncorrelated, returned as a two-element vector.

collapse all

### Sample Cross Correlation

The sample cross covariance function is an estimate of the covariance between two time series, y1t and y2t, at lags k = 0, ±1, ±2,....

For data pairs (y11,y21), (y12,y22),...,(y1T,y2T), an estimate of the lag k cross-covariance is

`${c}_{{y}_{1}{y}_{2}}\left(k\right)=\left\{\begin{array}{c}\frac{1}{T}\sum _{t=1}^{T-k}\left({y}_{1t}-{\overline{y}}_{1}\right)\left({y}_{2,t+k}-{\overline{y}}_{2}\right);\text{\hspace{0.17em}}k=0,1,2,\dots \\ \frac{1}{T}\sum _{t=1}^{T+k}\left({y}_{2t}-{\overline{y}}_{2}\right)\left({y}_{1,t-k}-{\overline{y}}_{1}\right);\text{\hspace{0.17em}}k=0,-1,-2,\dots \end{array},$`
where ${\overline{y}}_{1}$ and ${\overline{y}}_{2}$ are the sample means of the series.

The sample standard deviations of the series are:

• ${s}_{{y}_{1}}=\sqrt{{c}_{{y}_{1}{y}_{1}}\left(0\right)},$ where ${c}_{{y}_{1}{y}_{1}}\left(0\right)=Var\left({y}_{1}\right).$

• ${s}_{{y}_{2}}=\sqrt{{c}_{{y}_{2}{y}_{2}}\left(0\right)},$ where ${c}_{{y}_{2}{y}_{2}}\left(0\right)=Var\left({y}_{2}\right).$

An estimate of the cross-correlation is

`${r}_{{y}_{1}{y}_{2}}\left(k\right)=\frac{{c}_{{y}_{1}{y}_{2}}\left(k\right)}{{s}_{{y}_{1}}{s}_{{y}_{2}}};\text{\hspace{0.17em}}k=0,±1,±2,\dots \text{.}$`

## 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.