diff --git a/AiDotNetBenchmarkTests/AiDotNetBenchmarkTests.csproj b/AiDotNetBenchmarkTests/AiDotNetBenchmarkTests.csproj index f672707..18d124b 100644 --- a/AiDotNetBenchmarkTests/AiDotNetBenchmarkTests.csproj +++ b/AiDotNetBenchmarkTests/AiDotNetBenchmarkTests.csproj @@ -9,7 +9,7 @@ - + diff --git a/src/OutlierRemoval/IQROutlierRemoval.cs b/src/OutlierRemoval/IQROutlierRemoval.cs index abb105c..bdca48d 100644 --- a/src/OutlierRemoval/IQROutlierRemoval.cs +++ b/src/OutlierRemoval/IQROutlierRemoval.cs @@ -60,4 +60,4 @@ internal override (double[][], double[][]) RemoveOutliers(double[][] rawInputs, return (finalInputs, finalOutputs); } -} +} \ No newline at end of file diff --git a/src/Regression/MultipleRegression.cs b/src/Regression/MultipleRegression.cs index 26173ac..04922c0 100644 --- a/src/Regression/MultipleRegression.cs +++ b/src/Regression/MultipleRegression.cs @@ -43,11 +43,10 @@ public MultipleRegression(double[][] inputs, double[] outputs, MultipleRegressio ValidationHelper.CheckForInvalidTrainingSizes(trainingSize, inputSize - trainingSize, Math.Min(2, inputs.Length), trainingPctSize); // Perform the actual work necessary to create the prediction and metrics models - var (trainingInputs, trainingOutputs, oosInputs, oosOutputs) = - PrepareData(inputs, outputs, trainingSize, RegressionOptions.Normalization); - var (cleanedInputs, cleanedOutputs) = - RegressionOptions.OutlierRemoval?.RemoveOutliers(trainingInputs, trainingOutputs) ?? (trainingInputs, trainingOutputs); - Fit(cleanedInputs, cleanedOutputs); + var (cleanedInputs, cleanedOutputs) = RegressionOptions.OutlierRemoval?.RemoveOutliers(inputs, outputs) ?? (inputs, outputs); + var (normalizedInputs, normalizedOutputs, oosInputs, oosOutputs) = + PrepareData(cleanedInputs, cleanedOutputs, trainingSize, RegressionOptions.Normalization); + Fit(normalizedInputs, normalizedOutputs); Predictions = Transform(oosInputs); Metrics = new Metrics(Predictions, oosOutputs, inputs.Length, RegressionOptions.OutlierRemoval?.Quartile); } diff --git a/src/Regression/MultivariateRegression.cs b/src/Regression/MultivariateRegression.cs index 746b135..90066b2 100644 --- a/src/Regression/MultivariateRegression.cs +++ b/src/Regression/MultivariateRegression.cs @@ -44,11 +44,10 @@ public MultivariateRegression(double[][] inputs, double[][] outputs, MultipleReg ValidationHelper.CheckForInvalidTrainingSizes(trainingSize, inputSize - trainingSize, Math.Min(2, inputSize), trainingPctSize); // Perform the actual work necessary to create the prediction and metrics models - var (trainingInputs, trainingOutputs, oosInputs, oosOutputs) = - PrepareData(inputs, outputs, trainingSize, RegressionOptions.Normalization); - var (cleanedInputs, cleanedOutputs) = - RegressionOptions.OutlierRemoval?.RemoveOutliers(trainingInputs, trainingOutputs) ?? (trainingInputs, trainingOutputs); - Fit(cleanedInputs, cleanedOutputs); + var (cleanedInputs, cleanedOutputs) = RegressionOptions.OutlierRemoval?.RemoveOutliers(inputs, outputs) ?? (inputs, outputs); + var (normalizedInputs, normalizedOutputs, oosInputs, oosOutputs) = + PrepareData(cleanedInputs, cleanedOutputs, trainingSize, RegressionOptions.Normalization); + Fit(normalizedInputs, normalizedOutputs); Predictions = Transform(oosInputs); Metrics = new Metrics(Predictions, oosOutputs, inputSize, RegressionOptions.OutlierRemoval?.Quartile); } diff --git a/src/Regression/PolynomialRegression.cs b/src/Regression/PolynomialRegression.cs index 89a3b39..90f82aa 100644 --- a/src/Regression/PolynomialRegression.cs +++ b/src/Regression/PolynomialRegression.cs @@ -50,11 +50,10 @@ public PolynomialRegression(double[] inputs, double[] outputs, int order, Multip ValidationHelper.CheckForInvalidTrainingSizes(trainingSize, inputSize - trainingSize, Math.Min(2, inputSize), trainingPctSize); // Perform the actual work necessary to create the prediction and metrics models - var (trainingInputs, trainingOutputs, oosInputs, oosOutputs) = - PrepareData(inputs, outputs, trainingSize, RegressionOptions.Normalization); - var (cleanedInputs, cleanedOutputs) = - RegressionOptions.OutlierRemoval?.RemoveOutliers(trainingInputs, trainingOutputs) ?? (trainingInputs, trainingOutputs); - Fit(cleanedInputs, cleanedOutputs); + var (cleanedInputs, cleanedOutputs) = RegressionOptions.OutlierRemoval?.RemoveOutliers(inputs, outputs) ?? (inputs, outputs); + var (normalizedInputs, normalizedOutputs, oosInputs, oosOutputs) = + PrepareData(cleanedInputs, cleanedOutputs, trainingSize, RegressionOptions.Normalization); + Fit(normalizedInputs, normalizedOutputs); Predictions = Transform(oosInputs); Metrics = new Metrics(Predictions, oosOutputs, inputSize, RegressionOptions.OutlierRemoval?.Quartile); } diff --git a/src/Regression/SimpleRegression.cs b/src/Regression/SimpleRegression.cs index 49cdb9d..eb78584 100644 --- a/src/Regression/SimpleRegression.cs +++ b/src/Regression/SimpleRegression.cs @@ -43,11 +43,10 @@ public SimpleRegression(double[] inputs, double[] outputs, SimpleRegressionOptio ValidationHelper.CheckForInvalidTrainingSizes(trainingSize, inputSize - trainingSize, Math.Min(2, inputSize), trainingPctSize); // Perform the actual work necessary to create the prediction and metrics models - var (trainingInputs, trainingOutputs, oosInputs, oosOutputs) = - PrepareData(inputs, outputs, trainingSize, RegressionOptions.Normalization); - var (cleanedInputs, cleanedOutputs) = - RegressionOptions.OutlierRemoval?.RemoveOutliers(trainingInputs, trainingOutputs) ?? (trainingInputs, trainingOutputs); - Fit(cleanedInputs, cleanedOutputs); + var (cleanedInputs, cleanedOutputs) = RegressionOptions.OutlierRemoval?.RemoveOutliers(inputs, outputs) ?? (inputs, outputs); + var (normalizedInputs, normalizedOutputs, oosInputs, oosOutputs) = + PrepareData(cleanedInputs, cleanedOutputs, trainingSize, RegressionOptions.Normalization); + Fit(normalizedInputs, normalizedOutputs); Predictions = Transform(oosInputs); Metrics = new Metrics(Predictions, oosOutputs, inputs.Length, RegressionOptions.OutlierRemoval?.Quartile); } diff --git a/src/Regression/WeightedRegression.cs b/src/Regression/WeightedRegression.cs index 82fa3ef..9831a55 100644 --- a/src/Regression/WeightedRegression.cs +++ b/src/Regression/WeightedRegression.cs @@ -52,11 +52,10 @@ public WeightedRegression(double[] inputs, double[] outputs, double[] weights, i ValidationHelper.CheckForInvalidTrainingSizes(trainingSize, inputSize - trainingSize, Math.Min(2, inputs.Length), trainingPctSize); // Perform the actual work necessary to create the prediction and metrics models - var (trainingInputs, trainingOutputs, oosInputs, oosOutputs) = - PrepareData(inputs, outputs, trainingSize, RegressionOptions.Normalization); - var (cleanedInputs, cleanedOutputs) = - RegressionOptions.OutlierRemoval?.RemoveOutliers(trainingInputs, trainingOutputs) ?? (trainingInputs, trainingOutputs); - Fit(cleanedInputs, cleanedOutputs); + var (cleanedInputs, cleanedOutputs) = RegressionOptions.OutlierRemoval?.RemoveOutliers(inputs, outputs) ?? (inputs, outputs); + var (normalizedInputs, normalizedOutputs, oosInputs, oosOutputs) = + PrepareData(cleanedInputs, cleanedOutputs, trainingSize, RegressionOptions.Normalization); + Fit(normalizedInputs, normalizedOutputs); Predictions = Transform(oosInputs); Metrics = new Metrics(Predictions, oosOutputs, inputs.Length, RegressionOptions.OutlierRemoval?.Quartile); } diff --git a/tests/AiDotNetTests.csproj b/tests/AiDotNetTests.csproj index 8b5b483..28213c0 100644 --- a/tests/AiDotNetTests.csproj +++ b/tests/AiDotNetTests.csproj @@ -11,15 +11,15 @@ - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/UnitTests/SimpleRegressionTests.cs b/tests/UnitTests/SimpleRegressionTests.cs index 822f366..a726c37 100644 --- a/tests/UnitTests/SimpleRegressionTests.cs +++ b/tests/UnitTests/SimpleRegressionTests.cs @@ -11,17 +11,17 @@ public class SimpleRegressionTests private readonly double[] _inputs = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; private readonly double[] _outputs = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; - private readonly double[] _OddOddInputs = new double[] { 75, 285, 126, 116, 156, 320, 186, 208, 144, 183, 28, 69, 106, 74, 201, 84, 48, 249, 102, 228, 60, 40, 39, 186, 28, 172, 150, 156, 9, 12, 192, 120, 90, 222, 12, 140 }; - private readonly double[] _OddOddOutputs = new double[] { 97, 72, 184, 320, 28, 304, 21, 52, 132, 198, 45, 98, 220, 188, 31, 294, 324, 195, 102, 90, 270, 122, 380, 20, 148, 183, 152, 90, 93, 48, 192, 4, 80, 198, 108, 138 }; + private readonly double[] _OddEvenInputs = new double[] { 75, 285, 126, 116, 156, 320, 186, 208, 144, 183, 28, 69, 106, 74, 201, 84, 48, 249, 102, 228, 60, 40, 39, 186, 28, 172, 150, 156, 9, 12, 192, 120, 90, 222, 12, 140 }; + private readonly double[] _OddEvenOutputs = new double[] { 97, 72, 184, 320, 28, 304, 21, 52, 132, 198, 45, 98, 220, 188, 31, 294, 324, 195, 102, 90, 270, 122, 380, 20, 148, 183, 152, 90, 93, 48, 192, 4, 80, 198, 108, 138 }; - private readonly double[] _OddEvenInputs = new double[] { 168, 14, 20, 112, 100, 158, 55, 207, 150, 198, 66, 268, 252, 136, 66, 5, 14, 50, 368, 184, 171, 288, 136, 90, 282, 46, 43, 216, 76, 15, 177, 116, 42, 152, 130, 176, 100, 276 }; - private readonly double[] _OddEvenOutputs = new double[] { 16, 54, 320, 87, 261, 20, 240, 171, 148, 16, 99, 44, 34, 272, 71, 44, 27, 188, 152, 29, 213, 38, 292, 188, 11, 396, 196, 100, 82, 97, 104, 141, 146, 65, 135, 194, 17, 150 }; + private readonly double[] _OddOddInputs = new double[] { 168, 14, 20, 112, 100, 158, 55, 207, 150, 198, 66, 268, 252, 136, 66, 5, 14, 50, 368, 184, 171, 288, 136, 90, 282, 46, 43, 216, 76, 15, 177, 116, 42, 152, 130, 176, 100, 276 }; + private readonly double[] _OddOddOutputs = new double[] { 16, 54, 320, 87, 261, 20, 240, 171, 148, 16, 99, 44, 34, 272, 71, 44, 27, 188, 152, 29, 213, 38, 292, 188, 11, 396, 196, 100, 82, 97, 104, 141, 146, 65, 135, 194, 17, 150 }; - private readonly double[] _EvenOddInputs = new double[] { 90, 57, 78, 25, 36, 60, 94, 270, 380, 240, 104, 15, 268, 261, 8, 219, 78, 74, 42, 63, 80, 51, 98, 116, 43, 332, 328, 65, 264, 380, 76, 260, 29, 231, 240, 45, 90, 180, 60, 84 }; - private readonly double[] _EvenOddOutputs = new double[] { 280, 258, 68, 91, 110, 40, 188, 258, 292, 246, 60, 304, 180, 17, 114, 11, 64, 88, 74, 165, 84, 18, 60, 48, 2, 320, 42, 224, 64, 58, 204, 134, 210, 60, 172, 104, 54, 71, 176, 340 }; + private readonly double[] _EvenEvenInputs = new double[] { 90, 57, 78, 25, 36, 60, 94, 270, 380, 240, 104, 15, 268, 261, 8, 219, 78, 74, 42, 63, 80, 51, 98, 116, 43, 332, 328, 65, 264, 380, 76, 260, 29, 231, 240, 45, 90, 180, 60, 84, 31, 112, 40, 300, 205}; + private readonly double[] _EvenEvenOutputs = new double[] { 280, 258, 68, 91, 110, 40, 188, 258, 292, 246, 60, 304, 180, 17, 114, 11, 64, 88, 74, 165, 84, 18, 60, 48, 2, 320, 42, 224, 64, 58, 204, 134, 210, 60, 172, 104, 54, 71, 176, 340, 63, 44, 1, 290, 60}; - private readonly double[] _EvenEvenInputs = new double[] { 98, 140, 148, 23, 172, 171, 64, 28, 213, 20, 294, 224, 2, 45, 90, 10, 123, 260, 178, 8, 45, 44, 180, 33, 70, 18, 158, 183, 272, 86, 68, 10, 8, 81, 117, 12, 30, 220, 200, 34, 60, 43 }; - private readonly double[] _EvenEvenOutputs = new double[] { 46, 224, 170, 22, 164, 78, 54, 63, 376, 40, 92, 180, 172, 18, 33, 12, 64, 89, 186, 42, 30, 32, 81, 126, 93, 134, 156, 12, 176, 136, 372, 82, 2, 168, 43, 76, 78, 52, 284, 49, 33, 98 }; + private readonly double[] _EvenOddInputs = new double[] { 340, 316, 270, 122, 189, 54, 280, 12, 32, 62, 51, 76, 16, 243, 70, 66, 90, 104, 288, 236, 6, 152, 76, 90, 69, 188, 208, 59, 136, 16, 208, 336, 264, 77, 116, 75, 111, 38, 148 }; + private readonly double[] _EvenOddOutputs = new double[] { 210, 132, 90, 48, 400, 178, 72, 84, 79, 122, 152, 96, 261, 22, 92, 80, 18, 122, 9, 1, 232, 220, 4, 396, 16, 16, 147, 33, 198, 45, 3, 82, 84, 18, 41, 234, 64, 32, 29 }; [Fact] public void SimpleRegression_Constructor_Throws_ArgumentNullException_When_Inputs_Is_Null() @@ -142,15 +142,15 @@ public void SimpleRegression_Constructor_Returns_Valid_Predictions_With_ZScoreNo } [Fact] - public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_StandardQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddEven_ExclusiveQuartile() { // Arrange - var q1ExpectedValue = 117.55507280870674; - var q2ExpectedValue = 125.05847199082586; - var q3ExpectedValue = 134.86129995456216; + var q1ExpectedValue = 152.0795839065193; + var q2ExpectedValue = 171.77754652688836; + var q3ExpectedValue = 195.05695689641541; // Act - var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile())}); + var sut = new SimpleRegression(_OddEvenInputs, _OddEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -160,12 +160,12 @@ public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_StandardQuartile() } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_OddEven_StandardQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddEven_StandardQuartile() { // Arrange - var q1ExpectedValue = 88.173752177739459; - var q2ExpectedValue = 128.84172997826749; - var q3ExpectedValue = 174.75718878531529; + var q1ExpectedValue = 152.0795839065193; + var q2ExpectedValue = 162.82392715399334; + var q3ExpectedValue = 195.05695689641541; // Act var sut = new SimpleRegression(_OddEvenInputs, _OddEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile()) }); @@ -178,15 +178,15 @@ public void SimpleRegression_Verify_Values_Are_correct_OddEven_StandardQuartile( } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_StandardQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddEven_InclusiveQuartile() { // Arrange - var q1ExpectedValue = 142.70566255778118; - var q2ExpectedValue = 159.12400616332820; - var q3ExpectedValue = 236.52476887519259; + var q1ExpectedValue = 156.85484757206331; + var q2ExpectedValue = 171.77754652688836; + var q3ExpectedValue = 195.05695689641541; // Act - var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile()) }); + var sut = new SimpleRegression(_OddEvenInputs, _OddEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -196,15 +196,15 @@ public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_StandardQuartile( } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenEven_StandardQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_ExclusiveQuartile() { // Arrange - var q1ExpectedValue = 29.183869666497486; - var q2ExpectedValue = 75.697713334559751; - var q3ExpectedValue = 212.13832142754239; + var q1ExpectedValue = 118.53688757999335; + var q2ExpectedValue = 138.76510111583207; + var q3ExpectedValue = 162.96333786898498; // Act - var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions { OutlierRemoval = new ThresholdOutlierRemoval() }); + var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -214,15 +214,15 @@ public void SimpleRegression_Verify_Values_Are_correct_EvenEven_StandardQuartile } [Fact] - public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_InclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_StandardQuartile() { // Arrange - var q1ExpectedValue = 118.52325334833502; - var q2ExpectedValue = 125.54256226064001; - var q3ExpectedValue = 134.86129995456216; + var q1ExpectedValue = 118.53688757999335; + var q2ExpectedValue = 138.76510111583207; + var q3ExpectedValue = 151.99851184021256; // Act - var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); + var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile()) }); // Assert var metrics = sut.Metrics; @@ -232,15 +232,15 @@ public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_InclusiveQuartile( } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_OddEven_InclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_InclusiveQuartile() { // Arrange - var q1ExpectedValue = 97.356843939149; - var q2ExpectedValue = 132.7773407331573; - var q3ExpectedValue = 185.25215079835479; + var q1ExpectedValue = 123.26310569584352; + var q2ExpectedValue = 138.76510111583207; + var q3ExpectedValue = 151.99851184021256; // Act - var sut = new SimpleRegression(_OddEvenInputs, _OddEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); + var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -250,15 +250,15 @@ public void SimpleRegression_Verify_Values_Are_correct_OddEven_InclusiveQuartile } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_InclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenEven_ExclusiveQuartile() { // Arrange - var q1ExpectedValue = 145.83296610169492; - var q2ExpectedValue = 159.1240061633282; - var q3ExpectedValue = 236.52476887519259; + var q1ExpectedValue = 123.72734667709028; + var q2ExpectedValue = 128.71082261723302; + var q3ExpectedValue = 140.7328161223196; // Act - var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -268,15 +268,15 @@ public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_InclusiveQuartile } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenEven_InclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenEven_StandardQuartile() { // Arrange - var q1ExpectedValue = 29.183869666497486; - var q2ExpectedValue = 75.697713334559751; - var q3ExpectedValue = 212.13832142754239; + var q1ExpectedValue = 123.72734667709028; + var q2ExpectedValue = 128.71082261723302; + var q3ExpectedValue = 140.7328161223196; // Act - var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile()) }); // Assert var metrics = sut.Metrics; @@ -286,15 +286,15 @@ public void SimpleRegression_Verify_Values_Are_correct_EvenEven_InclusiveQuartil } [Fact] - public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_ExclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenEven_InclusiveQuartile() { // Arrange - var q1ExpectedValue = 118.52325334833502; - var q2ExpectedValue = 125.54256226064001; - var q3ExpectedValue = 135.22436765692277; + var q1ExpectedValue = 123.72734667709028; + var q2ExpectedValue = 128.71082261723302; + var q3ExpectedValue = 140.7328161223196; // Act - var sut = new SimpleRegression(_OddOddInputs, _OddOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -304,15 +304,15 @@ public void SimpleRegression_Verify_Values_Are_Correct_OddOdd_ExclusiveQuartile( } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_OddEven_ExclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenOdd_ExclusiveQuartile() { // Arrange - var q1ExpectedValue = 88.173752177739459; - var q2ExpectedValue = 132.7773407331573; - var q3ExpectedValue = 185.25215079835479; + var q1ExpectedValue = 111.72163717784437; + var q2ExpectedValue = 123.79567181111241; + var q3ExpectedValue = 129.41379404863304; // Act - var sut = new SimpleRegression(_OddEvenInputs, _OddEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); // Assert var metrics = sut.Metrics; @@ -322,15 +322,15 @@ public void SimpleRegression_Verify_Values_Are_correct_OddEven_ExclusiveQuartile } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_ExclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenOdd_StandardQuartile() { // Arrange - var q1ExpectedValue = 142.70566255778118; - var q2ExpectedValue = 159.1240061633282; - var q3ExpectedValue = 244.08241910631742; + var q1ExpectedValue = 111.72163717784437; + var q2ExpectedValue = 123.79567181111241; + var q3ExpectedValue = 127.49180486211283; // Act - var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new StandardQuartile()) }); // Assert var metrics = sut.Metrics; @@ -340,15 +340,15 @@ public void SimpleRegression_Verify_Values_Are_correct_EvenOdd_ExclusiveQuartile } [Fact] - public void SimpleRegression_Verify_Values_Are_correct_EvenEven_ExclusiveQuartile() + public void SimpleRegression_Verify_Values_Are_Correct_EvenOdd_InclusiveQuartile() { // Arrange - var q1ExpectedValue = 29.183869666497486; - var q2ExpectedValue = 75.697713334559751; - var q3ExpectedValue = 212.13832142754239; + var q1ExpectedValue = 117.43832296339168; + var q2ExpectedValue = 123.79567181111241; + var q3ExpectedValue = 127.49180486211283; // Act - var sut = new SimpleRegression(_EvenEvenInputs, _EvenEvenOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new ExclusiveQuartile()) }); + var sut = new SimpleRegression(_EvenOddInputs, _EvenOddOutputs, new SimpleRegressionOptions() { OutlierRemoval = new IQROutlierRemoval(new InclusiveQuartile()) }); // Assert var metrics = sut.Metrics;