Skip to content

Instantly share code, notes, and snippets.

@mxriverlynn
Last active April 15, 2020 14:27
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save mxriverlynn/b7c6615ecf1fe9ad60a8 to your computer and use it in GitHub Desktop.
Save mxriverlynn/b7c6615ecf1fe9ad60a8 to your computer and use it in GitHub Desktop.
Standard deviation, in JavaScript
var sum = values.reduce(function(sum, value){
return sum + value;
}, 0);
var avg = sum / data.length;
var diffs = values.map(function(value){
var diff = value - avg;
return diff;
});
var squareDiffs = values.map(function(value){
var diff = value - avg;
var sqr = diff * diff;
return sqr;
});
function average(data){
var sum = data.reduce(function(sum, value){
return sum + value;
}, 0);
var avg = sum / data.length;
return avg;
}
var avgSquareDiff = average(squareDiffs);
var stdDev = Math.sqrt(avgSquareDiff);
function standardDeviation(values){
var avg = average(values);
var squareDiffs = values.map(function(value){
var diff = value - avg;
var sqrDiff = diff * diff;
return sqrDiff;
});
var avgSquareDiff = average(squareDiffs);
var stdDev = Math.sqrt(avgSquareDiff);
return stdDev;
}
function average(data){
var sum = data.reduce(function(sum, value){
return sum + value;
}, 0);
var avg = sum / data.length;
return avg;
}
@Fordi
Copy link

Fordi commented Oct 20, 2016

1.js should read:

var sum = values.reduce(function(sum, value){
  return sum + value;
}, 0);

var avg = sum / values.length;

@georgybu
Copy link

georgybu commented Mar 4, 2018

es6 version. each fn - lambda

standardDeviation(values) {
        const average = (data) => data.reduce((sum, value) => sum + value, 0) / data.length;
        
        const avg = average(values);
        const diffs = values.map((value) => value - avg);
        const squareDiffs = diffs.map((diff) => diff * diff);
        const avgSquareDiff = average(squareDiffs);
        return Math.sqrt(avgSquareDiff);
};

@loke-dev
Copy link

loke-dev commented Oct 2, 2018

const average = data => data.reduce((sum, value) => sum + value) / data.length
const standardDeviation = values => Math.sqrt(average(values.map(value => (value - average(values)) ** 2)))

standardDeviation([4, 8, 2, 4, 5])

2 liner ES6

@webdev23
Copy link

webdev23 commented Nov 3, 2018

Array.prototype.stDev = function stDev() {
   const average = data => data.reduce((sum, value) => sum + value) / data.length
   return Math.sqrt(average(this.map(value => (value - average(this)) ** 2)))
};
[4, 8, 2, 4, 5].stDev()

@rubenlg
Copy link

rubenlg commented Dec 12, 2019

This doesn't compute standard deviation, it computes the uncorrected standard deviation, because it uses 1/N. The denominator for stdev should be N-1, not N. The squared differences should not be averaged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment