Statistics.setVarianceImpl makes getStandardDeviation produce NaN
-----------------------------------------------------------------

                 Key: MATH-691
                 URL: https://issues.apache.org/jira/browse/MATH-691
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 2.2
         Environment: Windows 7 64-bit, java version 1.6.0_23
            Reporter: Warren Tang
            Priority: Minor


Invoking SummaryStatistics.setVarianceImpl(new Variance(true/false) makes 
getStandardDeviation produce NaN. The code to reproduce it:

    int[] scores = {1, 2, 3, 4};
    SummaryStatistics stats = new SummaryStatistics();
    stats.setVarianceImpl(new Variance(false)); //use "population variance"
    for(int i : scores) {
      stats.addValue(i);
    }
    double sd = stats.getStandardDeviation();
    System.out.println(sd);

A workaround is:
    double sd = FastMath.sqrt(stats.getSecondMoment() / stats.getN());
as suggested by Mikkel.

--
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

        

Reply via email to