如何计算截断或修剪的平均值?

机器算法验证 意思是 强大的 截断 修剪平均
2022-03-27 02:59:12

如何计算截断或修剪的平均值?假设被截断 10%?

如果您有 10 个左右的条目,我可以想象该怎么做,但是对于很多条目,我该怎么做呢?

2个回答

修剪均值涉及修剪P两端的观察百分比。

例如:如果要求您计算 10% 的修剪均值,P=10.

鉴于一堆观察结果,Xi

  1. 首先找到n= 观察次数。
  2. 将它们重新排序为“订单统计”Xi从最小到最大。
  3. 查找小写p=P/100= 修剪比例。
  4. 计算np.

如果np是一个整数使用k=np 并修剪k两端观察。

R= 剩余观察值 =n2k.

修剪平均值 =(1/R)(Xk+1+Xk+2++Xnk).

示例:找到 10% 的修剪平均值

2、4、6、7、11、21、81、90、105、121

这里,n=10,p=0.10,k=np=1这是一个整数,所以在每一端精确修剪一个观察值,因为k=1. 因此修剪掉 2 和 121。我们只剩下R=n2k=102=8观察。

10% 修剪平均值 = (1/8) * (4 + 6 + 7 + 11 + 21 + 81 + 90 + 105) = 40.625

如果np有一个小数部分,修剪后的平均值有点复杂。在上面的例子中,如果我们想要 15% 的修剪均值, P=15,p=0.15,n=10,k=np=1.5. 这具有整数部分 1 和小数部分 0.5。 R=n2k=1021.5=103=7. 因此R=7保留意见。

@whuber 评论的附录:为了保持公正(在删除 2 和 121 之后),我们似乎必须删除 4 的一半和 105 的一半以获得修剪后的平均值(4/2+6+7+11+21+81+90+105/2)/7=38.64

资料来源: 关于 P 百分比修剪平均值的课堂笔记

除了上面的答案,如果有很多条目(比如 n),那么首先对它们进行排序需要时间 O(n log n)。但是,有一个线性时间的解决方案。

  1. 计算 P-quantile L 和 (1-P)-quantile U。有一个简单的(类似快速排序的)算法可以在预期的线性时间内运行。还有一种更复杂的算法可以在最坏的线性时间下运行。两者都可以在例如:Cormen、Leiserson、Rivest、Stein:算法简介中找到。

  2. 扫描所有值并将 L 和 U 之间的值相加。这显然需要线性时间。

  3. 如果存在联系并且计算的分位数在值之间存在多次,则我们可能添加了太多或太少的值,并且可能需要适当地对此进行更正。因为我们知道我们在第 2 步中添加了多少个数字,以及我们看到了多少次 L 和 U,所以这可以在恒定时间内完成。

  4. 将总和除以和数。

请注意,仅当 n 非常大并且对所有这些进行排序会影响性能时,上述方法才值得使用,可能是几百万。