time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

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);