From 8fb3668df260a3b650c54df4922781c98f1ee3e2 Mon Sep 17 00:00:00 2001 From: Jaap van Ekris <82339657+JaapvanEkris@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:05:46 +0100 Subject: [PATCH] Implemented the Goodness of Fit indicator --- app/engine/utils/FullTSQuadraticSeries.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/engine/utils/FullTSQuadraticSeries.js b/app/engine/utils/FullTSQuadraticSeries.js index e51b3c8..12d2d8d 100644 --- a/app/engine/utils/FullTSQuadraticSeries.js +++ b/app/engine/utils/FullTSQuadraticSeries.js @@ -129,17 +129,27 @@ function createTSQuadraticSeries (maxSeriesLength = 0) { function goodnessOfFit () { // This function returns the R^2 as a goodness of fit indicator - // ToDo: calculate the goodness of fit when called + let i = 0 + let ssr = 0 + let sst = 0 if (X.length() >= 2) { - // return _goodnessOfFit - return 1 + while (i < X.length() - 1) { + ssr =+ Math.pow((Y.get(i) - projectX(X.get(i))), 2) + sst =+ Math.pow((Y.get(i) - Y.average()), 2) + i++ + } + if (sst !== 0) { + const _goodnessOfFit = 1 - (ssr / sst) + return _goodnessOfFit + } else { + return 0 + } } else { return 0 } } function projectX (x) { - const _C = coefficientC() if (X.length() > 2) { return ((_A * x * x) + (_B * x) + _C) } else {