Skip to content

Instantly share code, notes, and snippets.

@yoya
Created October 7, 2019 15:26
Show Gist options
  • Save yoya/dff630ce3d5796b363fba3c39ed8db17 to your computer and use it in GitHub Desktop.
Save yoya/dff630ce3d5796b363fba3c39ed8db17 to your computer and use it in GitHub Desktop.
Root Mean Square
// https://mathtrain.jp/leastsquares
// https://mathtrain.jp/covariance
function rms(xArr, yArr) {
var count = xArr.length;
if (count !== yArr.length) {
return false;
}
var xMean = xArr.reduce(function(a, b) { return a + b; }) / count;
var yMean = yArr.reduce(function(a, b) { return a + b; }) / count;
var xyMean = 0;
for (var i = 0 ; i < count ; i++) {
xyMean += xArr[i] * yArr[i];
}
xyMean /= count;
var xVar = 0;
for (var i = 0 ; i < count ; i++) {
xVar += (xArr[i] - xMean)**2;
}
xVar /= count;
var xyCov = xyMean - xMean * yMean;
// RMS
var slope = xyCov / xVar;
var intercept = yMean - slope * xMean;
//console.log("xMean:"+xMean, "yMean:"+yMean, "xyMean:"+xyMean)
//console.log("xVar:"+xVar);
//console.log("xyCov:"+xyCov);
//console.log("slope:"+slope, "intercept:"+intercept);
return [slope, intercept];
}
console.log(rms([2, 4, 9],
[3, 7, 11]));
@yoya
Copy link
Author

yoya commented Oct 7, 2019

% node rms.js
[ 1.0769230769230773, 1.6153846153846132 ]

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