决策曲线分析(Decision curve analysis,DCA)绘制原理
决策曲线分析(Decision curve analysis,DCA)绘制原理
最近一直在学习模型评价相关资料,ROC曲线和校准曲线都好理解,绘制方法也不难。但DCA曲线理解却不易,网上的绘制方法也仅有代码,无法通过公式理解其原理。在阅读许多资料和文献后,略有了解,写下来分享。废话不多说,直接进入主题:
一、什么情况下干预才有价值?
要理解这个问题,首先我们假设你研究某疾病:
- (对阳性患者施加)准确的干预获益为 P,
- (对阴性患者施加)非必要的干预损失为 L,
- 构架的模型,预测患者i患病概率为Pi,那么容易知道,不患病的概率为(1-Pi)。
显然,若:
Pi×P - (1-Pi)×L = 0时,即收益等于损失,这是需要施加干预的临界情况。当大于0时,施加干预便有实际意义。通过这个公式,我们可以很容易推导出公式(1)和(2):
L / P = Pi / (1-Pi) ...............................(1)
Pi = L / (L+P) ...............................(2)
显然,当研究的疾病确定时,P和L应为常数,但其也会因不同的医生和患者自身认知而不同,有些人认为施加干预获益不高或损失很大,其心里接受的是当Pi大于某个很大的值,比如0.6以上时,才愿意接受干预。还有的人觉得,干预的获益很高而损失很小,他觉得患病概率是0.2时,他就要求接受干预措施。
所以,把L / (L+P) = PT 定义为需要接受干预的概率阈值。
二、净收益(Net benefit,NB)的计算
现在,我们知道,当模型预测的患者 i 患病概率Pi>PT时,施加干预才有正收益。但模型预测的患病大于PT的患者中,有如下两部分组成(n为总样本数):
- 真阳性患者:数量为A,真阳性比率为 a = A / n;
- 假阳性患者:数量为B,假阳性比率为 b = B / n;
当模型预测的患者 i 患病概率Pi<PT时,模型认定这部分患者无须干预,也有如下两部分组成:
- 假阴性患者:数量为C,假阴性比率为 c = C / n;
- 真阴性患者:数量为D,真阴性比率为 d = D/ n;
那么,对施加干预的患者,净收益(Net benefit,NB)计算公式如下:
NB = AP - BL
= P*(A - BL/P)
= nP*( A/n - B/n * L/P) ............................(3)
将公式(1) 当作等式(净收益为0)带入公式(3) 可得
NB = nP( A/n - B/n *Pi/(1-Pi))
当我们的研究确定时,nP均为常数,为研究方便,我们直接省去。则:
同时,也可以写成:
当Pi 为0.00 时,NB = A/n (即真阳性患者比率)
当Pi 为0.01时,NB = A/n - B/n *0.01/0.99
当Pi 为0.02 时,NB = A/n - B/n *0.02/0.98
当Pi 为0.03 时,NB = A/n - B/n *0.03/0.97
...................
当Pi 为0.99 时,NB = A/n - B/n *0.99/0.01
这样我们就得到100个点,这样就可以绘制出DCA曲线。
三、Treat None的线
无论Pi为多少,均不施加干预,那么也就无净收益。NB = 0的一条射线
四、Treat all
ALL代表所有人都进行干预,除了Pi > PT时的NB外,Pi < PT的患者也会进行干预。
Pi > PT时的NB :NB1 = A/n - B/n *Pi/(1-Pi)
Pi < PT时的NB :NB2 = CP - DL = np(C/n - D/nPi/(1-Pi)) = C/n - D/nPi/(1-Pi)
同时,也可以写成:
同理,当Pi从0到0.99时,ABCD的值都是变化的没这样便可以绘制出Treat all的线了。
当Pi为0时,也就是NB_all曲线和纵轴的交点,即为全部阳性样本量占全部样本量的比率,
当NB_all为0时,也就是NB_all曲线和横轴的交点,进行代数运算后,也是全部阳性样本量占全部样本量的比率。很神奇。
五、解读
根据绘制原理,我们可以明白:基于模型的那条曲线在none和all曲线上方的部分(假定是P1-P2之间),表示净收益是大于全不干预和全干预的情况,也就是说,只要医生或者患者可接受的阈值概率在P1-P2之间,按照模型预测的概率进行操作,都是收益大于损失的。