如何组合几个二进制测试的结果?

机器算法验证 分类 贝叶斯 诊断
2022-03-18 14:59:00

首先让我说 38 年前我在工程学校上过一门统计课程。所以我在这里瞎了眼。

我已经得到了基本上是 18 种不同的疾病诊断测试的结果。每个测试都是二进制的——是/否,没有可以调整以“调整”测试的阈值。对于每个测试,与“黄金标准”相比,我都有关于真/假阳性/阴性的表面上有效的数据,产生特异性和敏感性数字(以及您可以从该数据中得出的任何其他数据)。

当然,没有一个测试具有足够的特异性/敏感性单独使用,当你“目测”所有测试的结果时,往往没有明显的趋势。

我想知道将这些数字组合在一起的最佳方法是什么,从而产生一个(希望)比任何单一测试都更可靠的最终分数。到目前为止,我已经提出了结合 TRUE 测试的特殊性的技术,使用

spec_combined = 1 - (1 - spec_1) * (1 - spec_2) * ... (1 - spec_N)

并以相同的方式结合 FALSE 测试的敏感性。比例

(1 - sens_combined) / (1 - spec_combined) 

那么似乎产生了一个相当好的“最终分数”,超过 10 左右的值是可靠的 TRUE,低于 0.1 左右的值是可靠的 FALSE。

但是这个方案缺乏任何真正的严谨性,并且对于某些测试结果的组合,它似乎会产生一个违反直觉的答案。

考虑到它们的特异性和敏感性,有没有更好的方法来组合多个测试的测试结果?(有些测试的特异性为 85,灵敏度为 15,其他测试正好相反。)

好吧,我头疼!

假设我有敏感性/特异性的测试 1-4(以 % 为单位):

  1. 65/50
  2. 25/70
  3. 30/60
  4. 85/35

测试 1 和 2 为阳性,测试 3 和 4 为阴性。

1 为误报的假定概率为 (1 - 0.5),而 2 为 (1 - 0.7),因此两者均为误报的概率为 0.5 x 0.3 = 0.15。

3 和 4 为假阴性的假定概率为 (1 - 0.3) 和 (1 - 0.85) 或 0.7 x 0.15 = 0.105。

(我们暂时忽略数字不相加的事实。)

但是 1 和 2 是真阳性的假定概率是 0.65 和 0.25 = 0.1625,而 3 和 4 是真阴性的假定概率是 0.6 和 0.35 = 0.21。

现在我们可以问两个问题:

  1. 为什么数字加起来(甚至接近)。(我使用的 sens/spec 数字来自“现实生活”。)
  2. 我应该如何确定哪个假设(最有可能)是正确的(在这个例子中,这两个计算似乎都是“负面的”,但我不确定情况总是如此),以及我可以使用什么来获得“品质因数” ”来决定结果是否“显着”?

更多信息

这是一种改进和扩展现有“加权”方案的尝试,该方案在本质上完全是“艺术”的(即,刚刚从某人的a**中提取出来)。目前的方案基本上是“如果前三个中的任何两个是正的,如果接下来的四个中有两个,以及接下来的两个中的一个,则假设为正”。(当然,这是一个稍微简化的示例。)可用的统计数据不支持该加权方案——即使使用基于测量统计数据的粗略加权算法,我也得出了截然不同的答案。但是,由于没有严格的评估统计数据的方法,我没有可信度。

此外,目前的方案只决定正面/负面,我需要在中间创建一个(统计上有效的)“模棱两可”的案例,所以需要一些品质因数。

最新的

我已经实现了一个或多或少的“纯”贝叶斯推理算法,并且在对几个附带问题进行了一轮又一轮之后,它似乎工作得很好。我不是从特异性和敏感性出发,而是直接从真阳性/假阳性数得出公式输入。不幸的是,这意味着我不能使用一些质量更好的数据,这些数据不是以允许提取这些数字的方式呈现的,但算法更简洁,允许用更少的手动计算修改输入,它看起来很稳定,结果与“直觉”相当吻合。

我还提出了一个“算法”(在纯粹的编程意义上)来处理相互依赖的观察之间的相互作用。基本上,与其寻找一个全面的公式,相反,我为每个观察保留一个边际概率乘数,该乘数会根据一个简单的表在处理早期观察时进行修改——“如果观察 A 为真,则将观察 B 的边际概率修改为因子 1.2",例如。无论如何,它并不优雅,但可以使用,并且在一系列输入中似乎相当稳定。

(我会在几个小时内将赏金奖励给我认为最有帮助的帖子,所以如果有人想获得一些好处,那就去吧。)

2个回答

“我想知道将这些数字组合在一起的最佳方法是什么,以产生比任何单一测试都(希望)更可靠的最终分数。” 一种非常常见的方法是计算 Cronbach 的 alpha,更一般地说,执行一些人所谓的“标准”可靠性分析。这将显示给定分数与其他 17 个分数的平均值的相关程度;哪些测试的分数最好从量表中删除;以及所有 18 个和给定子集的内部一致性可靠性。现在,您的一些评论似乎表明这 18 个中的许多是不相关的;如果这是真的,您最终可能会得到一个仅包含几个测试的量表。

评论后编辑:另一种方法借鉴了在内部一致性和有效性之间进行权衡的想法。您的测试的相关性越低,它们的内容覆盖率就越高,从而提高内容的有效性(如果不是可靠性)。因此,沿着这些思路思考,您将忽略 Cronbach 的 alpha 和项目总相关性的相关指标,而是使用先验推理将 18 个测试组合成一个量表。希望这样的规模与您的黄金标准高度相关。

为了简化一点,我们假设您只有两个诊断测试。你要计算

公关(疾病1,2)=公关(1,2疾病)公关(疾病)公关(1,2)

您建议这些测试的结果是独立的,取决于患有疾病的人。如果是这样,那么

公关(1,2疾病)=公关(1疾病)公关(2疾病)

在哪里公关(一世疾病)是测试的灵敏度一世.

公关(1,2)是随机人在两个测试中测试为阳性的无条件概率:

公关(1,2)=公关(1,2疾病)公关(疾病)+公关(1,2无病)公关(无病)

在哪里

公关(1,2无病)=公关(1无病)公关(2无病)

公关(一世无病)1-特异性测试一世.