We need to get test cases committed for StatUtils before adding/modififying anything else. I am OK with what has been a added; but we need to comply with our stated guidelines, which require test cases for all committed code. StatUtils needs its own test cases.
--- [EMAIL PROTECTED] wrote: > mdiggory 2003/06/17 20:01:28 > > Modified: math/src/java/org/apache/commons/math/stat StatUtils.java > Log: > Adding corrected two-pass algorithm for variance calculation. > > Revision Changes Path > 1.5 +11 -2 > jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/StatUtils.java > > Index: StatUtils.java > =================================================================== > RCS file: > /home/cvs/jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/StatUtils.java,v > retrieving revision 1.4 > retrieving revision 1.5 > diff -u -r1.4 -r1.5 > --- StatUtils.java 18 Jun 2003 01:56:03 -0000 1.4 > +++ StatUtils.java 18 Jun 2003 03:01:28 -0000 1.5 > @@ -155,7 +155,14 @@ > } > > /** > - * Returns the variance of the available values. > + * Returns the variance of the available values. This uses a corrected > + * two pass algorithm of the following > + * <a href="http://lib-www.lanl.gov/numerical/bookcpdf/c14-1.pdf"> > + * corrected two pass formula (14.1.8)</a>, and also referenced > in:<p/> > + * "Algorithms for Computing the Sample Variance: Analysis and > + * Recommendations", Chan, T.F., Golub, G.H., and LeVeque, R.J. > + * 1983, American Statistician, vol. 37, pp. 242?247. > + * > * @param values Is a double[] containing the values > * @return the result, Double.NaN if no values for an empty array > * or 0.0 for a single value set. > @@ -168,10 +175,12 @@ > } else if (values.length > 1) { > double mean = mean(values); > double accum = 0.0; > + double accum2 = 0.0; > for (int i = 0; i < values.length; i++) { > accum += Math.pow((values[i] - mean), 2.0); > + accum2 += (values[i] - mean); > } > - variance = accum / (double)(values.length - 1); > + variance = (accum - > (Math.pow(accum2,2)/(double)values.length)) / > (double)(values.length - 1); > } > return variance; > } > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
