UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

55 lines (54 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLowVarianceInfo = exports.findLowVariance = void 0; var lodash_1 = require("lodash"); var data_1 = require("../../../data"); var util_1 = require("../util"); // Coefficient of variation threshold var CV_THRESHOLD = 0.15; function findLowVariance(values, lowVarianceParameter) { var cv = (0, data_1.coefficientOfVariance)(values); var cvThreshold = (lowVarianceParameter === null || lowVarianceParameter === void 0 ? void 0 : lowVarianceParameter.cvThreshold) || CV_THRESHOLD; if (cv >= cvThreshold) { return null; } // The smaller the CV is, the greater the significance is. var significance = 1 - cv; var meanValue = (0, data_1.mean)(values); return { significance: significance, mean: meanValue, }; } exports.findLowVariance = findLowVariance; var getLowVarianceInfo = function (props) { var valid = (0, util_1.preValidation)(props); var insightType = 'low_variance'; if ((0, lodash_1.isString)(valid)) return (0, util_1.getNonSignificantInsight)({ detailInfo: valid, insightType: insightType, infoType: 'verificationFailure' }); var _a = (0, util_1.getAlgorithmCommonInput)(props), dimension = _a.dimension, values = _a.values, measure = _a.measure; if ((0, lodash_1.isNil)(dimension) || (0, lodash_1.isNil)(measure)) return (0, util_1.getNonSignificantInsight)({ detailInfo: 'Measure or dimension is empty.', insightType: insightType, infoType: 'verificationFailure', }); var lowVarianceParameter = (0, lodash_1.get)(props, 'options.algorithmParameter.lowVariance'); var lowVariance = findLowVariance(values, lowVarianceParameter); if (lowVariance) { var significance = lowVariance.significance, mean_1 = lowVariance.mean; return [ { type: insightType, dimension: dimension, measure: measure, significance: significance, mean: mean_1, significantInsight: true, }, ]; } var info = "The coefficient of variance of the data is greater than ".concat((lowVarianceParameter === null || lowVarianceParameter === void 0 ? void 0 : lowVarianceParameter.cvThreshold) || CV_THRESHOLD, ". The data does not follow a uniform distribution."); return (0, util_1.getNonSignificantInsight)({ insightType: insightType, infoType: 'noInsight', customInfo: { info: info } }); }; exports.getLowVarianceInfo = getLowVarianceInfo;