You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Warren Tang (Updated) (JIRA)" <ji...@apache.org> on 2011/10/16 19:24:11 UTC

[jira] [Updated] (MATH-691) Statistics.setVarianceImpl makes getStandardDeviation produce NaN

     [ https://issues.apache.org/jira/browse/MATH-691?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Warren Tang updated MATH-691:
-----------------------------

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

{code:title=test.java}
    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);
{code}

A workaround is:
{code:title=test.java}
    double sd = FastMath.sqrt(stats.getSecondMoment() / stats.getN());
{code}
as suggested by Mikkel.

  was:
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.

    
> 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
>   Original Estimate: 5h
>  Remaining Estimate: 5h
>
> Invoking SummaryStatistics.setVarianceImpl(new Variance(true/false) makes getStandardDeviation produce NaN. The code to reproduce it:
> {code:title=test.java}
>     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);
> {code}
> A workaround is:
> {code:title=test.java}
>     double sd = FastMath.sqrt(stats.getSecondMoment() / stats.getN());
> {code}
> 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