php - 在 PHP 中删除较低的离群值

标签 php algorithm outliers

我一直在使用这个 Stackoverflow answer从数据集中删除异常值到 1 的量级。

这对于删除大数字非常有用,但它不会删除较低的异常值。

例如,来自以下数据集:(0, 1, 344, 345, 10000) 当我希望删除它们时,它会保留 0, 1

我如何编辑上面链接的答案中的代码以删除较低的异常值?

最佳答案

问题是,您只有很少的数字和非常高的标准偏差(平均值:2138,标准偏差:大约 4400)。

您可以调整大小,但这似乎不是一个好的解决方案。我认为最好在您的情况下使用 median (请参阅此处如何实现该功能:https://codereview.stackexchange.com/a/223)。简单地说:中位数就是中间的值。

所以你的函数看起来像这样:

function removeOutliers($arr, $alpha = 0.8, $beta = 1.2) {
  $median = array_median($arr);
  // assuming the array is sorted after median calculation
  $bound = $median * $alpha;
  $lower = 0;
  while ($arr[$lower] < $bound)
    $lower++;
  $bound = $median * $beta;
  $upper = count($arr) - 1;
  while ($arr[$upper] > $bound)
    $upper--;
  return array_slice($arr, $lower, $upper - $lower + 1);
}

关于php - 在 PHP 中删除较低的离群值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38203665/

相关文章:

php - 使用 php 从 rss 提要中抓取图像

php - php session 关闭后如何重新打开它?

javascript - 在发送数据之前验证ajax提交post方法

Javascript从坐标数组中的某个坐标找到最远的坐标

javascript - 为多个元素的数据属性添加更改监听器

javascript - 如何使用构造函数创建对象数组?

algorithm - acosf() 的精确矢量化实现

python - 如何在 pandas 数据帧上生成具有随机值的合成数据?

r - 双循环在许多列中迭代以查找 R 中的异常值

hadoop - 大数据中的EDA