Created
October 7, 2019 15:26
-
-
Save yoya/dff630ce3d5796b363fba3c39ed8db17 to your computer and use it in GitHub Desktop.
Root Mean Square
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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])); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
% node rms.js
[ 1.0769230769230773, 1.6153846153846132 ]