UNPKG

vega-statistics

Version:

Statistical routines and probability distributions.

31 lines (26 loc) 794 B
import ols from './ols.js'; import {visitPoints} from './points.js'; import rSquared from './r-squared.js'; // Adapted from d3-regression by Harry Stevens // License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE export default function(data, x, y) { let X = 0, Y = 0, XY = 0, X2 = 0, YS = 0, n = 0; visitPoints(data, x, y, (dx, dy) => { const lx = Math.log(dx), ly = Math.log(dy); ++n; X += (lx - X) / n; Y += (ly - Y) / n; XY += (lx * ly - XY) / n; X2 += (lx * lx - X2) / n; YS += (dy - YS) / n; }); const coef = ols(X, Y, XY, X2), predict = x => coef[0] * Math.pow(x, coef[1]); coef[0] = Math.exp(coef[0]); return { coef: coef, predict: predict, rSquared: rSquared(data, x, y, YS, predict) }; }