lstsq-test.js (1504B)
1 var vows = require('vows'); 2 var assert = require('assert'); 3 var suite = vows.describe('jStat'); 4 5 require('../env.js'); 6 7 suite.addBatch({ 8 'least squard solver by QR decomposition': { 9 'topic': function() { 10 return jStat; 11 }, 12 'matrix call': function(jStat) { 13 var A=jStat.arange(100).map(function() { 14 return jStat.arange(3).map(function() { 15 return jStat.normal.sample(0, 1) 16 }); 17 }); 18 var e=jStat.arange(100).map(function() { 19 return [jStat.normal.sample(0, 1) * 0.001]; 20 }); 21 var coef = [[1], [2], [3]]; 22 var y = jStat.add(jStat.multiply(A, coef), e); 23 var coef_bar = jStat.lstsq(A, y); 24 var tol = 0.1; 25 assert.epsilon(tol, coef_bar[0][0] ,1); 26 assert.epsilon(tol, coef_bar[1][0] ,2); 27 assert.epsilon(tol, coef_bar[2][0] ,3); 28 }, 29 'array call': function(jStat) { 30 var A = jStat.arange(100).map(function() { 31 return jStat.arange(3).map(function() { 32 return jStat.normal.sample(0, 1); 33 }); 34 }); 35 var e = jStat.arange(100).map(function() { 36 return [jStat.normal.sample(0, 1) * 0.001]; 37 }); 38 var coef = [[1], [2], [3]]; 39 var y = jStat.add(jStat.multiply(A, coef), e); 40 y = y.map(function(i){ return i[0] }); 41 var coef_bar = jStat.lstsq(A,y); 42 var tol = 0.1; 43 assert.epsilon(tol, coef_bar[0] ,1); 44 assert.epsilon(tol, coef_bar[1] ,2); 45 assert.epsilon(tol, coef_bar[2] ,3); 46 } 47 } 48 }); 49 50 suite.export(module);