Get Mean and Standard Deviation from an Array of Numbers Using Vanilla JavaScript

One way to get the mean and the standard deviation from an array of numbers is to use math.js.

<script src = "https://cdnjs.cloudflare.com/ajax/libs/mathjs/10.1.1/math.js"></script>
<script>
var arr = [1,2,3];
console.log(math.mean(arr));
// returns 2
console.log(math.std(arr));
// returns 1
</script>

What if we don't want to use any third party libraries.

We can build our own mean or standard deviation calculation function using vanilla JavaScript.

Mean

function getMean(array){
	var total = 0;
        array.forEach(x=>{
		total += x;
	});
	return total/array.length;
};

Standard Deviation Unbiased

function getStd(array){
	var total = 0;
	var l = array.length;
        array.forEach(x=>{
		total += x;
	});
	var mean = total/l;
	var squareErrors = 0.;
 	array.forEach(x=>{
		squareErrors += Math.pow(x-mean,2);
	});
	return Math.sqrt(squareErrors/(l-1));
};

Standard Deviation Biased

function getStdBiased(array){
	var total = 0;
	var l = array.length;
        array.forEach(x=>{
		total += x;
	});
	var mean = total/l;
	var squareErrors = 0.;
 	array.forEach(x=>{
		squareErrors += Math.pow(x-mean,2)
	});
	return Math.sqrt(squareErrors/l)
};

Variance Unbiased

function getVarianceUnbiased(array){
	var total = 0;
	var l = array.length;
        array.forEach(x=>{
		total += x;
	});
	var mean = total/l;
	var squareErrors = 0.;
 	array.forEach(x=>{
		squareErrors += Math.pow(x-mean,2)
	});
	return squareErrors/(l-1);
};

Variance Biased

function getVarianceBiased(array){
	var total = 0;
	var l = array.length;
        array.forEach(x=>{
		total += x;
	});
	var mean = total/l;
	var squareErrors = 0.;
 	array.forEach(x=>{
		squareErrors += Math.pow(x-mean,2)
	});
	return squareErrors/l;
};

We can also use the magical array.reduce method.

Mean

var myMean = somearray.reduce((a,b,c,d)=>{
        if(c == d.length-1){
		return (a+b)/d.length;
	};
	return a+b;
});

Standard Deviation Unbiased

var myStd = somearray.reduce((a,b,c,d)=>{
	var l = d.length;
        if(c == l-1){	
		var mean = (a+b)/d.length;
		var squareErrors = 0;
		for(let i = 0; i < l; i++){
			squareErrors += Math.pow(d[i]-mean,2);
		};
		return Math.sqrt(squareErrors/(l-1));
	};
	return a+b;
});

Standard Deviation Biased

var myStd = somearray.reduce((a,b,c,d)=>{
	var l = d.length;
        if(c == l-1){	
		var mean = (a+b)/d.length;
		var squareErrors = 0;
		for(let i = 0; i < l; i++){
			squareErrors += Math.pow(d[i]-mean,2);
		};
		return Math.sqrt(squareErrors/l);
	};
	return a+b;
});

Variance Unbiased

var myStd = somearray.reduce((a,b,c,d)=>{
	var l = d.length;
        if(c == l-1){	
		var mean = (a+b)/d.length;
		var squareErrors = 0;
		for(let i = 0; i < l; i++){
			squareErrors += Math.pow(d[i]-mean,2);
		};
		return squareErrors/(l-1);
	};
	return a+b;
});

Variance Biased

var myStd = somearray.reduce((a,b,c,d)=>{
	var l = d.length;
        if(c == l-1){	
		var mean = (a+b)/d.length;
		var squareErrors = 0;
		for(let i = 0; i < l; i++){
			squareErrors += Math.pow(d[i]-mean,2);
		};
		return squareErrors/l;
	};
	return a+b;
});

Comments

Popular posts from this blog

How to Make A Reusable Image Slideshow HTML Component With Vanilla JavaScript

HTML Tags and Inline CSS that Work In Plotly.js Title

How to Type Spaces In HTML Input And Display In the Browser