【发布时间】:2021-09-01 17:07:25
【问题描述】:
我想获得一个统计测试统计数据来比较两个列表。假设我的基准列表是
Benchmark = [a,b,c,d,e,f,g]
我还有另外两个列表
A = [g,c,b,a,f,e,d]
C = [c,d,e,a,b,f,g]
我希望测试告诉我哪个列表更接近基准。测试应该考虑绝对位置,但也应该考虑相对位置,例如它应该惩罚这样一个事实:在列表 A 'g' 是在开始但在基准测试中它是在结束(与真实情况相差多远)位置),但它也应该奖励'a'和'b'在列表C中彼此接近的事实,就像在Benchmark中一样。
A 和 C 总是被洗牌的基准。我想要一个统计测试或某种指标来告诉我列表A、B 和C 的排序与基准测试的排序在统计上没有差异,但某个列表D 的排序显着在某个阈值或 p 值(例如 5%)处有所不同。即使在A、B 和C 列表中,测试也应该完美地勾勒出哪个排序更接近基准。
【问题讨论】:
-
A和C是否总是洗牌Benchmark?也就是说,它们包含完全相同的项,但对它们应用了某种排列? -
另外,如果您需要“哪个列表更接近基准?”的答案,您不需要统计测试,只需一个简单的指标即可,喜欢
def dist(a, b) -> float:。我对该函数的外观有一个可靠的想法。 -
@CaptainTrojan 是的,A 和 C 总是被打乱的基准测试,但对它们应用了某种排列,我问统计测试的原因是,假设列表有 100 个元素,如何我们考虑一个阈值是好是坏,我们怎么知道列表 A 在统计上与 Benchmark 有显着差异,而 C 则不然。
-
这很好。如果您不向我们隐瞒这条信息,那肯定会有所帮助,因为它可能会帮助我们更快地解决您的问题。您特别询问“哪个列表更接近 Benchmark?”,这实际上并不是您想要找出的。
-
顺便说一句,即使是统计测试也需要您指定
confidence level,这相当于您不想成为系统参数的threshold。很可能必须如此。
标签: python arrays list sorting statistics