Weighted Mean evaluation may not have optimal numerics
------------------------------------------------------
Key: MATH-588
URL: https://issues.apache.org/jira/browse/MATH-588
Project: Commons Math
Issue Type: Bug
Affects Versions: 2.2, 2.1
Reporter: Phil Steitz
Fix For: 3.0
I recently got this in a test run
{code}
testWeightedConsistency(org.apache.commons.math.stat.descriptive.moment.MeanTest)
Time elapsed: 0 sec <<< FAILURE!
java.lang.AssertionError: expected:<0.002282165958997601> but
was:<0.002282165958997157>
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.failNotEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:441)
at
org.apache.commons.math.TestUtils.assertRelativelyEquals(TestUtils.java:178)
at
org.apache.commons.math.TestUtils.assertRelativelyEquals(TestUtils.java:153)
at
org.apache.commons.math.stat.descriptive.UnivariateStatisticAbstractTest.testWeightedConsistency(UnivariateStatisticAbstractTest.java:170)
{code}
The correction formula used to compute the unweighted mean may not be
appropriate or optimal in the presence of weights:
{code}
// Compute initial estimate using definitional formula
double sumw = sum.evaluate(weights,begin,length);
double xbarw = sum.evaluate(values, weights, begin, length) / sumw;
// Compute correction factor in second pass
double correction = 0;
for (int i = begin; i < begin + length; i++) {
correction += weights[i] * (values[i] - xbarw);
}
return xbarw + (correction/sumw);
{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira