1 核酸检测之迷
当下,全国各地都出现新冠疫情反弹的迹象。有效遏制疫情蔓延的一个重要手段是全民核酸检测。以笔者所在的天津西青区为例,截止3月14日,政府已经组织了5次核酸检测。为什么要进行多轮核酸?一个重要原因是检测的“真阳性率”(true positive rate, TPR
)不是100%,即当某个体携带病毒时,单次核酸检测不能保证给出阳性诊断结果。
那么,新冠检测的真阳性率到底是多少?或者说,假使一个人患病,单次检测有多大概率识别出来?尽管该问题至关重要,媒体却鲜有直接报道。不过,在2021年11月23的大连疫情报道中有这样一段话:
疫情发生后到检出阳性前,至少进行5次及以上核酸检测的阳性人员为145人,占总病例数的42.77%。
事实上,该描述就足以让我们估算真阳性率了。
2 真阳性率估计
2.1 模型设定
假如某个体确实为新冠病毒携带者,不妨设单次核酸检测能测出其为阳性的概率为$p$
。
对于该患者,如果在首次检测为阳性之前,共进行了$K$
次结果为阴性的检测,不妨合理地认为$K$
服从几何分布,有概率:
$$f(K=k)=(1-p)^kp \tag{1}$$
那么,阴性结果小于等于$k$
次就可以出现阳性结果,或者说$K \le k$
的概率为:
$$F(K=k, p) = \sum_{0}^{k} f(K = k) \tag{2}$$
新闻中说“至少进行了5次及以上核酸”才测出阳性,即至少有4及以上次的阴性检测,也就是 $K \geq 4$
。该概率可以用式3表示:
$$1 - F(K=3, p) \tag{3}$$
式3是我们的推导出的核心公式,它表示对某一个新冠患者,给定单次检测成功率$p$
时,“至少进行了5次及以上核酸”才测出阳性的概率。不妨设“某患者至少进行了5次及以上核酸”才测出阳性这一事件为事件A。
据新闻描述,在339个病例中,A事件共发生了$145$
次,发生率 $0.4277 = 145/339$
。那么该新闻所描述情况发生的概率为:
$$\text{dbinom}\left(\ 145 , \ 339, \ 1 - F(K=3, p) \ \right) \tag{4}$$
式4中,dbinom(x, size, prob)
是二项分布的密度函数。x
表示A事件发生的次数,size
是总病例数,prob
是A事件发生的概率,包含了待估计的$p$
。
2.2 似然估计
基于式4,可以得到似然函数:
$$L(p) \propto F(k=3, p)^{194} [1 - F(k=3, p )]^{145} \tag{5}$$
其中:
$F(k=3, p)$
: 最多进行4次核酸查出阳性的概率。$1 - F(k=3, p )$
: 最少进行5次核酸查出阳性的概率。
将式5取对数:
$$\log L(p) \propto 193 \times \log(F(k=3, p)) + 145 \times \log(1 - F(k=3, p ))\tag{5}$$
可以利用R
的nlm()
函数来求解:
# nlm()函数只求最小值,因此需要定义原函数相反数,才能获得该函数最大值
fn <- function(p){
-193 * log(pgeom(3, p)) - 145 * log(1 - pgeom(3, p))
}
mle <- nlm(fn, p = .2) # 0.2是猜的初始值
得$p = 0.191$
。 也就是说,单次核酸检测能识别患者的概率约为19.1%。
3 小结
19.1%的真阳性率并不理想。这意味着组织5次核酸检测,患者被筛查出来的概率只有65.3%:
pgeom(4, mle$estimate)
## [1] 0.6528114
通过下面代码,可以得到对于确实患病的人,检测次数小于等于 $N$
次便能查出阳性的概率:
result <- cbind(1:21, pgeom(0:20, mle$estimate))
colnames(result) <- c("N", "prob")
result
## N prob
## [1,] 1 0.1906934
## [2,] 2 0.3450228
## [3,] 3 0.4699226
## [4,] 4 0.5710049
## [5,] 5 0.6528114
## [6,] 6 0.7190180
## [7,] 7 0.7725994
## [8,] 8 0.8159632
## [9,] 9 0.8510578
## [10,] 10 0.8794601
## [11,] 11 0.9024462
## [12,] 12 0.9210491
## [13,] 13 0.9361045
## [14,] 14 0.9482890
## [15,] 15 0.9581499
## [16,] 16 0.9661304
## [17,] 17 0.9725891
## [18,] 18 0.9778162
## [19,] 19 0.9820465
## [20,] 20 0.9854701
## [21,] 21 0.9882409
可以看到,至少要检测15次,才能把误诊的概率降到5%以下。而根据媒体报道,大连疫情中:
其中一人在隔离期间检出阳性前,多达16次核酸检测都是阴性。
核酸检测狭义上只是一种技术,但在广义上是一项庞大的系统工程。从设备的采购、保存,到医护人员的实操,再到检测机构的分析,甚至于疫情本身的发展阶段,任何一个因素都可能对核酸结果的准确性产生决定性影响,因此,核酸检测准确性在不同地域和时段会呈现波动性,大连的经验并不一定适用于其他地区。此外,本文也只是将核酸检测视为一个黑箱,对每次检测作了独立性假设,鉴于现实情况的复杂性,所估计的数值也能只算作一种观点。但是,无论是文字报道还是统计分析,都意味着去年大连疫情中检测手段缺乏可靠性是一个不争的事实,这提醒我们要更审慎地看待确诊病例等现有统计数字。
发表/查看评论