General-purpose forecasting utilities
Go to file
2022-04-24 18:50:03 -04:00
packages/aggregation tweak: use lerna 2022-04-24 18:50:03 -04:00
index.js tweak: use lerna 2022-04-24 18:50:03 -04:00
lerna.json tweak: use lerna 2022-04-24 18:50:03 -04:00
package-lock.json 0.1.0 2022-04-22 00:22:25 -04:00
package.json tweak: use lerna 2022-04-24 18:50:03 -04:00
README.md tweak: additional example of invalid array 2022-04-22 21:41:29 -04:00

About

This package contains a series of utilities related to forecasting. It is currently in alpha. So far, it only contains utilities related to forecast aggregation, but I may add content related to scoring, charts, etc.

Built with

Getting started

Installation

npm install forecasting

Usage

Aggregation


```js
import {
  median,
  arithmeticMean,
  geometricMean,
  geometricMeanOfOdds,
  extremizedGeometricMeanOfOdds,
  neyman,
} from "@forecasting/aggregation";

let ps = [0.1, 0.2, 0.4, 0.5];
console.log(ps);

console.log(median(ps));
console.log(arithmeticMean(ps));
console.log(geometricMean(ps));
console.log(geometricMeanOfOdds(ps));
console.log(extremizedGeometricMeanOfOdds(ps, 1.5)); // 1.5 is the extremization factor
console.log(extremizedGeometricMeanOfOdds(ps, 2.5));
console.log(neyman(ps));

// invalid inputs, will return -1
let notArrayOfProbabilities0 = "Hello world!";
console.log(arithmeticMean(notArrayOfProbabilities0)); // -1
let notArrayOfProbabilities1 = [];
console.log(arithmeticMean(notArrayOfProbabilities1)); // -1
let notArrayOfProbabilities2 = ["a"];
console.log(arithmeticMean(notArrayOfProbabilities2)); // -1
let notArrayOfProbabilities3 = [2, 4, 5];
console.log(arithmeticMean(notArrayOfProbabilities3)); // -1
let notArrayOfProbabilities4 = [0.2, 4, 5];
console.log(arithmeticMean(notArrayOfProbabilities4)); // -1

const chosenAggregationMethod = neyman;
const getAggregatedProbabilities = (array) => {
  let result = neyman(array);
  if (result == -1) {
    // handle case somehow; maybe throw an error, e.g.:
    // throw new Error("Invalid array of probabilities")
  } else {
    return result;
  }
};

You may also install [@forecasting/aggregation](https://www.npmjs.com/package/@forecasting/aggregation) directly

#### Scoring

To be done

#### Charts

To be done

## Roadmap

- [ ] Do another repository for scoring methods
- [ ] Do another repository for charts