public class MultiCrossCorrelation extends Object implements Serializable, Cloneable
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$$
Modifier and Type | Class and Description |
---|---|
static class |
MultiCrossCorrelation.NonPosVariancesException
The problem is ill-conditioned.
|
Constructor and Description |
---|
MultiCrossCorrelation(double[][] x,
double[][] y,
int maximum_lag)
Constructor to compute the multichannel cross-correlation
function of two mutually stationary multichannel time series.
|
Modifier and Type | Method and Description |
---|---|
double[][][] |
getCrossCorrelation()
Returns the cross-correlations between the channels of
x
and y . |
double[][][] |
getCrossCovariance()
Returns the cross-covariances between the channels of
x
and y . |
double[] |
getMeanX()
Returns the mean of each channel of
x . |
double[] |
getMeanY()
Returns the mean of each channel of
y . |
double[] |
getVarianceX()
Returns the variances of the channels of
x . |
double[] |
getVarianceY()
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 . |
public MultiCrossCorrelation(double[][] x, double[][] y, int maximum_lag)
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
.public void setMeanX(double[] mean)
x
.mean
- A one-dimensional double
containing the
estimate of the mean of each channel in time series
x
.public double[] getMeanX()
x
.double
containing the mean
of each channel in the time series x
.public void setMeanY(double[] mean)
y
.mean
- A one-dimensional double
containing the
estimate of the mean of each channel in the time series
y
.public double[] getMeanY()
y
.double
containing the
estimate mean of each channel in the time series y
.public double[] getVarianceX() throws MultiCrossCorrelation.NonPosVariancesException
x
.double
containing the variances
of each channel in the time series x
.MultiCrossCorrelation.NonPosVariancesException
public double[] getVarianceY() throws MultiCrossCorrelation.NonPosVariancesException
y
.double
containing the variances
of each channel in the time series y
.MultiCrossCorrelation.NonPosVariancesException
public double[][][] getCrossCorrelation() throws MultiCrossCorrelation.NonPosVariancesException
x
and y
.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
.MultiCrossCorrelation.NonPosVariancesException
public double[][][] getCrossCovariance() throws MultiCrossCorrelation.NonPosVariancesException
x
and y
.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
.MultiCrossCorrelation.NonPosVariancesException
Copyright © 2020 Rogue Wave Software. All rights reserved.