autocov#

Purpose#

Computes specified autocovariances for each column of a matrix.

Format#

a = autocov(x, f, l);
Parameters:
  • x (NxK matrix) – autocovariances will be computed for each column separately. x is assumed to have 0 mean.

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

  • k_l (scalar) – Denotes the last autocovariance 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 autocovariances for each column of x. Missing values will be returned if the variance of any variable is 0.

Examples#

Example 1: Calculate autocovariance for a vector#

new;
cls;
library tsmt;

// Get file name with full path
file = 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, 0 ≤ k_f ≤ N-1
k_f = 0;

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

// Compute autocovariance for demeaned beef price
a = autocov(bfdm, k_f, k_l);

// Print results
print "Lag"$~"autocovariance";
print seqa(k_f, 1, k_l - k_f + 1)~a;

The results:

Lag   autocovariance

  0        1800.8245
  1        1773.3616
  2        1732.3286
  3        1693.2025
  4        1657.4417
  5        1623.1691

Example 2: Calculate autocovariance for a matrix#

new;

// 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 = 0;

// Define last lag, k_l
k_l = 6;

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

// Print results
print "Lag"$~"autocov of C_1"$~"autocovof C_2"$~"autocovof C_3"$~"autocovof C_4"$~"autocov of C_5";
print seqa(k_f, 1, k_l - k_f + 1)~a;

The results are:

Lag           autocov of C_1    autocovof C_2    autocovof C_3    autocovof C_4   autocov of C_5

   0              0.65765163        1.1915671       0.75573287       0.50407153       0.39901953
   1             -0.15478200      -0.27683779      -0.32744090     -0.062468602       0.18403351
   2             -0.08934972       0.38294194      0.011251031      -0.25130128     0.0038837918
   3             -0.06433068      -0.11383233      0.016193235      0.027307319     -0.058301173
   4              0.16015220      -0.40025065     -0.091298936       0.14776497     0.0077309661
   5             -0.15938106       0.18818673     -0.037043030     -0.067221065     0.0052548212
   6             -0.05962085      -0.43834313     -0.030975944      -0.19133709     -0.053919130

Remarks#

The zeroth autocovariance is just the variance of the variable. The divisor for each autocovariance is the number of elements involved in its computation. Thus, the pth order cross product is divided by \(N-P\), where \(N = rows(x)\), to obtain the pth order autocovariance.

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.

Library#

tsmt

Source#

autoregmt.src

See also

Functions autocor()