Consider the Gas Furnace Data (Box and Jenkins 1976, pages 532-533) where X
is the input gas reate in cubic feet/minute and Y
is the percent
in the outlet gas. The CrossCorrelation
methods GetCrossCovariance
and GetCrossCorrelation
are used to compute the cross-covariances and cross-correlations between time series X
and Y
with lags from -maximumLag
= -10 through lag maximumLag
= 10. In addition, the estimated standard errors of the estimated cross-correlations are computed. In the first invocation of method GetStandardErrors
stderrMethod = Bartletts
, the standard errors are based on the assumption that autocorrelations and cross-correlations for lags greater than maximumLag
or less than -maximumLag
are zero. In the second invocation of method GetStandardErrors
with stderrMethod
= BartlettsNoCC
, the standard errors are based on the additional assumption that all cross-correlations for X
and Y
are zero.
using System;
using Imsl.Stat;
using PrintMatrix = Imsl.Math.PrintMatrix;
public class CrossCorrelationEx1
{
public static void Main(String[] args)
{
double[] x2 = new double[]{100.8, 81.6, 66.5, 34.8, 30.6,
7, 19.8, 92.5, 154.4, 125.9,
84.8, 68.1, 38.5, 22.8, 10.2,
24.1, 82.9, 132, 130.9, 118.1,
89.9, 66.6, 60, 46.9, 41,
21.3, 16, 6.4, 4.1, 6.8,
14.5, 34, 45, 43.1, 47.5,
42.2, 28.1, 10.1, 8.1, 2.5,
0, 1.4, 5, 12.2, 13.9,
35.4, 45.8, 41.1, 30.4, 23.9,
15.7, 6.6, 4, 1.8, 8.5,
16.6, 36.3, 49.7, 62.5, 67,
71, 47.8, 27.5, 8.5, 13.2,
56.9, 121.5,138.3, 103.2, 85.8,
63.2, 36.8, 24.2, 10.7, 15,
40.1, 61.5, 98.5, 124.3, 95.9,
66.5, 64.5, 54.2, 39, 20.6,
6.7, 4.3, 22.8, 54.8, 93.8,
95.7, 77.2, 59.1, 44, 47,
30.5, 16.3, 7.3, 37.3, 73.9};
double[] x = new double[]{- 0.109, 0.0, 0.178, 0.339, 0.373,
0.441, 0.461, 0.348, 0.127,
- 0.18, - 0.588, - 1.055, - 1.421,
- 1.52, - 1.302, - 0.814, - 0.475,
- 0.193, 0.088, 0.435, 0.771,
0.866, 0.875, 0.891, 0.987, 1.263,
1.775, 1.976, 1.934, 1.866, 1.832,
1.767, 1.608, 1.265, 0.79, 0.36,
0.115, 0.088, 0.331, 0.645, 0.96,
1.409, 2.67, 2.834, 2.812, 2.483,
1.929, 1.485, 1.214, 1.239, 1.608,
1.905, 2.023, 1.815, 0.535, 0.122,
0.009, 0.164, 0.671, 1.019, 1.146,
1.155, 1.112, 1.121, 1.223, 1.257,
1.157, 0.913, 0.62, 0.255, - 0.28,
- 1.08, - 1.551, - 1.799, - 1.825,
- 1.456, - 0.944, - 0.57, - 0.431,
- 0.577, - 0.96, - 1.616, - 1.875,
- 1.891, - 1.746, - 1.474, - 1.201,
- 0.927, - 0.524, 0.04, 0.788,
0.943, 0.93, 1.006, 1.137, 1.198,
1.054, 0.595, - 0.08, - 0.314,
- 0.288, - 0.153, - 0.109, - 0.187,
- 0.255, - 0.229, - 0.007, 0.254,
0.33, 0.102, - 0.423, - 1.139,
- 2.275, - 2.594, - 2.716, - 2.51,
- 1.79, - 1.346, - 1.081, - 0.91,
- 0.876, - 0.885, - 0.8, - 0.544,
- 0.416, - 0.271, 0.0, 0.403,
0.841, 1.285, 1.607, 1.746, 1.683,
1.485, 0.993, 0.648, 0.577, 0.577,
0.632, 0.747, 0.9, 0.993, 0.968,
0.79, 0.399, - 0.161, - 0.553,
- 0.603, - 0.424, - 0.194, - 0.049,
0.06, 0.161, 0.301, 0.517, 0.566,
0.56, 0.573, 0.592, 0.671, 0.933,
1.337, 1.46, 1.353, 0.772, 0.218,
- 0.237, - 0.714, - 1.099, -1.269,
- 1.175, - 0.676, 0.033, 0.556,
0.643, 0.484, 0.109, - 0.31, -0.697,
- 1.047, - 1.218, - 1.183, -0.873,
-0.336, 0.063, 0.084, 0.0, 0.001,
0.209, 0.556, 0.782, 0.858, 0.918,
0.862, 0.416, - 0.336, - 0.959,
- 1.813, - 2.378, - 2.499, -2.473,
- 2.33, - 2.053, - 1.739, - 1.261,
- 0.569, - 0.137, - 0.024, - 0.05,
- 0.135, - 0.276, - 0.534, -0.871,
- 1.243, - 1.439, - 1.422, -1.175,
- 0.813, - 0.634, - 0.582, -0.625,
- 0.713, - 0.848, - 1.039, -1.346,
- 1.628, - 1.619, - 1.149, -0.488,
- 0.16, - 0.007, - 0.092, - 0.62,
- 1.086, - 1.525, - 1.858, -2.029,
- 2.024, - 1.961, - 1.952, -1.794,
- 1.302, - 1.03, - 0.918, - 0.798,
- 0.867, - 1.047,- 1.123, - 0.876,
- 0.395, 0.185, 0.662, 0.709,
0.605, 0.501, 0.603, 0.943, 1.223,
1.249, 0.824, 0.102, 0.025, 0.382,
0.922, 1.032, 0.866, 0.527, 0.093,
- 0.458, - 0.748, - 0.947, -1.029,
- 0.928, - 0.645, - 0.424, -0.276,
- 0.158, - 0.033, 0.102, 0.251,
0.28, 0.0, -0.493, -0.759, -0.824,
- 0.74, - 0.528, - 0.204, 0.034,
0.204, 0.253, 0.195, 0.131, 0.017,
- 0.182, - 0.262};
double[] y = new double[]{53.8, 53.6, 53.5, 53.5, 53.4, 53.1,
52.7, 52.4, 52.2, 52.0, 52.0,
52.4, 53.0, 54.0, 54.9, 56.0,
56.8, 56.8, 56.4, 55.7, 55.0,
54.3, 53.2, 52.3, 51.6, 51.2,
50.8, 50.5, 50.0, 49.2, 48.4,
47.9, 47.6, 47.5, 47.5, 47.6,
48.1, 49.0, 50.0, 51.1, 51.8,
51.9, 51.7, 51.2, 50.0, 48.3,
47.0, 45.8, 45.6, 46.0, 46.9,
47.8, 48.2, 48.3, 47.9, 47.2,
47.2, 48.1, 49.4, 50.6, 51.5,
51.6, 51.2, 50.5, 50.1, 49.8,
49.6, 49.4, 49.3, 49.2, 49.3,
49.7, 50.3, 51.3, 52.8, 54.4,
56.0, 56.9, 57.5, 57.3, 56.6,
56.0, 55.4, 55.4, 56.4, 57.2,
58.0, 58.4, 58.4, 58.1, 57.7,
57.0, 56.0, 54.7, 53.2, 52.1,
51.6, 51.0, 50.5, 50.4, 51.0,
51.8, 52.4, 53.0, 53.4, 53.6,
53.7, 53.8, 53.8, 53.8, 53.3,
53.0, 52.9, 53.4, 54.6, 56.4,
58.0, 59.4, 60.2, 60.0, 59.4,
58.4, 57.6, 56.9, 56.4, 56.0,
55.7, 55.3, 55.0, 54.4, 53.7,
52.8, 51.6, 50.6, 49.4, 48.8,
48.5, 48.7, 49.2, 49.8, 50.4,
50.7, 50.9, 50.7, 50.5, 50.4,
50.2, 50.4, 51.2, 52.3, 53.2,
53.9, 54.1, 54.0, 53.6, 53.2,
53.0, 52.8, 52.3, 51.9, 51.6,
51.6, 51.4, 51.2, 50.7, 50.0,
49.4, 49.3, 49.7, 50.6, 51.8,
53.0, 54.0, 55.3, 55.9, 55.9,
54.6, 53.5, 52.4, 52.1, 52.3,
53.0, 53.8, 54.6, 55.4, 55.9,
55.9, 55.2, 54.4, 53.7, 53.6,
53.6, 53.2, 52.5, 52.0, 51.4,
51.0, 50.9, 52.4, 53.5, 55.6,
58.0, 59.5, 60.0, 60.4, 60.5,
60.2, 59.7, 59.0, 57.6, 56.4,
55.2, 54.5, 54.1, 54.1, 54.4,
55.5, 56.2, 57.0, 57.3, 57.4,
57.0, 56.4, 55.9, 55.5, 55.3,
55.2, 55.4, 56.0, 56.5, 57.1,
57.3, 56.8, 55.6, 55.0, 54.1,
54.3, 55.3, 56.4, 57.2, 57.8,
58.3, 58.6, 58.8, 58.8, 58.6,
58.0, 57.4, 57.0, 56.4, 56.3,
56.4, 56.4, 56.0, 55.2, 54.0,
53.0, 52.0, 51.6, 51.6, 51.1,
50.4, 50.0, 50.0, 52.0, 54.0,
55.1, 54.5, 52.8, 51.4, 50.8,
51.2, 52.0, 52.8, 53.8, 54.5,
54.9, 54.9, 54.8, 54.4, 53.7,
53.3, 52.8, 52.6, 52.6, 53.0,
54.3, 56.0, 57.0, 58.0, 58.6,
58.5, 58.3, 57.8, 57.3, 57.0};
CrossCorrelation cc = new CrossCorrelation(x, y, 10);
Console.Out.WriteLine("Mean = " + cc.MeanX);
Console.Out.WriteLine("Mean = " + cc.MeanY);
Console.Out.WriteLine("Xvariance = " + cc.VarianceX);
Console.Out.WriteLine("Yvariance = " + cc.VarianceY);
new PrintMatrix
("CrossCovariances are: ").Print(cc.GetCrossCovariances());
new PrintMatrix
("CrossCorrelations are: ").Print(cc.GetCrossCorrelations());
double[] stdErrors =
cc.GetStandardErrors(CrossCorrelation.StdErr.Bartletts);
new PrintMatrix
("Standard Errors using Bartlett are: ").Print(stdErrors);
stdErrors =
cc.GetStandardErrors(CrossCorrelation.StdErr.BartlettsNoCC);
new PrintMatrix("Standard Errors using Bartlett #2 are: ").Print
(stdErrors);
new PrintMatrix("AutoCovariances of X are: ").Print
(cc.GetAutoCovarianceX());
new PrintMatrix("AutoCovariances of Y are: ").Print
(cc.GetAutoCovarianceY());
new PrintMatrix("AutoCorrelations of X are: ").Print
(cc.GetAutoCorrelationX());
new PrintMatrix("AutoCorrelations of Y are: ").Print
(cc.GetAutoCorrelationY());
}
}
Mean = -0.0568344594594595
Mean = 53.5091216216216
Xvariance = 1.14693790165038
Yvariance = 10.2189370662893
CrossCovariances are:
0
0 -0.404501563294314
1 -0.508490782763824
2 -0.614369467627782
3 -0.705476130258359
4 -0.776166564117932
5 -0.831473609098764
6 -0.891315326970392
7 -0.980605209560792
8 -1.12477059434257
9 -1.34704305203341
10 -1.65852650999817
11 -2.04865124574232
12 -2.48216585776478
13 -2.88541054192018
14 -3.16536049680239
15 -3.25343758942199
16 -3.13112860301494
17 -2.83919398544463
18 -2.45302186901565
19 -2.05268794195849
20 -1.6946546517713
CrossCorrelations are:
0
0 -0.118153717307789
1 -0.148528662561878
2 -0.179455515102209
3 -0.206067503381416
4 -0.226715971265165
5 -0.242870996488244
6 -0.260350586329711
7 -0.286431898500946
8 -0.3285421835153
9 -0.39346731487308
10 -0.484450717109386
11 -0.598405005361053
12 -0.725033348897091
13 -0.842819935503927
14 -0.924592494205792
15 -0.950319553992448
16 -0.914593458680361
17 -0.829320215245049
18 -0.716520475473708
19 -0.599584112456951
20 -0.495003641096017
Standard Errors using Bartlett are:
0
0 0.158147783754555
1 0.155750271182418
2 0.152735096430409
3 0.149086745416716
4 0.145054998300008
5 0.141300099196058
6 0.138420534019813
7 0.136074039397204
8 0.132158917844376
9 0.123531347020305
10 0.107879045104545
11 0.0873410658167485
12 0.0641407975847026
13 0.0469456102701398
14 0.0440970262220149
15 0.0482335854893665
16 0.0491545707033738
17 0.0475621871011123
18 0.0534780426550682
19 0.0715660938138719
20 0.0939330263600716
Standard Errors using Bartlett #2 are:
0
0 0.162753654681801
1 0.162469864309526
2 0.162187553298139
3 0.161906708839297
4 0.161627318279375
5 0.161349369117073
6 0.16107284900106
7 0.160797745727675
8 0.160524047238664
9 0.160251741618955
10 0.159980817094486
11 0.160251741618955
12 0.160524047238664
13 0.160797745727675
14 0.16107284900106
15 0.161349369117073
16 0.161627318279375
17 0.161906708839297
18 0.162187553298139
19 0.162469864309526
20 0.162753654681801
AutoCovariances of X are:
0
0 1.14693790165038
1 1.09242958215267
2 0.956651878489968
3 0.782050821478561
4 0.609290776371371
5 0.467379623909361
6 0.36495658921123
7 0.298426970727032
8 0.260942845999682
9 0.244377603086156
10 0.238942463361545
AutoCovariances of Y are:
0
0 10.2189370662893
1 9.92010118439122
2 9.15657243817617
3 8.09900196442277
4 6.94850770962479
5 5.87055032023953
6 4.96076244327211
7 4.25188969596136
8 3.73611877936647
9 3.37615547781905
10 3.13231605775447
AutoCorrelations of X are:
0
0 1
1 0.952474916541448
2 0.834092130980584
3 0.681859776674248
4 0.531232576318765
5 0.407502117801518
6 0.31820082733867
7 0.26019453215175
8 0.227512619143721
9 0.213069602752258
10 0.208330776250152
AutoCorrelations of Y are:
0
0 1
1 0.970756656983059
2 0.896039615351222
3 0.79254837483442
4 0.67996384208558
5 0.574477588242088
6 0.485447988483746
7 0.416079448222429
8 0.365607377277169
9 0.330382255602345
10 0.306520730819207
Link to C# source.