node package manager

linearleastsquarescurvefit

Moore-Penrose pseudoinverse

Linear least squares

var fit = require('linearleastsquarescurvefit');

// createFittingCurveUsingDataFromArrays(vectors, target, bounded, minValues, maxValues)
//	by default bounded = false

console.log(fit.createFittingCurveUsingDataFromArrays(
	[
		[1, 1, 1, 1, 1, 1, 1],
		[0, 1, 2, 3, 4, 5, 6],
		[0, 1, 4, 9, 16, 25, 36],
		[0, 1, 8, 27, 64, 125, 216]
	],
	[0, 1, 10, 100, 10, 1, 0]));

// Output: [-9.952380952380958,32.85714285714285,-5.476190476190406,-1.6653345369377348e-16]

// *****************************************************************************************

// createFittingCurveUsingFunctions(functions, x, y, bounded, minValues, maxValues)
//	by default bounded = false

console.log(fit.createFittingCurveUsingFunctions(
	[
        function (x) { return 1; }, 
	    function (x) { return x; }, 
		function (x) { return x * x; }, 
		function (x) { return x * x * x; }
	],
	[0, 1, 2, 3, 4, 5, 6], 
	[0, 1, 10, 100, 10, 1, 0])
); 

// Output: [-9.952380952380958,32.85714285714285,-5.476190476190406,-1.6653345369377348e-16]

console.log(fit.createFittingCurveUsingFunctions(
	[
		function (x) { return 1; }, 
		function (x) { return x; }, 
		function (x) { return x * x; }, 
		function (x) { return Math.log(x) }],
	[1, 2, 3, 4, 5, 6, 7, 8, 9], 
	[0, 1, 4, 10, 100, 118, 125, 129, 131])
); 

// Output: [-142.23863430119385,155.2255477329857,-7.834175796848122,-222.95737398530258]

// *****************************************************************************************

// example_data.csv
// 0.00386592;0.006645011;0.011108997;0.018063013;0.028565501;0.043936934;0.065728529; ...
// 3.73E-06;8.46E-06;1.87E-05;4.01E-05;8.36E-05;0.000169857;0.000335463;0.00064438; ...
// 2.23E-10;6.69E-10;1.95E-09;5.53E-09;1.52E-08;4.08E-08;1.06E-07;2.70E-07;6.66E-07; ...
// 8.32E-16;3.29E-15;1.27E-14;4.74E-14;1.72E-13;6.10E-13;2.10E-12;7.03E-12;2.29E-11; ...
// 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2; ...	

// xxx; xxx; xxx; xxx; ... xxx      <-
// yyy; yyy; yyy; yyy; ... yyy      <-
// ...								<-	component data	
// zzz; zzz; zzz; zzz; ... zzz		<- 
// ttt; ttt; ttt; ttt; ... ttt		<-	target vector	

// createFittingCurveUsingDataFromCSVFile(
//		dataPath, 
//		callback, 
//		bounded, 
//		minValue, 
//		maxValue, 
//		delimiterChar)
//	by default bounded = false,  delimiterChar = ';' 

fit.createFittingCurveUsingDataFromCSVFile("example_data.csv", 
    function (result) { 
	console.log(result); 
	}, true, 0, 1, ';'
);

// Output: [0,1,1,0]

// *****************************************************************************************