@formant/ava
Version:
A framework for automated visual analytics.
55 lines (54 loc) • 2.61 kB
JavaScript
;
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;