Author: psteitz
Date: Wed Dec 30 01:03:32 2009
New Revision: 894528
URL: http://svn.apache.org/viewvc?rev=894528&view=rev
Log:
Changed weighted variance computational formula to use Chan-Golub method
(consistent with unweighted version).
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/descriptive/moment/Variance.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/descriptive/moment/Variance.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/descriptive/moment/Variance.java?rev=894528&r1=894527&r2=894528&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/descriptive/moment/Variance.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/descriptive/moment/Variance.java
Wed Dec 30 01:03:32 2009
@@ -494,9 +494,11 @@
} else if (length > 1) {
double accum = 0.0;
double dev = 0.0;
+ double accum2 = 0.0;
for (int i = begin; i < begin + length; i++) {
dev = values[i] - mean;
accum += weights[i] * (dev * dev);
+ accum2 += weights[i] * dev;
}
double sumWts = 0;
@@ -505,9 +507,9 @@
}
if (isBiasCorrected) {
- var = accum / (sumWts - 1);
+ var = (accum - (accum2 * accum2 / sumWts)) / (sumWts -
1.0);
} else {
- var = accum / sumWts;
+ var = (accum - (accum2 * accum2 / sumWts)) / sumWts;
}
}
}