Val Town is a social website to write and deploy JavaScript.
Build APIs and schedule functions from your browser.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { sum } from "https://esm.town/v/stevekrouse/sum";
export const nowcastPMAqi = (values: number[]): number => {
const min = Math.min(...values);
const max = Math.max(...values);
const range = max - min;
const scaledRateOfChange = range / max;
const weight = 1 - scaledRateOfChange < 0.5 ? 0.5 : 1 - scaledRateOfChange;
const weightedValues = values.map((o, i) => o * Math.pow(weight, i));
const weightedValuesSum = sum(weightedValues);
const weightFactorSum = sum(
values.map((o, i) => Math.pow(weight, i)),
);
return parseFloat((weightedValuesSum / weightFactorSum).toFixed(1));
};
// Forked from @russbiggs.nowcastPMAqi
October 23, 2023