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