public void Test_LinearRegression() { //----- slope { double[,] testVectors = { { 100.00000, 0.00000, 0.00000, 0.00000, 0.00000, }, { 105.00000, 1.50000, 0.00000, 0.00000, 0.00000, }, { 102.50000, 1.25000, 1.50000, 0.00000, 0.00000, }, { 107.50000, 2.00000, 1.25000, 1.50000, 0.00000, }, { 105.00000, 0.50000, 2.00000, 1.25000, 1.50000, }, { 110.00000, 2.00000, 0.50000, 2.00000, 1.25000, }, { 107.50000, 0.50000, 2.00000, 0.50000, 2.00000, }, { 112.50000, 2.00000, 0.50000, 2.00000, 0.50000, }, { 110.00000, 0.50000, 2.00000, 0.50000, 2.00000, }, { 115.00000, 2.00000, 0.50000, 2.00000, 0.50000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); string msg = ""; for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).Slope; msg += string.Format("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; msg += string.Format("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } msg += "},\n"; } Output.WriteLine(msg); } //----- intercept { double[,] testVectors = { { 100.00000, 100.00000, 100.00000, 100.00000, 100.00000, }, { 105.00000, 103.50000, 100.00000, 100.00000, 100.00000, }, { 102.50000, 103.75000, 103.50000, 100.00000, 100.00000, }, { 107.50000, 106.75000, 103.75000, 103.50000, 100.00000, }, { 105.00000, 105.75000, 106.75000, 103.75000, 103.50000, }, { 110.00000, 109.25000, 105.75000, 106.75000, 103.75000, }, { 107.50000, 108.25000, 109.25000, 105.75000, 106.75000, }, { 112.50000, 111.75000, 108.25000, 109.25000, 105.75000, }, { 110.00000, 110.75000, 111.75000, 108.25000, 109.25000, }, { 115.00000, 114.25000, 110.75000, 111.75000, 108.25000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); string msg = ""; for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).Intercept; msg += string.Format("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; msg += string.Format("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } msg += "},\n"; } Output.WriteLine(msg); } //----- R2 { double[,] testVectors = { { 100.00000, 0.00000, 0.00000, 0.00000, 0.00000, }, { 105.00000, 0.60000, 0.00000, 0.00000, 0.00000, }, { 102.50000, 0.45455, 0.60000, 0.00000, 0.00000, }, { 107.50000, 0.64000, 0.45455, 0.60000, 0.00000, }, { 105.00000, 0.10000, 0.64000, 0.45455, 0.60000, }, { 110.00000, 0.64000, 0.10000, 0.64000, 0.45455, }, { 107.50000, 0.10000, 0.64000, 0.10000, 0.64000, }, { 112.50000, 0.64000, 0.10000, 0.64000, 0.10000, }, { 110.00000, 0.10000, 0.64000, 0.10000, 0.64000, }, { 115.00000, 0.64000, 0.10000, 0.64000, 0.10000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); string msg = ""; for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).R2; msg += string.Format("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; msg += string.Format("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } msg += "},\n"; } //Output.WriteLine(msg); } }
public void Test_LinearRegression() { //----- slope { double[,] testVectors = { { 100.00000, 0.00000, 0.00000, 0.00000, 0.00000, }, { 102.50000, 0.75000, 0.00000, 0.00000, 0.00000, }, { 105.00000, 1.75000, 0.75000, 0.00000, 0.00000, }, { 107.50000, 2.50000, 1.75000, 0.75000, 0.00000, }, { 110.00000, 2.50000, 2.50000, 1.75000, 0.75000, }, { 112.50000, 2.50000, 2.50000, 2.50000, 1.75000, }, { 115.00000, 2.50000, 2.50000, 2.50000, 2.50000, }, { 117.50000, 2.50000, 2.50000, 2.50000, 2.50000, }, { 120.00000, 2.50000, 2.50000, 2.50000, 2.50000, }, { 122.50000, 2.50000, 2.50000, 2.50000, 2.50000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).Slope; //Output.Write("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; //Output.Write("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } //Output.WriteLine("},"); } } //----- intercept { double[,] testVectors = { { 100.00000, 100.00000, 100.00000, 100.00000, 100.00000, }, { 102.50000, 101.75000, 100.00000, 100.00000, 100.00000, }, { 105.00000, 104.50000, 101.75000, 100.00000, 100.00000, }, { 107.50000, 107.50000, 104.50000, 101.75000, 100.00000, }, { 110.00000, 110.00000, 107.50000, 104.50000, 101.75000, }, { 112.50000, 112.50000, 110.00000, 107.50000, 104.50000, }, { 115.00000, 115.00000, 112.50000, 110.00000, 107.50000, }, { 117.50000, 117.50000, 115.00000, 112.50000, 110.00000, }, { 120.00000, 120.00000, 117.50000, 115.00000, 112.50000, }, { 122.50000, 122.50000, 120.00000, 117.50000, 115.00000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).Intercept; //Output.Write("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; //Output.Write("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } //Output.WriteLine("},"); } } //----- R2 { double[,] testVectors = { { 100.00000, 0.00000, 0.00000, 0.00000, 0.00000, }, { 102.50000, 0.33333, 0.00000, 0.00000, 0.00000, }, { 105.00000, 0.87755, 0.33333, 0.00000, 0.00000, }, { 107.50000, 1.00000, 0.87755, 0.33333, 0.00000, }, { 110.00000, 1.00000, 1.00000, 0.87755, 0.33333, }, { 112.50000, 1.00000, 1.00000, 1.00000, 0.87755, }, { 115.00000, 1.00000, 1.00000, 1.00000, 1.00000, }, { 117.50000, 1.00000, 1.00000, 1.00000, 1.00000, }, { 120.00000, 1.00000, 1.00000, 1.00000, 1.00000, }, { 122.50000, 1.00000, 1.00000, 1.00000, 1.00000, }, }; TimeSeries <double> stimulus = new TimeSeries <double>(); for (int row = 0; row <= testVectors.GetUpperBound(0); row++) { stimulus.Value = testVectors[row, 0]; ITimeSeries <double> response = stimulus.LinRegression(4).R2; //Output.Write("{{{0:F5}, ", testVectors[row, 0]); for (int col = 1; col <= testVectors.GetUpperBound(1); col++) { int t = col - 1; double responseValue = response[t]; double expectedValue = testVectors[row, col]; //Output.Write("{0:F5}, ", responseValue); Assert.IsTrue(Math.Abs(responseValue - expectedValue) < 1e-5); } //Output.WriteLine("},"); } } }