1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math.stat.regression;
18
19 import org.junit.Before;
20 import org.junit.Test;
21
22 public class GLSMultipleLinearRegressionTest extends MultipleLinearRegressionAbstractTest {
23
24 private double[] y;
25 private double[][] x;
26 private double[][] omega;
27
28 @Before
29 @Override
30 public void setUp(){
31 y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
32 x = new double[6][];
33 x[0] = new double[]{1.0, 0, 0, 0, 0, 0};
34 x[1] = new double[]{1.0, 2.0, 0, 0, 0, 0};
35 x[2] = new double[]{1.0, 0, 3.0, 0, 0, 0};
36 x[3] = new double[]{1.0, 0, 0, 4.0, 0, 0};
37 x[4] = new double[]{1.0, 0, 0, 0, 5.0, 0};
38 x[5] = new double[]{1.0, 0, 0, 0, 0, 6.0};
39 omega = new double[6][];
40 omega[0] = new double[]{1.0, 0, 0, 0, 0, 0};
41 omega[1] = new double[]{0, 2.0, 0, 0, 0, 0};
42 omega[2] = new double[]{0, 0, 3.0, 0, 0, 0};
43 omega[3] = new double[]{0, 0, 0, 4.0, 0, 0};
44 omega[4] = new double[]{0, 0, 0, 0, 5.0, 0};
45 omega[5] = new double[]{0, 0, 0, 0, 0, 6.0};
46 super.setUp();
47 }
48
49 @Test(expected=IllegalArgumentException.class)
50 public void cannotAddXSampleData() {
51 createRegression().newSampleData(new double[]{}, null, null);
52 }
53
54 @Test(expected=IllegalArgumentException.class)
55 public void cannotAddNullYSampleData() {
56 createRegression().newSampleData(null, new double[][]{}, null);
57 }
58
59 @Test(expected=IllegalArgumentException.class)
60 public void cannotAddSampleDataWithSizeMismatch() {
61 double[] y = new double[]{1.0, 2.0};
62 double[][] x = new double[1][];
63 x[0] = new double[]{1.0, 0};
64 createRegression().newSampleData(y, x, null);
65 }
66
67 @Test(expected=IllegalArgumentException.class)
68 public void cannotAddNullCovarianceData() {
69 createRegression().newSampleData(new double[]{}, new double[][]{}, null);
70 }
71
72 @Test(expected=IllegalArgumentException.class)
73 public void notEnoughData() {
74 double[] reducedY = new double[y.length - 1];
75 double[][] reducedX = new double[x.length - 1][];
76 double[][] reducedO = new double[omega.length - 1][];
77 System.arraycopy(y, 0, reducedY, 0, reducedY.length);
78 System.arraycopy(x, 0, reducedX, 0, reducedX.length);
79 System.arraycopy(omega, 0, reducedO, 0, reducedO.length);
80 createRegression().newSampleData(reducedY, reducedX, reducedO);
81 }
82
83 @Test(expected=IllegalArgumentException.class)
84 public void cannotAddCovarianceDataWithSampleSizeMismatch() {
85 double[] y = new double[]{1.0, 2.0};
86 double[][] x = new double[2][];
87 x[0] = new double[]{1.0, 0};
88 x[1] = new double[]{0, 1.0};
89 double[][] omega = new double[1][];
90 omega[0] = new double[]{1.0, 0};
91 createRegression().newSampleData(y, x, omega);
92 }
93
94 @Test(expected=IllegalArgumentException.class)
95 public void cannotAddCovarianceDataThatIsNotSquare() {
96 double[] y = new double[]{1.0, 2.0};
97 double[][] x = new double[2][];
98 x[0] = new double[]{1.0, 0};
99 x[1] = new double[]{0, 1.0};
100 double[][] omega = new double[3][];
101 omega[0] = new double[]{1.0, 0};
102 omega[1] = new double[]{0, 1.0};
103 omega[2] = new double[]{0, 2.0};
104 createRegression().newSampleData(y, x, omega);
105 }
106
107 @Override
108 protected GLSMultipleLinearRegression createRegression() {
109 GLSMultipleLinearRegression regression = new GLSMultipleLinearRegression();
110 regression.newSampleData(y, x, omega);
111 return regression;
112 }
113
114 @Override
115 protected int getNumberOfRegressors() {
116 return x[0].length;
117 }
118
119 @Override
120 protected int getSampleSize() {
121 return y.length;
122 }
123
124 }