function weightedMovingAverage(values, field, windowSize, decay) {
return values.map((d, i) => {
const window = values.slice(i + 1 - windowSize, i + 1).map((d) => d[field]);
console.log(window);
const means = window.map((d, j) => d * Math.pow(decay, windowSize - j - 1));
const base = window.map((d, j) => Math.pow(decay, windowSize - j - 1));
const weightedMean = d3.sum(means) / d3.sum(base);
return {
x: d.Date,
y: weightedMean
};
});
}