You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by br...@apache.org on 2004/03/18 06:52:37 UTC
cvs commit: jakarta-commons/math/src/test/org/apache/commons/math/stat/data CertifiedDataAbstractTest.java LewTest.java LotteryTest.java Lottery.txt Lew.txt
brentworden 2004/03/17 21:52:37
Modified: math/src/test/org/apache/commons/math/stat
CertifiedDataTest.java
math/src/test/org/apache/commons/math TestUtils.java
math/src/test/org/apache/commons/math/stat/data Lottery.txt
Lew.txt
Added: math/src/test/org/apache/commons/math/stat/data
CertifiedDataAbstractTest.java LewTest.java
LotteryTest.java
Log:
new approach to testing against certified data sets.
PR: 27692
Obtained from: Brent Worden
Submitted by: Brent Worden
Revision Changes Path
1.16 +2 -17 jakarta-commons/math/src/test/org/apache/commons/math/stat/CertifiedDataTest.java
Index: CertifiedDataTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/stat/CertifiedDataTest.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- CertifiedDataTest.java 21 Feb 2004 21:35:17 -0000 1.15
+++ CertifiedDataTest.java 18 Mar 2004 05:52:36 -0000 1.16
@@ -25,6 +25,7 @@
import java.io.InputStreamReader;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
+
/**
* Test cases for the {@link DescriptiveStatistics} class.
* @version $Revision$ $Date$
@@ -75,14 +76,6 @@
e.printStackTrace();
}
- loadStats("data/Lew.txt", u);
- assertEquals("Lew: std", std, u.getStandardDeviation(), .000000000001);
- assertEquals("Lew: mean", mean, u.getMean(), .000000000001);
-
- loadStats("data/Lottery.txt", u);
- assertEquals("Lottery: std", std, u.getStandardDeviation(), .000000000001);
- assertEquals("Lottery: mean", mean, u.getMean(), .000000000001);
-
loadStats("data/PiDigits.txt", u);
assertEquals("PiDigits: std", std, u.getStandardDeviation(), .0000000000001);
assertEquals("PiDigits: mean", mean, u.getMean(), .0000000000001);
@@ -111,14 +104,6 @@
DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- loadStats("data/Lew.txt", u);
- assertEquals("Lew: std", std, u.getStandardDeviation(), .000000000001);
- assertEquals("Lew: mean", mean, u.getMean(), .000000000001);
-
- loadStats("data/Lottery.txt", u);
- assertEquals("Lottery: std", std, u.getStandardDeviation(), .000000000001);
- assertEquals("Lottery: mean", mean, u.getMean(), .000000000001);
-
loadStats("data/PiDigits.txt", u);
assertEquals("PiDigits: std", std, u.getStandardDeviation(), .0000000000001);
assertEquals("PiDigits: mean", mean, u.getMean(), .0000000000001);
1.11 +13 -10 jakarta-commons/math/src/test/org/apache/commons/math/TestUtils.java
Index: TestUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/TestUtils.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- TestUtils.java 21 Feb 2004 21:35:16 -0000 1.10
+++ TestUtils.java 18 Mar 2004 05:52:37 -0000 1.11
@@ -19,14 +19,13 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
-import org.apache.commons.math.complex.Complex;
-
import junit.framework.Assert;
+import org.apache.commons.math.complex.Complex;
+
/**
* @version $Revision$ $Date$
*/
@@ -39,14 +38,18 @@
}
public static void assertEquals(double expected, double actual, double delta) {
- // check for NaN
- if(Double.isNaN(expected)){
- Assert.assertTrue(Double.isNaN(actual));
- } else {
- Assert.assertEquals(expected, actual, delta);
- }
+ assertEquals(null, expected, actual, delta);
}
+ public static void assertEquals(String msg, double expected, double actual, double delta) {
+ // check for NaN
+ if(Double.isNaN(expected)){
+ Assert.assertTrue(msg, Double.isNaN(actual));
+ } else {
+ Assert.assertEquals(msg, expected, actual, delta);
+ }
+ }
+
/**
*
*/
1.4 +43 -60 jakarta-commons/math/src/test/org/apache/commons/math/stat/data/Lottery.txt
Index: Lottery.txt
===================================================================
RCS file: /home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/stat/data/Lottery.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Lottery.txt 14 Nov 2003 22:22:20 -0000 1.3
+++ Lottery.txt 18 Mar 2004 05:52:37 -0000 1.4
@@ -1,63 +1,46 @@
-File Name: Lottery.dat
-
-File Format: ASCII
- Header : lines 1 to 60 (= 60)
- Certified Values: lines 41 to 43 (= 3)
- Data : lines 61 to 278 (= 218)
-
-Dataset Name: Lottery
-
-Description: This is an observed/"real world" data set
- consisting of 218 lottery values
- from September 3, 1989 to April 14, 1990 (32 weeks).
- One 3-digit random number (from 000 to 999)
- is drawn per day, 7 days per week for most
- weeks, but fewer days per week for some weeks.
- We here use this data to test accuracy
- in summary statistics calculations.
-
-Stat Category: Univariate: Summary Statistics
-
-Reference: None
-
-Data: "Real World"
- 1 Response : y = 3-digit random number
- 0 Predictors
- 218 Observations
-
-Model: Lower Level of Difficulty
- 2 Parameters : mu, sigma
- 1 Response Variable : y
- 0 Predictor Variables
-
- y = mu + e
-
-
-
-
-
-
- Certified Values
-Sample Mean ybar: 518.958715596330
-Sample Standard Deviation (denom. = n-1) s: 291.699727470969
-Sample Autocorrelation Coefficient (lag 1) r(1): -0.120948622967393
-
-Number of Observations: 218
-
-
-
-
-
-
-
-
-
-
-
-
-
-Data: Y
-----------
+#####################################################################
+# Dataset Name: Lottery
+#
+#Description: This is an observed/"real world" data set
+# consisting of 218 lottery values
+# from September 3, 1989 to April 14, 1990 (32 weeks).
+# One 3-digit random number (from 000 to 999)
+# is drawn per day, 7 days per week for most
+# weeks, but fewer days per week for some weeks.
+# We here use this data to test accuracy
+# in summary statistics calculations.
+#
+# Stat Category: Univariate: Summary Statistics
+#
+# Reference: http://www.itl.nist.gov/div898/strd/univ/lottery.html
+#
+# Data: "Real World"
+# 1 Response : y = 3-digit random number
+# 0 Predictors
+# 218 Observations
+#
+# Model: Lower Level of Difficulty
+# 2 Parameters : mu, sigma
+# 1 Response Variable : y
+# 0 Predictor Variables#
+# y = mu + e
+#####################################################################
+
+#####################################################################
+#
+# Certified Values
+#
+#####################################################################
+mean = 518.958715596330
+standardDeviation = 291.699727470969
+autocorrelationCoefficient = -0.120948622967393
+n = 218
+
+#####################################################################
+#
+# Data
+#
+#####################################################################
162
671
933
1.4 +52 -60 jakarta-commons/math/src/test/org/apache/commons/math/stat/data/Lew.txt
Index: Lew.txt
===================================================================
RCS file: /home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/stat/data/Lew.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Lew.txt 14 Nov 2003 22:22:20 -0000 1.3
+++ Lew.txt 18 Mar 2004 05:52:37 -0000 1.4
@@ -1,63 +1,55 @@
-File Name: Lew.dat
-
-File Format: ASCII
- Header : lines 1 to 60 (= 60)
- Certified Values: lines 41 to 43 (= 3)
- Data : lines 61 to 260 (= 200)
-
-Dataset Name: Lew (Beam Deflection Data)
-
-Description: This is an observed/"real world" data set
- consisting of 200 deflections of a steel-concrete
- beam while subjected to periodic pressure.
- The experimenter was H. S. Lew of the
- Center for Building Technology at NIST.
- We here use this data to test accuracy
- in summary statistics calculations.
-
-Stat Category: Univariate: Summary Statistics
-
-Reference: None
-
-Data: "Real World"
- 1 Response : y = beam deflection
- 0 Predictors
- 200 Observations
-
-Model: Lower Level of Difficulty
- 2 Parameters : mu, sigma
- 1 Response Variable : y
- 0 Predictor Variables
-
- y = mu + e
-
-
-
-
-
-
-
- Certified Values
-Sample Mean ybar: -177.435000000000
-Sample Standard Deviation (denom. = n-1) s: 277.332168044316
-Sample Autocorrelation Coefficient (lag 1) r(1): -0.307304800605679
-
-Number of Observations: 200
-
-
-
-
-
-
-
-
-
-
-
-
-
-Data: Y
-----------
+#####################################################################
+# Dataset Name: Lew (Beam Deflection Data)
+#
+# Description: This is an observed/"real world" data set
+# consisting of 200 deflections of a steel-concrete
+# beam while subjected to periodic pressure.
+# The experimenter was H. S. Lew of the
+# Center for Building Technology at NIST.
+# We here use this data to test accuracy
+# in summary statistics calculations.
+#
+# Stat Category: Univariate: Summary Statistics
+#
+# Reference: http://www.itl.nist.gov/div898/strd/univ/lew.html
+#
+# Data: "Real World"
+# 1 Response : y = beam deflection
+# 0 Predictors
+# 200 Observations
+#
+# Model: Lower Level of Difficulty
+# 2 Parameters : mu, sigma
+# 1 Response Variable : y
+# 0 Predictor Variables
+# y = mu + e
+#####################################################################
+
+#####################################################################
+#
+# Certified Values
+#
+#####################################################################
+n = 200
+mean = -177.435000000000
+standardDeviation = 277.332168044316
+autocorrelationCoefficient = -0.307304800605679
+
+#####################################################################
+#
+# R Generated Values
+#
+#####################################################################
+variance = 76913.13143
+max = 300
+min = -579
+sum = -35487
+
+#####################################################################
+#
+# Data
+#
+#####################################################################
-213
-564
-35
1.1 jakarta-commons/math/src/test/org/apache/commons/math/stat/data/CertifiedDataAbstractTest.java
Index: CertifiedDataAbstractTest.java
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.math.stat.data;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.math.TestUtils;
import org.apache.commons.math.stat.DescriptiveStatistics;
import org.apache.commons.math.stat.SummaryStatistics;
import junit.framework.TestCase;
/**
* @version $Revision: 1.1 $ $Date: 2004/03/18 05:52:37 $
*/
public abstract class CertifiedDataAbstractTest extends TestCase {
private DescriptiveStatistics descriptives;
private SummaryStatistics summaries;
private Map certifiedValues;
protected void setUp() throws Exception {
descriptives = DescriptiveStatistics.newInstance();
summaries = SummaryStatistics.newInstance();
certifiedValues = new HashMap();
loadData();
}
private void loadData() throws IOException {
BufferedReader in = null;
try {
URL resourceURL = getClass().getClassLoader().getResource(getResourceName());
in = new BufferedReader(new InputStreamReader(resourceURL.openStream()));
String line = in.readLine();
while (line != null) {
line = StringUtils.trimToNull(line);
if (line == null) {
// empty line
} else if (line.startsWith("#")) {
// comment
} else {
int n = line.indexOf('=');
if (n == -1) {
// data value
double value = Double.parseDouble(line);
descriptives.addValue(value);
summaries.addValue(value);
} else {
// certified value
String name = line.substring(0, n).trim();
String valueString = line.substring(n + 1).trim();
Double value = new Double(valueString);
certifiedValues.put(name, value);
}
}
line = in.readLine();
}
} finally {
if (in != null) {
in.close();
}
}
}
/**
* @return
*/
protected abstract String getResourceName();
protected double getMaximumAbsoluteError() {
return 1.0e-5;
}
protected void tearDown() throws Exception {
descriptives.clear();
descriptives = null;
summaries.clear();
summaries = null;
certifiedValues.clear();
certifiedValues = null;
}
public void testCertifiedValues() throws Exception {
Iterator iter = certifiedValues.keySet().iterator();
while (iter.hasNext()) {
String name = iter.next().toString();
Double expectedValue = (Double)certifiedValues.get(name);
try {
Double summariesValue = (Double)PropertyUtils.getProperty(summaries, name);
TestUtils.assertEquals("summary value for " + name + " is incorrect.",
summariesValue.doubleValue(), expectedValue.doubleValue(), getMaximumAbsoluteError());
} catch (Exception ex) {
}
try {
Double descriptivesValue = (Double)PropertyUtils.getProperty(descriptives, name);
TestUtils.assertEquals("descriptive value for " + name + " is incorrect.",
descriptivesValue.doubleValue(), expectedValue.doubleValue(), getMaximumAbsoluteError());
} catch (Exception ex) {
}
}
}
}
1.1 jakarta-commons/math/src/test/org/apache/commons/math/stat/data/LewTest.java
Index: LewTest.java
===================================================================
/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.math.stat.data;
/**
* @version $Revision: 1.1 $ $Date: 2004/03/18 05:52:37 $
*/
public class LewTest extends CertifiedDataAbstractTest {
protected String getResourceName() {
return "org/apache/commons/math/stat/data/Lew.txt";
}
}
1.1 jakarta-commons/math/src/test/org/apache/commons/math/stat/data/LotteryTest.java
Index: LotteryTest.java
===================================================================
/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.math.stat.data;
/**
* @version $Revision: 1.1 $ $Date: 2004/03/18 05:52:37 $
*/
public class LotteryTest extends CertifiedDataAbstractTest {
protected String getResourceName() {
return "org/apache/commons/math/stat/data/Lottery.txt";
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org