Package com.imsl.stat

Class MultiCrossCorrelation

java.lang.Object
com.imsl.stat.MultiCrossCorrelation
All Implemented Interfaces:
Serializable, Cloneable

public class MultiCrossCorrelation extends Object implements Serializable, Cloneable
Computes the multichannel cross-correlation function of two mutually stationary multichannel time series.

MultiCrossCorrelation estimates the multichannel cross-correlation function of two mutually stationary multichannel time series. Define the multichannel time series X by $$X = (X_1, X_2, \dots, X_p)$$ where $$X_j = {(X_{1j}, X_{2j}, \dots, X_{nj})}^T, \;\;\;\;\; j = 1,2, \dots, p$$ with n = x.length and p = x[0].length. Similarly, define the multichannel time series Y by $$Y = (Y_1, Y_2, \dots, Y_q)$$ where $$Y_j = {(Y_{1j}, Y_{2j}, \dots, Y_{mj})}^T, \;\;\;\;\; j = 1,2, \dots, q$$ with m = y.length and q = y[0].length. The columns of X and Y correspond to individual channels of multichannel time series and may be examined from a univariate perspective. The rows of X and Y correspond to observations of p-variate and q-variate time series, respectively, and may be examined from a multivariate perspective. Note that an alternative characterization of a multivariate time series X considers the columns to be observations of the multivariate time series while the rows contain univariate time series. For example, see Priestley (1981, page 692) and Fuller (1976, page 14).

Let \(\hat \mu _X\) = xmean be the row vector containing the means of the channels of X. In particular, $$\hat \mu _X = (\hat\mu _{X_1}, \hat \mu _{X_2}, \dots, \hat \mu _{X_p})$$ where for j = 1, 2, ..., p $$\hat \mu _{X_j} = \left\{ \begin{array}{ll} \mu _{X_j} & {\rm for}\;\mu _{X_j}\; {\rm known} \\ \frac{1}{n}\sum\limits_{t=1}^n {X_{tj}} & {\rm for}\;\mu _{X_j}\; {\rm unknown} \end{array} \right.$$ Let \(\hat \mu _Y\) = ymean be similarly defined. The cross-covariance of lag k between channel i of X and channel j of Y is estimated by $$\hat \sigma _{X_iY_j}(k) = \left\{ \begin{array}{ll} \frac{1}{N}\sum\limits_{t}(X_{ti} - {\hat \mu _{X_i}})(Y_{t+k,j} - {\hat\mu _{Y_j}}) &{k = 0,1, \dots,K} \\ \frac{1}{N}\sum\limits_{t}(X_{ti} - {\hat \mu _{X_i}})(Y_{t+k,j} - {\hat\mu _{Y_j}}) &{k = -1,-2, \dots,-K} \end {array} \right.$$ where i = 1, ..., p, j = 1, ..., q, and K = maximum_lag. The summation on t extends over all possible cross-products with N equal to the number of cross-products in the sum.

Let \(\hat \sigma _X(0)\) = xvar, where xvar is the variance of X, be the row vector consisting of estimated variances of the channels of X. In particular, $$\hat \sigma _X(0) = (\hat \sigma _{X_1}(0), \hat \sigma _{X_2}(0), \dots, \hat \sigma _{X_p}(0)) $$ where $$\hat \sigma _{X_j}(0) = \frac{1}{n} \sum\limits_{t = 1}^{n} {\left( {X_{tj} - \hat \mu _{X_j}} \right)}^2 {, \mbox{\hspace{20pt}j=0,1,\dots,p}}$$ Let \(\hat \sigma _Y(0)\) = yvar, where yvar is the variance of Y, be similarly defined. The cross-correlation of lag k between channel i of X and channel j of Y is estimated by $$\hat \rho _{X_jY_j}(k) = \frac{\hat \sigma _{{X_j}{Y_j}(k)}}{ {[ \hat\sigma _{X_i}(0)\hat\sigma _{X_j}(0)]}^{\frac{1}{2}}} \;\;\;\;\;k =0,\pm1,\dots, \pm K$$

See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    The problem is ill-conditioned.
  • Constructor Summary

    Constructors
    Constructor
    Description
    MultiCrossCorrelation(double[][] x, double[][] y, int maximum_lag)
    Constructor to compute the multichannel cross-correlation function of two mutually stationary multichannel time series.
  • Method Summary

    Modifier and Type
    Method
    Description
    double[][][]
    Returns the cross-correlations between the channels of x and y.
    double[][][]
    Returns the cross-covariances between the channels of x and y.
    double[]
    Returns the mean of each channel of x.
    double[]
    Returns the mean of each channel of y.
    double[]
    Returns the variances of the channels of x.
    double[]
    Returns the variances of the channels of y.
    void
    setMeanX(double[] mean)
    Estimate of the mean of each channel of x.
    void
    setMeanY(double[] mean)
    Estimate of the mean of each channel of y.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MultiCrossCorrelation

      public MultiCrossCorrelation(double[][] x, double[][] y, int maximum_lag)
      Constructor to compute the multichannel cross-correlation function of two mutually stationary multichannel time series.
      Parameters:
      x - A two-dimensional double array containing the first multichannel stationary time series. Each row of x corresponds to an observation of a multivariate time series and each column of x corresponds to a univariate time series.
      y - A two-dimensional double array containing the second multichannel stationary time series. Each row of y corresponds to an observation of a multivariate time series and each column of y corresponds to a univariate time series.
      maximum_lag - An int containing the maximum lag of the cross-covariance and cross-correlations to be computed. maximum_lag must be greater than or equal to 1 and less than the minimum number of observations of x and y.
  • Method Details

    • setMeanX

      public void setMeanX(double[] mean)
      Estimate of the mean of each channel of x.
      Parameters:
      mean - A one-dimensional double containing the estimate of the mean of each channel in time series x.
    • getMeanX

      public double[] getMeanX()
      Returns the mean of each channel of x.
      Returns:
      A one-dimensional double containing the mean of each channel in the time series x.
    • setMeanY

      public void setMeanY(double[] mean)
      Estimate of the mean of each channel of y.
      Parameters:
      mean - A one-dimensional double containing the estimate of the mean of each channel in the time series y.
    • getMeanY

      public double[] getMeanY()
      Returns the mean of each channel of y.
      Returns:
      A one-dimensional double containing the estimate mean of each channel in the time series y.
    • getVarianceX

      public double[] getVarianceX() throws MultiCrossCorrelation.NonPosVariancesException
      Returns the variances of the channels of x.
      Returns:
      A one-dimensional double containing the variances of each channel in the time series x.
      Throws:
      MultiCrossCorrelation.NonPosVariancesException
    • getVarianceY

      public double[] getVarianceY() throws MultiCrossCorrelation.NonPosVariancesException
      Returns the variances of the channels of y.
      Returns:
      A one-dimensional double containing the variances of each channel in the time series y.
      Throws:
      MultiCrossCorrelation.NonPosVariancesException
    • getCrossCorrelation

      public double[][][] getCrossCorrelation() throws MultiCrossCorrelation.NonPosVariancesException
      Returns the cross-correlations between the channels of x and y.
      Returns:
      A double array of size 2 * maximum_lag +1 by x[0].length by y[0].length containing the cross-correlations between the time series x and y. The cross-correlation between channel i of the x series and channel j of the y series at lag k, where k = -maximum_lag, ..., 0, 1, ..., maximum_lag, corresponds to output array element with index [k][i][j] where k= 0,1,...,(2*maximum_lag), i = 1, ..., x[0].length, and j = 1, ..., y[0].length.
      Throws:
      MultiCrossCorrelation.NonPosVariancesException
    • getCrossCovariance

      public double[][][] getCrossCovariance() throws MultiCrossCorrelation.NonPosVariancesException
      Returns the cross-covariances between the channels of x and y.
      Returns:
      A double array of size 2 * maximum_lag +1 by x[0].length by y[0].length containing the cross-covariances between the time series x and y. The cross-covariances between channel i of the x series and channel j of the y series at lag k where k = -maximum_lag, ..., 0, 1, ..., maximum_lag, corresponds to output array element with index [k][i][j] where k= 0,1,...,(2*maximum_lag), i = 1, ..., x[0].length, and j = 1, ..., y[0].length.
      Throws:
      MultiCrossCorrelation.NonPosVariancesException