content: /* ===========================================================
   * JFreeChart : a free chart library for the Java(tm) platform
   * ===========================================================
   *
   * (C) Copyright 2000-2012, by Object Refinery Limited and Contributors.
   *
   * Project Info:  http://www.jfree.org/jfreechart/index.html
   *
   * This library is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2.1 of the License, or
   * (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful, but
   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
   * License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
   * USA.
   *
   * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
   * Other names may be trademarks of their respective owners.]
   *
   * --------------------
   * RegressionTests.java
   * --------------------
   * (C) Copyright 2002-2008, by Object Refinery Limited and Contributors.
   *
   * Original Author:  David Gilbert (for Object Refinery Limited);
   * Contributor(s):   -;
   *
   * Changes
   * -------
   * 30-Sep-2002 : Version 1 (DG);
   * 17-Oct-2002 : Fixed errors reported by Checkstyle (DG);
   *
   */
  
  package org.jfree.data.statistics;
  
  import org.jfree.data.xy.XYDataset;
  import org.jfree.data.xy.XYSeries;
  import org.jfree.data.xy.XYSeriesCollection;
  import org.junit.Test;
  
  import static org.junit.Assert.assertEquals;
  
  /**
   * Tests for the {@link Regression} class.
   */
  public class RegressionTest  {
  
  
  
  
  
      /**
       * Checks the results of an OLS regression on sample dataset 1.
       */
      @Test
      public void testOLSRegression1a() {
  
          double[][] data = createSampleData1();
          double[] result1 = Regression.getOLSRegression(data);
          assertEquals(.25680930, result1[0], 0.0000001);
          assertEquals(0.72792106, result1[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of an OLS regression on sample dataset 1 AFTER
       * converting it to an XYSeries.
       */
      @Test
      public void testOLSRegression1b() {
  
          double[][] data = createSampleData1();
  
          XYSeries series = new XYSeries("Test");
          for (int i = 0; i < 11; i++) {
              series.add(data[i][0], data[i][1]);
          }
          XYDataset ds = new XYSeriesCollection(series);
          double[] result2 = Regression.getOLSRegression(ds, 0);
  
          assertEquals(.25680930, result2[0], 0.0000001);
          assertEquals(0.72792106, result2[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of a power regression on sample dataset 1.
       */
      @Test
      public void testPowerRegression1a() {
  
          double[][] data = createSampleData1();
          double[] result = Regression.getPowerRegression(data);
          assertEquals(0.91045813, result[0], 0.0000001);
          assertEquals(0.88918346, result[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of a power regression on sample dataset 1 AFTER
       * converting it to an XYSeries.
       */
      @Test
      public void testPowerRegression1b() {
  
          double[][] data = createSampleData1();
  
          XYSeries series = new XYSeries("Test");
          for (int i = 0; i < 11; i++) {
              series.add(data[i][0], data[i][1]);
          }
          XYDataset ds = new XYSeriesCollection(series);
          double[] result = Regression.getPowerRegression(ds, 0);
  
          assertEquals(0.91045813, result[0], 0.0000001);
          assertEquals(0.88918346, result[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of an OLS regression on sample dataset 2.
       */
      @Test
      public void testOLSRegression2a() {
  
          double[][] data = createSampleData2();
          double[] result = Regression.getOLSRegression(data);
          assertEquals(53.9729697, result[0], 0.0000001);
          assertEquals(-4.1823030, result[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of an OLS regression on sample dataset 2 AFTER
       * converting it to an XYSeries.
       */
      @Test
      public void testOLSRegression2b() {
  
          double[][] data = createSampleData2();
  
          XYSeries series = new XYSeries("Test");
          for (int i = 0; i < 10; i++) {
              series.add(data[i][0], data[i][1]);
          }
          XYDataset ds = new XYSeriesCollection(series);
          double[] result = Regression.getOLSRegression(ds, 0);
  
          assertEquals(53.9729697, result[0], 0.0000001);
          assertEquals(-4.1823030, result[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of a power regression on sample dataset 2.
       */
      @Test
      public void testPowerRegression2a() {
  
          double[][] data = createSampleData2();
          double[] result = Regression.getPowerRegression(data);
          assertEquals(106.1241681, result[0], 0.0000001);
          assertEquals(-0.8466615, result[1], 0.0000001);
  
      }
  
      /**
       * Checks the results of a power regression on sample dataset 2 AFTER
       * converting it to an XYSeries.
       */
      @Test
      public void testPowerRegression2b() {
  
          double[][] data = createSampleData2();
  
          XYSeries series = new XYSeries("Test");
          for (int i = 0; i < 10; i++) {
              series.add(data[i][0], data[i][1]);
          }
          XYDataset ds = new XYSeriesCollection(series);
          double[] result = Regression.getPowerRegression(ds, 0);
  
          assertEquals(106.1241681, result[0], 0.0000001);
          assertEquals(-0.8466615, result[1], 0.0000001);
  
      }
  
      /**
       * Creates and returns a sample dataset.
       * <P>
       * The data is taken from Table 11.2, page 313 of "Understanding Statistics"
       * by Ott and Mendenhall (Duxbury Press).
       *
       * @return The sample data.
       */
      private double[][] createSampleData1() {
  
          double[][] result = new double[11][2];
  
          result[0][0] = 2.00;
          result[0][1] = 1.60;
          result[1][0] = 2.25;
          result[1][1] = 2.00;
          result[2][0] = 2.60;
          result[2][1] = 1.80;
          result[3][0] = 2.65;
          result[3][1] = 2.80;
          result[4][0] = 2.80;
          result[4][1] = 2.10;
          result[5][0] = 3.10;
          result[5][1] = 2.00;
          result[6][0] = 2.90;
          result[6][1] = 2.65;
          result[7][0] = 3.25;
          result[7][1] = 2.25;
          result[8][0] = 3.30;
          result[8][1] = 2.60;
          result[9][0] = 3.60;
          result[9][1] = 3.00;
          result[10][0] = 3.25;
          result[10][1] = 3.10;
  
          return result;
  
      }
  
      /**
       * Creates a sample data set.
       *
       * @return The sample data.
       */
      private double[][] createSampleData2() {
  
          double[][] result = new double[10][2];
  
          result[0][0] = 2;
          result[0][1] = 56.27;
          result[1][0] = 3;
          result[1][1] = 41.32;
          result[2][0] = 4;
          result[2][1] = 31.45;
          result[3][0] = 5;
          result[3][1] = 30.05;
          result[4][0] = 6;
          result[4][1] = 24.69;
          result[5][0] = 7;
          result[5][1] = 19.78;
          result[6][0] = 8;
          result[6][1] = 20.94;
          result[7][0] = 9;
          result[7][1] = 16.73;
          result[8][0] = 10;
          result[8][1] = 14.21;
          result[9][0] = 11;
          result[9][1] = 12.44;
  
          return result;
  
      }
  
  }
  