Consider the Gas Furnace Data (Box and Jenkins 1976, pages 532-533) where X
is the input gas rate 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 -maximum_lag
= -10 through lag maximum_lag
= 10. In addition, the estimated standard errors of the estimated cross-correlations are computed. In the first invocation of method getStandardErrors
stderrMethod = BARTLETTS_FORMULA, the standard errors are based on the assumption that autocorrelations and cross-correlations for lags greater than maximum_lag
or less than -maximum_lag
are zero, In the second invocation of method getStandardErrors with stderrMethod = BARTLETTS_FORMULA_NOCC, the standard errors are based on the additional assumption that all cross-correlations for X
and Y
are zero.
import java.text.*;
import com.imsl.stat.*;
import com.imsl.math.PrintMatrix;
public class CrossCorrelationEx1 {
public static void main(String args[]) throws Exception {
double[] x2 = {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 = {-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 = {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;
System.out.println("*****************************");
cc = new CrossCorrelation(x, y,10);
System.out.println("Mean = "+cc.getMeanX());
System.out.println("Mean = "+cc.getMeanY());
System.out.println("Xvariance = "+cc.getVarianceX());
System.out.println("Yvariance = "+cc.getVarianceY());
new PrintMatrix("CrossCovariances are: ").print
(cc.getCrossCovariance());
new PrintMatrix("CrossCorrelations are: ").print
(cc.getCrossCorrelation());
new PrintMatrix("Standard Errors using Bartlett are: ").print
(cc.getStandardErrors(cc.BARTLETTS_FORMULA));
new PrintMatrix("Standard Errors using Bartlett #2 are: ").print
(cc.getStandardErrors(cc.BARTLETTS_FORMULA_NOCC));
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.05683445945945951
Mean = 53.50912162162156
Xvariance = 1.1469379016503833
Yvariance = 10.218937066289259
CrossCovariances are:
0
0 -0.405
1 -0.508
2 -0.614
3 -0.705
4 -0.776
5 -0.831
6 -0.891
7 -0.981
8 -1.125
9 -1.347
10 -1.659
11 -2.049
12 -2.482
13 -2.885
14 -3.165
15 -3.253
16 -3.131
17 -2.839
18 -2.453
19 -2.053
20 -1.695
CrossCorrelations are:
0
0 -0.118
1 -0.149
2 -0.179
3 -0.206
4 -0.227
5 -0.243
6 -0.26
7 -0.286
8 -0.329
9 -0.393
10 -0.484
11 -0.598
12 -0.725
13 -0.843
14 -0.925
15 -0.95
16 -0.915
17 -0.829
18 -0.717
19 -0.6
20 -0.495
Standard Errors using Bartlett are:
0
0 0.158
1 0.156
2 0.153
3 0.149
4 0.145
5 0.141
6 0.138
7 0.136
8 0.132
9 0.124
10 0.108
11 0.087
12 0.064
13 0.047
14 0.044
15 0.048
16 0.049
17 0.048
18 0.053
19 0.072
20 0.094
Standard Errors using Bartlett #2 are:
0
0 0.163
1 0.162
2 0.162
3 0.162
4 0.162
5 0.161
6 0.161
7 0.161
8 0.161
9 0.16
10 0.16
11 0.16
12 0.161
13 0.161
14 0.161
15 0.161
16 0.162
17 0.162
18 0.162
19 0.162
20 0.163
AutoCovariances of X are:
0
0 1.147
1 1.092
2 0.957
3 0.782
4 0.609
5 0.467
6 0.365
7 0.298
8 0.261
9 0.244
10 0.239
AutoCovariances of Y are:
0
0 10.219
1 9.92
2 9.157
3 8.099
4 6.949
5 5.871
6 4.961
7 4.252
8 3.736
9 3.376
10 3.132
AutoCorrelations of X are:
0
0 1
1 0.952
2 0.834
3 0.682
4 0.531
5 0.408
6 0.318
7 0.26
8 0.228
9 0.213
10 0.208
AutoCorrelations of Y are:
0
0 1
1 0.971
2 0.896
3 0.793
4 0.68
5 0.574
6 0.485
7 0.416
8 0.366
9 0.33
10 0.307
Link to Java source.