nostradamus

0.1.0 • Public • Published

Nostradamus.js


-- is a time-series forecasting tool for Node.js

-- uses triple exponential smoothing via the Holt-Winters approach

-- works best with seasonal && trending data

-- can be quite useful in a machine context


$ npm install nostradamus


Option 1:

// plain-vanilla
var forecast = require('nostradamus')
  , data = [
  	  362, 385, 432, 341, 382, 409,
	  498, 387, 473, 513, 582, 474,
	  544, 582, 681, 557, 628, 707,
	  773, 592, 627, 725, 854, 661
    ]
  , alpha = 0.5  // overall smoothing component
  , beta = 0.4   // trend smoothing component
  , gamma = 0.6  // seasonal smoothing component
  , period = 4   // # of observations per season
  , m = 4        // # of future observations to forecast
  , predictions = [];

predictions = forecast(data, alpha, beta, gamma, period, m);
// -> [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 594.8043646513713, 357.12171044215734, …]

Option 2:

// faster w/ reuse of internal arrays
// if you know you'll be feeding it
// the same # of data, same params (alpha, beta, etc.),
// and you need to throw tons of data at it

var setupForecast = require('nostradamus').memo  // note the (dot)memo
  , forecast
  , data = [
  	  362, 385, 432, 341, 382, 409,
	  498, 387, 473, 513, 582, 474,
	  544, 582, 681, 557, 628, 707,
	  773, 592, 627, 725, 854, 661
    ]
  , predictions = [];
  
forecast = setupForecast({
  length: data.length,
  alpha: 0.5,  // overall smoothing component
  beta: 0.4,   // trend smoothing component
  gamma: 0.6,  // seasonal smoothing component
  period: 4,   // # of observations per season
  m: 4         // # of future observations to forecase
});

predictions = forecast(data);
// -> [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 594.8043646513713, 357.12171044215734, …]

forecast([…]);
forecast([…]);
forecast([…]);
…

Some rules your parameters must abide by:

  • alpha >= 0.0 && alpha >= 1.0
  • beta >= 0.0 && beta <= 1.0
  • gamma >= 0.0 && gamma <= 1.0
  • m > 0
  • m <= period

This project would't exist, if not for the versions written in Go and Java. Thanks!

Readme

Keywords

none

Package Sidebar

Install

npm i nostradamus

Weekly Downloads

39

Version

0.1.0

License

MIT

Last publish

Collaborators

  • thick