排名列表比较

机器算法验证 排行 群体差异
2022-01-22 03:08:21

假设两个组,包括 ,每个组对一组 25 个项目从最重要到最不重要进行排序。比较这些排名的最佳方法是什么?n1n2

显然,可以进行 25 次 Mann-Whitney U 检验,但这会导致需要解释 25 次检验结果,这可能太多(并且在严格使用时会引发多重比较问题)。我也不完全清楚排名是否满足该测试的所有假设。

我也会对有关评级与排名的文献的指针感兴趣。

一些背景:这 25 个项目都与教育有关,这两组是不同类型的教育者。两组都很小。

编辑以回应@ttnphns:

我并不是要比较第 1 组和第 2 组中项目的总排名 - 正如@ttnphns 指出的那样,这将是一个常数。但是第一组和第二组的排名会有所不同;也就是说,第 1 组可能对第 1 项的排名高于第 2 组。

我可以逐项比较它们,获得每个项目的平均或中位数排名并进行 25 次测试,但我想知道是否有更好的方法来做到这一点。

4个回答

概括

我在详细信息部分分享我的想法。我认为它们有助于确定我们真正想要实现的目标。

我认为这里的主要问题是您尚未定义等级相似性的含义。因此,没有人知道哪种方法可以更好地衡量等级之间的差异。

实际上,这让我们基于猜测模糊地选择一种方法。

我真正建议的是首先定义一个数学优化目标。只有这样,我们才能确定我们是否真的知道我们想要什么。

除非我们这样做,否则真的不知道我们想要什么。我们可能几乎知道我们想要什么,但几乎知道 \ know 。

我在Details中的文字本质上是朝着达到等级相似度的数学定义迈出的一步。一旦我们确定了这一点,我们就可以自信地继续选择衡量这种相似性的最佳方法。

细节

根据您的评论之一:

  • 目标是看看两组排名是否不同”,彼得弗洛姆。

在严格解释目标的同时回答这个问题:

  • 如果任何项目存在满足,则排名不同,其中是组中项目的排名,是同一项目的排名,但按组i{1,2,,25}iaibiaiiabib
  • 否则,排名没有什么不同。

但我不认为你真的想要那种严格的解释。因此,我认为您真正想说的是:

  • 组和组的等级有何不同ab

这里的一种解决方案是简单地测量最小编辑距离即,需要对组的排序列表执行的最小编辑次数是多少,以使其与组的排序列表相同。ab

一次编辑可以定义为交换两个项目,并且花费点,具体取决于需要多少跳。因此,如果项目需要与项目之间获得相同的等级),则此编辑的成本为n13ab3

但是这种方法合适吗?为了回答这个问题,让我们更深入地看一下:

  • 它没有标准化。如果我们说组的等级之间的距离是,而组的等级之间的距离是,这并不一定意味着更相似彼此(也可能意味着对更大的项目集进行排名)。a,b3c,d123a,bc,dc,d

  • 它假设每次编辑的成本与跳数成线性关系。这对我们的应用程序域来说是真的吗?会不会是逻辑关系更合适?还是指数型的?

  • 它假定所有项目都同等重要。例如,排名项目(比如)中的分歧与排名项目(比如)中的分歧相同。在您的域中这是真的吗?例如,如果我们正在对书籍进行排名,那么不同意诸如 TAOCP 之类的著名书籍的排名,与不同意诸如TAOUP之类的糟糕书籍的排名同样重要吗?15

一旦我们解决了上述问题,并在两个等级之间达到了合适的相似性度量,我们就需要提出更多有趣的问题,例如:

  • 组和组之间的差异只是由于随机机会造成的,那么观察到这种差异或更极端差异的概率是多少?ab

这听起来像“Willcoxon 符号秩检验”(维基百科链接)。假设您的等级值来自同一个集合(即[1, 25]),那么这是一个配对差异测试(零假设是这些配对是随机挑选的)。注意这是一个不相似的分数!

该 wiki 页面中同时存在R和实现。Python

警告:这是一个很好的问题,但我不知道答案,所以这实际上更像是“如果我不得不这样做”:

在这个问题中,人们可以做很多自由度和很多比较,但是在数据有限的情况下,这实际上是一个有效聚合数据的问题。如果您不知道要运行什么测试,您总是可以使用排列“发明”一个:

首先我们定义两个函数:

  • 投票功能:如何对排名进行评分,以便我们可以合并单个组的所有排名。例如,您可以为排名最高的项目分配 1 分,为所有其他项目分配 0 分。但是你会丢失很多信息,所以也许最好使用类似的东西:排名第一的项目获得 1 分,排名第二的项目获得 2 分,等等。

  • 比较功能:如何比较两组之间的两个汇总分数。由于两者都是向量,因此采用适当的差异范数是可行的。

现在执行以下操作:

  1. 首先通过使用投票函数计算两组中每个项目的平均分数来计算测试统计量,这应该导致两个大小为 25 的向量。
  2. 然后使用比较功能比较两个结果,这将是您的测试统计量。

问题是我们不知道两组相同的空值下检验统计量的分布。但如果它们相同,我们可以在组之间随机打乱观察结果。

因此,我们可以组合两组的数据,对它们进行洗牌/置换,为组 A 选择前个(原始组 A 中的观察数)观察值,为组 B 选择其余观察值。现在使用前两步。n1

重复该过程大约 1000 次,现在使用置换检验统计量作为经验零分布。这将允许您计算 p 值,并且不要忘记制作一个漂亮的直方图并为您的测试统计量画一条线,如下所示:

直方图置换检验 l1

当然,现在一切都是为了选择正确的投票和比较函数来获得良好的权力。这真的取决于你的目标和直觉,但我认为我对投票函数和范数的第二个建议是很好的起点。请注意,这些选择可以而且确实会产生很大的不同。上图使用的是范数,这是具有范数的相同数据:l1l1l2

直方图置换检验 l2

但根据设置,我预计可能存在很多内在随机性,并且您需要相当大的样本量才能使包罗万象的方法起作用。如果您对您认为两组之间可能不同的特定事物(例如特定项目)有先验知识,那么使用它来定制您的两个功能。(当然,通常在您运行测试之前执行此操作,并且在您获得重要应用之前不要挑选设计)

如果您对我的(凌乱的)代码感兴趣,请给我留言。在这里添加有点太长了,但我很乐意上传。

在“用于比较排名列表的顺序排名协议方法”中,Ekstrøm 等人。详细讨论这一点(包括 2015 年左右对现有技术的调查),同时引入一种称为“顺序等级协议”的新措施。它可以在 arxiv 上找到:https ://arxiv.org/pdf/1508.06803.pdf 。摘要比我说得更好:

一组项目的替代排名的比较是应用统计学中一项普遍而突出的任务。预测变量根据与结果的关联程度进行排名,预测模型根据事件的个性化风险对受试者进行排名,遗传研究根据基因表达水平的差异对基因进行排名。本文构建了两个或多个有序列表的一致性度量。我们使用等级的标准差来定义一致性度量,既提供直观的解释,也可以应用于任意数量的列表,即使部分或全部不完整或被审查。该方法可以识别列表一致性中的变化点,并且可以将作为列表深度函数的一致性顺序变化与基于排列的参考集进行图形比较。这些工具的有用性通过基因排名和来自两项丹麦卵巢癌研究的数据来说明,我们在这些研究中评估了不同统计分类方法的一致性和一致性。

正如许多其他答案中所述,这些技术中的每一种都将提供这些差异的不同摘要,并且选择最适合您的应用程序的是......好吧,......特定于应用程序。