autocor

Purpose

Computes specified autocorrelations for each column of a matrix.

Format

a = autocor(x, k_f, k_l);
Parameters:
  • x (NxK matrix) – Autocorrelations will be computed for each column separately. x is assumed to have 0 mean.

  • k_f (scalar) – Denotes first autocorrelation to compute. Range \([0, rows(x) -1]\).

  • k_l (scalar) – Denotes the last autocorrelation lags. Must be less than the number of rows of x. Range \([0, rows(x) -1]\). If \(k_f = 0\) and \(k_l = 0\), then all possible correlations are computed. If \(k_f \lt 0\) and \(k_l = 0\) then the zero order correlation is computed.

Returns:

a (matrix) – The autocorrelations for each column of x. Missing values will be returned if the variance of any variable is 0.

Examples

Example 1: Calculate ACF for a vector

new;
cls;
library tsmt;

// Step 1: Use 'acf' function as a comparison

// Import time series data
// Get file name with full path
fname = getGAUSSHome() $+ "examples/beef_prices.csv";

// Import beef price data
beef = loadd(fname, "beef_price");

// Demean beef price data first
bfdm = beef - meanc(beef);

// Define first lag for acf , 0 ≤ k_f ≤ N-1
k_f = 1;

// Define last lag for acf, 0 ≤ k_l ≤ N-1
k_l = 5;

// Compute ACF for demeaned beef price
a = autocor(bfdm, k_f, k_l);

// Print results
print "ACF from autocor function: ";
print "Lag"$~"ACF";
print seqa(k_f,1, k_l - k_f + 1)~a;

The results:

ACF from autocor function:
Lag              ACF

1.0000000       0.98474980
2.0000000       0.96196414
3.0000000       0.94023737
4.0000000       0.92037936
5.0000000       0.90134772

Example 2: Calculate ACF for a matrix

// Set up a random seed
rndseed 22;

// Simulate a data set
x = rndn(10, 5);

// Demean data first
x = x - meanc(x)';

// Define first lag, k_f
k_f = 1;

// Define last lag, k_l
k_l = 6;

// Call autocor function
a = autocor(x, k_f, k_l);

// Print results
print "ACF for each column in the matrix";
print "Lag"$~"ACF of C_1"$~"ACF of C_2"$~"ACF of C_3"$~"ACF of C_4"$~"ACF of C_5";
print seqa(k_f,1, k_l - k_f + 1)~a;

The results are:

ACF for each column in the matrix
      Lag       ACF of C_1       ACF of C_2       ACF of C_3       ACF of C_4       ACF of C_5

1.0000000      -0.23535560      -0.23233084      -0.43327598      -0.12392805       0.46121428
2.0000000      -0.13586178       0.32137672      0.014887577      -0.49854290     0.0097333377
3.0000000     -0.097818783     -0.095531616      0.021427194      0.054173501      -0.14611108
4.0000000       0.24352134      -0.33590273      -0.12080847       0.29314286      0.019374906
5.0000000      -0.24234876       0.15793212     -0.049016036      -0.13335620      0.013169333
6.0000000     -0.090657186      -0.36787111     -0.040987953      -0.37958321      -0.13512905

Remarks

The data are assumed to have 0 mean. Thus, use:

x = x - meanc(x)';

prior to the use of this function if the mean is not 0.

autocor() VS acf()

The autocor() function can calculate autocorrelation function (ACF) for multiple columns at one time.

The acf() can calculate autocorrelation function (ACF) for one column with the order of differencing, and acf will demean the data automatically.

Library

tsmt

Source

autoregmt.src

See also

Functions acf()