- /* ===========================================================
- * JFreeChart : a free chart library for the Java(tm) platform
- * ===========================================================
- *
- * (C) Copyright 2000-2005, 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., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
- * in the United States and other countries.]
- *
- * --------------------
- * RegressionTests.java
- * --------------------
- * (C) Copyright 2002-2005 by Object Refinery Limited and Contributors.
- *
- * Original Author: David Gilbert (for Object Refinery Limited);
- * Contributor(s): -;
- *
- * $Id: RegressionTests.java,v 1.2 2005/01/11 17:50:16 mungady Exp $
- *
- * Changes
- * -------
- * 30-Sep-2002 : Version 1 (DG);
- * 17-Oct-2002 : Fixed errors reported by Checkstyle (DG);
- *
- */
- package org.jfree.data.statistics.junit;
- import junit.framework.Test;
- import junit.framework.TestCase;
- import junit.framework.TestSuite;
- import org.jfree.data.statistics.Regression;
- import org.jfree.data.xy.XYDataset;
- import org.jfree.data.xy.XYSeries;
- import org.jfree.data.xy.XYSeriesCollection;
- /**
- * Tests for the {@link Regression} class.
- */
- public class RegressionTests extends TestCase {
- /**
- * Returns the tests as a test suite.
- *
- * @return The test suite.
- */
- public static Test suite() {
- return new TestSuite(RegressionTests.class);
- }
- /**
- * Constructs a new set of tests.
- *
- * @param name the name of the tests.
- */
- public RegressionTests(String name) {
- super(name);
- }
- /**
- * Checks the results of an OLS regression on sample dataset 1.
- */
- 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.
- */
- 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.
- */
- 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.
- */
- 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.
- */
- 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.
- */
- 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.
- */
- 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.
- */
- 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;
- }
- }