variance.js 648 B

123456789101112131415161718192021222324252627282930313233
  1. import number from "./number";
  2. export default function(values, valueof) {
  3. var n = values.length,
  4. m = 0,
  5. i = -1,
  6. mean = 0,
  7. value,
  8. delta,
  9. sum = 0;
  10. if (valueof == null) {
  11. while (++i < n) {
  12. if (!isNaN(value = number(values[i]))) {
  13. delta = value - mean;
  14. mean += delta / ++m;
  15. sum += delta * (value - mean);
  16. }
  17. }
  18. }
  19. else {
  20. while (++i < n) {
  21. if (!isNaN(value = number(valueof(values[i], i, values)))) {
  22. delta = value - mean;
  23. mean += delta / ++m;
  24. sum += delta * (value - mean);
  25. }
  26. }
  27. }
  28. if (m > 1) return sum / (m - 1);
  29. }