Consider the Wolfer Sunspot Data (Y ) (Box and Jenkins 1976, page 530) along with data on northern light activity (X1) and earthquake activity (X2) (Robinson 1967, page 204) to be a three-channel time series. Methods GetCrossCovariance
and GetCrossCorrelation
are used to compute the cross-covariances and cross-correlations between X1 and Y and between X2 and Y with lags from -maximumLag
= -10 through lag maximumLag
= 10.
using System;
using Imsl.Stat;
using PrintMatrix = Imsl.Math.PrintMatrix;
using Matrix = Imsl.Math.Matrix;
public class MultiCrossCorrelationEx1
{
public static void Main(String[] args)
{
int i;
double[,] x = {
{155.0, 66.0}, {113.0, 62.0},
{3.0, 66.0}, {10.0, 197.0},
{0.0, 63.0}, {0.0, 0.0},
{12.0, 121.0}, {86.0, 0.0},
{102.0, 113.0}, {20.0, 27.0},
{98.0, 107.0}, {116.0, 50.0},
{87.0, 122.0}, {131.0, 127.0},
{168.0, 152.0}, {173.0, 216.0},
{238.0, 171.0}, {146.0, 70.0},
{0.0, 141.0}, {0.0, 69.0},
{0.0, 160.0}, {0.0, 92.0},
{12.0, 70.0}, {0.0, 46.0},
{37.0, 96.0}, {14.0, 78.0},
{11.0, 110.0}, {28.0, 79.0},
{19.0, 85.0}, {30.0, 113.0},
{11.0, 59.0}, {26.0, 86.0},
{0.0, 199.0}, {29.0, 53.0},
{47.0, 81.0}, {36.0, 81.0},
{35.0, 156.0}, {17.0, 27.0},
{0.0, 81.0}, {3.0, 107.0},
{6.0, 152.0}, {18.0, 99.0},
{15.0, 177.0},{0.0, 48.0},
{3.0, 70.0}, {9.0, 158.0},
{64.0, 22.0}, {126.0, 43.0},
{38.0, 102.0}, {33.0, 111.0},
{71.0, 90.0}, {24.0, 86.0},
{20.0, 119.0}, {22.0, 82.0},
{13.0, 79.0}, {35.0, 111.0},
{84.0, 60.0}, {119.0, 118.0},
{86.0, 206.0}, {71.0, 122.0},
{115.0, 134.0}, {91.0, 131.0},
{43.0, 84.0}, {67.0, 100.0},
{60.0, 99.0}, {49.0, 99.0},
{100.0, 69.0}, {150.0, 67.0},
{178.0, 26.0}, {187.0, 106.0},
{76.0, 108.0}, {75.0, 155.0},
{100.0, 40.0}, {68.0, 75.0},
{93.0, 99.0}, {20.0, 86.0},
{51.0, 127.0}, {72.0, 201.0},
{118.0, 76.0}, {146.0, 64.0},
{101.0, 31.0}, {61.0, 138.0},
{87.0, 163.0}, {53.0, 98.0},
{69.0, 70.0}, {46.0, 155.0},
{47.0, 97.0}, {35.0, 82.0},
{74.0, 90.0}, {104.0, 122.0},
{97.0, 70.0}, {106.0, 96.0},
{113.0, 111.0}, {103.0, 42.0},
{68.0, 97.0}, {67.0, 91.0},
{82.0, 64.0}, {89.0, 81.0},
{102.0, 162.0}, {110.0, 137.0}};
double[,] y = {{101.0}, {82.0},
{66.0}, {35.0},
{31.0}, {7.0},
{20.0}, {92.0},
{154.0}, {126.0},
{85.0}, {68.0},
{38.0}, {23.0},
{10.0}, {24.0},
{83.0}, {132.0},
{131.0}, {118.0},
{90.0}, {67.0},
{60.0}, {47.0},
{41.0}, {21.0},
{16.0}, {6.0},
{4.0}, {7.0},
{14.0}, {34.0},
{45.0}, {43.0},
{48.0}, {42.0},
{28.0}, {10.0},
{8.0}, {2.0},
{0.0}, {1.0},
{5.0}, {12.0},
{14.0}, {35.0},
{46.0}, {41.0},
{30.0}, {24.0},
{16.0}, {7.0},
{4.0}, {2.0},
{8.0}, {17.0},
{36.0}, {50.0},
{62.0}, {67.0},
{71.0}, {48.0},
{28.0}, {8.0},
{13.0}, {57.0},
{122.0}, {138.0},
{103.0}, {86.0},
{63.0}, {37.0},
{24.0}, {11.0},
{15.0}, {40.0},
{62.0}, {98.0},
{124.0}, {96.0},
{66.0}, {64.0},
{54.0}, {39.0},
{21.0}, {7.0},
{4.0}, {23.0},
{55.0}, {94.0},
{96.0}, {77.0},
{59.0}, {44.0},
{47.0}, {30.0},
{16.0}, {7.0},
{37.0}, {74.0}};
MultiCrossCorrelation mcc =
new MultiCrossCorrelation(x, y, 10);
new PrintMatrix("Mean of X : ").Print(mcc.GetMeanX());
new PrintMatrix("Variance of X : ").Print(mcc.GetVarianceX());
new PrintMatrix("Mean of Y : ").Print(mcc.GetMeanY());
new PrintMatrix("Variance of Y : ").Print(mcc.GetVarianceY());
double[,] tmpArr = new double[x.GetLength(1), y.GetLength(1)];
double[,,] ccv = mcc.GetCrossCovariance();
Console.Out.WriteLine
("Multichannel cross-covariance between X and Y");
for (i = 0; i < 21; i++)
{
for (int j=0;j<x.GetLength(1);j++)
for (int k=0;k<y.GetLength(1);k++)
tmpArr[j,k] = ccv[i,j,k];
Console.Out.WriteLine("Lag K = " + (i - 10));
new PrintMatrix("CrossCovariances : ").Print(tmpArr);
}
double[,,] cc = mcc.GetCrossCorrelation();
Console.Out.WriteLine
("Multichannel cross-correlation between X and Y");
for (i = 0; i < 21; i++)
{
for (int j=0;j<x.GetLength(1);j++)
for (int k=0;k<y.GetLength(1);k++)
tmpArr[j,k] = cc[i,j,k];
Console.Out.WriteLine("Lag K = " + (i - 10));
new PrintMatrix("CrossCorrelations : ").Print(tmpArr);
}
}
}
Mean of X :
0
0 63.43
1 97.97
Variance of X :
0
0 2643.6851
1 1978.4291
Mean of Y :
0
0 46.94
Variance of Y :
0
0 1383.7564
Multichannel cross-covariance between X and Y
Lag K = -10
CrossCovariances :
0
0 -20.5123555555557
1 70.7132444444444
Lag K = -9
CrossCovariances :
0
0 65.0243098901099
1 38.1363054945055
Lag K = -8
CrossCovariances :
0
0 216.637243478261
1 135.57832173913
Lag K = -7
CrossCovariances :
0
0 246.793769892473
1 100.362230107527
Lag K = -6
CrossCovariances :
0
0 142.127923404255
1 44.9678638297872
Lag K = -5
CrossCovariances :
0
0 50.6970421052632
1 -11.8094631578948
Lag K = -4
CrossCovariances :
0
0 72.6846166666667
1 32.6926333333334
Lag K = -3
CrossCovariances :
0
0 217.854096907217
1 -40.1185092783505
Lag K = -2
CrossCovariances :
0
0 355.820628571429
1 -152.649118367347
Lag K = -1
CrossCovariances :
0
0 579.653492929293
1 -212.95022020202
Lag K = 0
CrossCovariances :
0
0 821.6258
1 -104.7518
Lag K = 1
CrossCovariances :
0
0 810.131371717171
1 55.1601838383839
Lag K = 2
CrossCovariances :
0
0 628.385118367347
1 84.7751673469388
Lag K = 3
CrossCovariances :
0
0 438.271931958763
1 75.9630371134021
Lag K = 4
CrossCovariances :
0
0 238.792741666667
1 200.383466666667
Lag K = 5
CrossCovariances :
0
0 143.621147368421
1 282.986431578947
Lag K = 6
CrossCovariances :
0
0 252.973774468085
1 234.393289361702
Lag K = 7
CrossCovariances :
0
0 479.468286021505
1 223.033735483871
Lag K = 8
CrossCovariances :
0
0 724.912243478261
1 124.456582608696
Lag K = 9
CrossCovariances :
0
0 924.971232967034
1 -79.5174307692309
Lag K = 10
CrossCovariances :
0
0 922.759311111112
1 -279.286422222222
Multichannel cross-correlation between X and Y
Lag K = -10
CrossCorrelations :
0
0 -0.0107245938219684
1 0.0427376557935899
Lag K = -9
CrossCorrelations :
0
0 0.0339970370656115
1 0.023048812287829
Lag K = -8
CrossCorrelations :
0
0 0.113265706453004
1 0.0819407975561327
Lag K = -7
CrossCorrelations :
0
0 0.129032618058936
1 0.0606569035081169
Lag K = -6
CrossCorrelations :
0
0 0.074309566502109
1 0.0271776680765982
Lag K = -5
CrossCorrelations :
0
0 0.0265062285548632
1 -0.00713740085770933
Lag K = -4
CrossCorrelations :
0
0 0.0380021196855836
1 0.0197587668528454
Lag K = -3
CrossCorrelations :
0
0 0.11390192098873
1 -0.0242468161934945
Lag K = -2
CrossCorrelations :
0
0 0.186035762912295
1 -0.0922580420292281
Lag K = -1
CrossCorrelations :
0
0 0.303063597562697
1 -0.128702809263875
Lag K = 0
CrossCorrelations :
0
0 0.429575382251174
1 -0.0633098708358119
Lag K = 1
CrossCorrelations :
0
0 0.423565683647071
1 0.0333377002981115
Lag K = 2
CrossCorrelations :
0
0 0.328542235922487
1 0.051236397797642
Lag K = 3
CrossCorrelations :
0
0 0.22914425606054
1 0.0459105243818767
Lag K = 4
CrossCorrelations :
0
0 0.124849394067548
1 0.121107717407232
Lag K = 5
CrossCorrelations :
0
0 0.075090277447643
1 0.171031279954621
Lag K = 6
CrossCorrelations :
0
0 0.132263745693782
1 0.141662566889261
Lag K = 7
CrossCorrelations :
0
0 0.250683184784367
1 0.134797082107539
Lag K = 8
CrossCorrelations :
0
0 0.37901007257894
1 0.0752190432013873
Lag K = 9
CrossCorrelations :
0
0 0.48360807434863
1 -0.0480587280714567
Lag K = 10
CrossCorrelations :
0
0 0.48245160241607
1 -0.168795069078383
Link to C# source.