如何计算截断或修剪的平均值?假设被截断 10%?
如果您有 10 个左右的条目,我可以想象该怎么做,但是对于很多条目,我该怎么做呢?
如何计算截断或修剪的平均值?假设被截断 10%?
如果您有 10 个左右的条目,我可以想象该怎么做,但是对于很多条目,我该怎么做呢?
修剪均值涉及修剪两端的观察百分比。
例如:如果要求您计算 10% 的修剪均值,.
鉴于一堆观察结果,:
如果是一个整数使用 并修剪两端观察。
= 剩余观察值 =.
修剪平均值 =
示例:找到 10% 的修剪平均值
2、4、6、7、11、21、81、90、105、121
这里,这是一个整数,所以在每一端精确修剪一个观察值,因为. 因此修剪掉 2 和 121。我们只剩下观察。
10% 修剪平均值 = (1/8) * (4 + 6 + 7 + 11 + 21 + 81 + 90 + 105) = 40.625
如果有一个小数部分,修剪后的平均值有点复杂。在上面的例子中,如果我们想要 15% 的修剪均值, . 这具有整数部分 1 和小数部分 0.5。 . 因此保留意见。
@whuber 评论的附录:为了保持公正(在删除 2 和 121 之后),我们似乎必须删除 4 的一半和 105 的一半以获得修剪后的平均值
资料来源: 关于 P 百分比修剪平均值的课堂笔记
除了上面的答案,如果有很多条目(比如 n),那么首先对它们进行排序需要时间 O(n log n)。但是,有一个线性时间的解决方案。
计算 P-quantile L 和 (1-P)-quantile U。有一个简单的(类似快速排序的)算法可以在预期的线性时间内运行。还有一种更复杂的算法可以在最坏的线性时间下运行。两者都可以在例如:Cormen、Leiserson、Rivest、Stein:算法简介中找到。
扫描所有值并将 L 和 U 之间的值相加。这显然需要线性时间。
如果存在联系并且计算的分位数在值之间存在多次,则我们可能添加了太多或太少的值,并且可能需要适当地对此进行更正。因为我们知道我们在第 2 步中添加了多少个数字,以及我们看到了多少次 L 和 U,所以这可以在恒定时间内完成。
将总和除以和数。
请注意,仅当 n 非常大并且对所有这些进行排序会影响性能时,上述方法才值得使用,可能是几百万。