Skip to content

JavaScript 异常数据提取算法

Published: at 04:08 PMSuggest Changes

记一下异常数据提取算法

const outlierDetector = (collection) => {
  const size = collection.length;

  let q1, q3;

  if (size < 2) {
    return collection;
  }

  const sortedCollection = collection.slice().sort((a, b) => a - b);

  if (((size - 1) / 4) % 1 === 0 || (size / 4) % 1 === 0) {
    q1 =
      (1 / 2) *
      (sortedCollection[Math.floor(size / 4) - 1] +
        sortedCollection[Math.floor(size / 4)]);
    q3 =
      (1 / 2) *
      (sortedCollection[Math.ceil((size * 3) / 4) - 1] +
        sortedCollection[Math.ceil((size * 3) / 4)]);
  } else {
    q1 = sortedCollection[Math.floor(size / 4)];
    q3 = sortedCollection[Math.floor((size * 3) / 4)];
  }

  const iqr = q3 - q1;
  const maxValue = q3 + iqr * 1.5;

  return sortedCollection.filter((value) => value >= maxValue);
};

Previous Post
JS 时间转换为字幕时间,生成字幕
Next Post
JS 跨 Tab 通信