记得两年前大选的时候,文攻武卫,打得正欢。突然一声晴天霹雳,川普总统被测试出新冠阳性。这一下两党震惊,有沮丧的,有祝福的,有高兴的,也有嘲弄的。结果没过两天,剧情反转,川总出院了。这一下更是捅了马蜂窝,各种质疑纷至沓来。很自然的,就有人说,总统在装病。阴谋论总是太复杂,姑且不谈,让我这个理工男,从概率的角度来聊聊新冠测试出现假阳性的可能性。
要判断一个人的测试是否为假阳性,首先要讲一点新冠测试的准确性问题。一谈到准确性,当然就要搞清楚到底什么是假阴性和假阳性。这个比较简单,如果有100个病毒携带者,100个非携带者。如果通过某种试剂的测试,这100个携带者中只有90个显阳性,那假阴性就是10%;而这100个非携带者中有20个显阳性,那假阳性就是20%。那么问题来了,为什么不能做个理想的试剂,让假阴性和假阳性都是零呢?
答案很简单,这是因为现有的技术条件有局限。一般的试剂盒或者其它类似的生物测试,都是依据某种算法,来得到一个测试指标。这种指标一般是某种测量数值,比如说是个范围从0到100的数值。我们可以假设,病毒携带者的数值范围是60到100,而非携带者的范围是0到90。要判断是阳性或是阴性,一般需要事先确定一个标准值(cutoff value),当某个测试对象的测量数值小于这个标准值(比如说80),就定义为测试阴性;而如果大于等于80,就定义为测试阳性。这样一来,测试的准确性就和两个因素息息相关,一个是测试范围,一个是标准值。如果因为技术的限制,测试范围没办法进一步改进,那么提高精度的核心就在于这个标准值的确定。
这里有一个问题,到底是应该更多的控制假阳性,还是更多的控制假阴性。为什么会有这样的考虑呢?原因是,如果我们人为的把这个标准值定为0,那么所有的测试都将是阳性,假阴性就是零;而如果把标准值定为100,那么所有的测试都是阴性,假阳性就是零。显而易见,这两个极端的例子都没有任何实用的价值。所以一个好的试剂,它所确定的标准值总是假阳性率和假阴性率的协调和均衡,不能走极端。在新冠测试的时候,假阳性率和假阴性率这两个指标都很重要,如果是假阴性,会造成病情的延误;如果是假阳性,嗯,这要是搁在年初的上海,就有可能会造成整个小区被封,甚至小区的所有居民都被送到方舱医院。不过,假阳性和假阴性的均衡也不是绝对的数学上的一半一半,总还是有所侧重的。一般来说,对极具传染性的重症,为防止漏诊,假阴性率会尽量控制得更低一点。当然总的来说,对一种可靠的试剂,假阳性率和假阴性率最好都小于5%。
另外,测试的操作也是一个大问题。测试的精度和准度在不同环境和衡量手段下会有较大的变化。这个道理很简单,我们每次测心跳还有不同的数值,更何况这复杂得多的生物测试。试剂的标准一般是事先就定死了的,如果出现了因测试操作而造成的系统误差和较大测量误差,那么假阳性和假阴性的提高也就在所难免。
还有一个问题,那就是有一个概念上的重要区别,试剂测试的假阳性率和假阴性率,和实际测试中的假阳性和假阴性,是完全不同的。比如说,现在有一款核酸试剂的假阳性率和假阴性率都是5%,准确性相当不错了。假设我们用这款核酸试剂测试一百万人,其中五万人是病毒携带者。那么问题来了,根据所列的这些条件,如果有一个人被测出了阳性,他是病毒携带者的可能性是多大?
有朋友可能会说,这不是很简单吗,不就是95%嘛。其实不然!这个是需要用到条件概率来计算的,具体的公式我不写了,并不难,有高中数学的基础就足够了。答案是:
这个人的假阳性概率是50%!
当然现在大部分的核酸测试的准确性比我刚才举的例子还要高一点,但是也的确存在一些快速试剂,它们的测试标准比这个还低。回到我们开始讲到的问题,我觉得排除人为因素,如果只凭概率计算,川普总统当时是假阳性的可能并不低。
我们还可以继续引申,讨论一下全体检测的问题。现在中国政府采取的是清零政策,比如说,最近的成都,就是全城核算检测。但是,有没有人想过这样一个问题,群体检测到底有没有意义?
群体检测的意义,是要建立在试剂的高精确性和群体的高发病率上的。举个简单的例子,假设现有的核酸检测试剂的假阳性率和假阴性率都是0.1%,这应该算是非常精确的试剂了吧?而另一方面,如果全社会的实际病毒携带者的比率只有0.01%,那么,在成都这样规模的城市进行全城全员核酸检测(假设一天一千万人员的检测规模),那么,每天我们都会检测出一万左右的阳性;而实际的病毒携带者呢,其实只有一千左右。也就是说,绝大多数的检测阳性者都是假阳性。
我觉得共产党并不是不懂这个道理,而是它希望所有的老百姓都不懂这个道理!
最后总结一下,如果同学们在家里做快速试剂的测试,查出来是阳性,先不用太惊慌,可以查一下这个试剂的假阳性率和假阴性率是多少,然后再估算一下当前社会上的病毒携带者的比例,然后就可以算一下自己是假阳性的概率了。只不过,这种方法,并不能降低您感染新冠的可能。要想做到后面这一点,我觉得第一是戴口罩,第二是勤洗手,第三是打疫苗,简单易行,爱人爱己,童叟无欺。
祝各位健康如意!
(本文图片来自网络)
第一是戴口罩,第二是打疫苗 -- agree!
P(D|+) = P(+|D)*P(D)/( P(+|D)*P(D) + P(+|d)*P(d) )
您说的对,这里面用到了Bayes' theorem。当P(D)值较小时,这个条件概率的值会增加,也就是说测试出假阳性的可能性会比较大。
P(D|+) = P(+|D)*P(D)/( P(+|D)*P(D) + P(+|d)*P(d) )
假阴性有,假阳性不太可能吧:-)
-- 十足的科盲