commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Neidhart (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MATH-588) Weighted Mean evaluation may not have optimal numerics
Date Sun, 05 Feb 2012 21:17:59 GMT

    [ https://issues.apache.org/jira/browse/MATH-588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13200902#comment-13200902
] 

Thomas Neidhart commented on MATH-588:
--------------------------------------

Corrected the equality test in r1240795 as it was leading to failure. In fact the test can
range from very small to very large values which really requires a relative error estimate.

The test is problematic in general, as it may contain values from very different scales (due
to its random nature), leading to unavoidable precision errors in the above formula.
                
> 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.1, 2.2
>            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.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message