一堆数里面怎么去除一些严重偏离平均值的数,从而使平均数更精确?

发布于 2022-09-11 15:19:00 字数 206 浏览 11 评论 0

求一组数的平均数,假设大部分数都在30-50之间,有几个数是10,88,90这样的无效数字,怎么过滤?
给出算法思想或者参考即可。

补充:我想要的是筛选去除无效数字的方法,题目里面的数字只是我举的例子,有可能有效范围是50-60。有没有根据大数中心定律修改的筛选办法?

更新:这类问题有个统称叫离群值,可以参考采纳的答案,也可以去搜索离群值的解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尹雨沫 2022-09-18 15:19:00

遍历,记录有效数字的和和个数即可

蓝天白云 2022-09-18 15:19:00

参考这个https://blog.csdn.net/yuxeaot...,不知对不对

function filterOutliers(someArray) {  

    // Copy the values, rather than operating on references to existing values
    var values = someArray.concat();

    // Then sort
    values.sort( function(a, b) {
            return a - b;
         });

    /* Then find a generous IQR. This is generous because if (values.length / 4) 
     * is not an int, then really you should average the two elements on either 
     * side to find q1.
     */     
    var q1 = values[Math.floor((values.length / 4))];
    // Likewise for q3. 
    var q3 = values[Math.ceil((values.length * (3 / 4)))];
    var iqr = q3 - q1;

    // Then find min and max values
    var maxValue = q3 + iqr*1.5;
    var minValue = q1 - iqr*1.5;

    // Then filter anything beyond or beneath these values.
    var filteredValues = values.filter(function(x) {
        return (x <= maxValue) && (x >= minValue);
    });

    // Then return
    return filteredValues;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文