You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2012/02/07 22:22:34 UTC
svn commit: r1241632 - in
/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference:
OneWayAnova.java OneWayAnovaImpl.java
Author: tn
Date: Tue Feb 7 21:22:33 2012
New Revision: 1241632
URL: http://svn.apache.org/viewvc?rev=1241632&view=rev
Log:
Added algorithm convergence throws clauses to OneWayAnova classes as replacement of the generic MathException.
JIRA: MATH-488
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnova.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnovaImpl.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnova.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnova.java?rev=1241632&r1=1241631&r2=1241632&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnova.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnova.java Tue Feb 7 21:22:33 2012
@@ -16,7 +16,9 @@
*/
package org.apache.commons.math.stat.inference;
+import org.apache.commons.math.exception.ConvergenceException;
import org.apache.commons.math.exception.DimensionMismatchException;
+import org.apache.commons.math.exception.MaxCountExceededException;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.OutOfRangeException;
@@ -76,9 +78,12 @@ public interface OneWayAnova {
* @throws DimensionMismatchException if the length of the <code>categoryData</code>
* array is less than 2 or a contained <code>double[]</code> array does not have
* at least two values
+ * @throws ConvergenceException if the p-value can not be computed due to a convergence error
+ * @throws MaxCountExceededException if the maximum number of iterations is exceeded
*/
double anovaPValue(Collection<double[]> categoryData)
- throws NullArgumentException, DimensionMismatchException;
+ throws NullArgumentException, DimensionMismatchException,
+ ConvergenceException, MaxCountExceededException;
/**
* Performs an ANOVA test, evaluating the null hypothesis that there
@@ -103,8 +108,11 @@ public interface OneWayAnova {
* array is less than 2 or a contained <code>double[]</code> array does not have
* at least two values
* @throws OutOfRangeException if <code>alpha</code> is not in the range (0, 0.5]
+ * @throws ConvergenceException if the p-value can not be computed due to a convergence error
+ * @throws MaxCountExceededException if the maximum number of iterations is exceeded
*/
boolean anovaTest(Collection<double[]> categoryData, double alpha)
- throws NullArgumentException, DimensionMismatchException, OutOfRangeException;
+ throws NullArgumentException, DimensionMismatchException, OutOfRangeException,
+ ConvergenceException, MaxCountExceededException;
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnovaImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnovaImpl.java?rev=1241632&r1=1241631&r2=1241632&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnovaImpl.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/OneWayAnovaImpl.java Tue Feb 7 21:22:33 2012
@@ -19,8 +19,9 @@ package org.apache.commons.math.stat.inf
import java.util.Collection;
import org.apache.commons.math.distribution.FDistribution;
+import org.apache.commons.math.exception.ConvergenceException;
import org.apache.commons.math.exception.DimensionMismatchException;
-import org.apache.commons.math.exception.MathIllegalArgumentException;
+import org.apache.commons.math.exception.MaxCountExceededException;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.OutOfRangeException;
import org.apache.commons.math.exception.util.LocalizedFormats;
@@ -67,9 +68,11 @@ public class OneWayAnovaImpl implements
* here</a></p>
*/
public double anovaFValue(Collection<double[]> categoryData)
- throws MathIllegalArgumentException {
+ throws NullArgumentException, DimensionMismatchException {
+
AnovaStats a = anovaStats(categoryData);
return a.F;
+
}
/**
@@ -83,10 +86,13 @@ public class OneWayAnovaImpl implements
* is the commons-math implementation of the F distribution.</p>
*/
public double anovaPValue(Collection<double[]> categoryData)
- throws NullArgumentException, DimensionMismatchException {
+ throws NullArgumentException, DimensionMismatchException,
+ ConvergenceException, MaxCountExceededException {
+
AnovaStats a = anovaStats(categoryData);
FDistribution fdist = new FDistribution(a.dfbg, a.dfwg);
return 1.0 - fdist.cumulativeProbability(a.F);
+
}
/**
@@ -101,12 +107,15 @@ public class OneWayAnovaImpl implements
* <p>True is returned iff the estimated p-value is less than alpha.</p>
*/
public boolean anovaTest(Collection<double[]> categoryData, double alpha)
- throws NullArgumentException, DimensionMismatchException, OutOfRangeException {
+ throws NullArgumentException, DimensionMismatchException, OutOfRangeException,
+ ConvergenceException, MaxCountExceededException {
+
if ((alpha <= 0) || (alpha > 0.5)) {
throw new OutOfRangeException(LocalizedFormats.OUT_OF_BOUND_SIGNIFICANCE_LEVEL,
alpha, 0, 0.5);
}
return anovaPValue(categoryData) < alpha;
+
}