使用stata临床决策曲线进行外部模型验证

DCA(Decision Curve Analysis)临床决策曲线是一种用于评价诊断模型诊断准确性的方法。在既往文章中,我们已经介绍了使用stata制作logistic回归和cox回归的临床决策曲线,今天我们来聊聊使用stata临床决策曲线进行外部模型验证,假设你有2个数据集,一个建模后作出临床决策曲线,想通过另一个数据集来进行验证,或者你在文献上看到别人的模型公式,想通过自己的数据来验证别人模型的效能,都可以使用这样的方法来进行。
使用stata临床决策曲线进行外部模型验证
图片来源文章:Urinary Podocalyxin as a Biomarker to Diagnose Membranous Nephropath主要讲的是利用肾脏标志物uPCXμgg诊断膜性肾病的事。这幅图的横坐标为阈概率,纵坐标为净获益。当uPCXμgg达到某个值时,患者模型肾病的概率记为Pi;当Pi达某个阈值(记为Pt),就界定为阳性。
在文章Urinary Podocalyxin as a Biomarker to Diagnose Membranous Nephropath中,作者把数据分成了两部分,一个图片为建模,一个图片为验证。我们今天使用作者文章中的数据来进行演示。
我自己总结有以下几个步骤(在安装包后):

  1. 打开建模集数据,建立模型
  2. 提取模型公式,绘制临床决策曲线
  3. 关闭建模集数据,打开验证集数据
  4. 在验证集数据中导入建模集的公式,提取概率并进行转化
  5. 根据转化后结果进行验证集临床决策曲线的绘制

OK,下面我们来一一进行,首先打开建模集数据,建立模型
使用stata临床决策曲线进行外部模型验证
Stata会把有些大写字母自动转换成小写,影响不大,注意一下就可以了,我们看看数据,数据很多,这些只是其中一部分的数据,但是作者只用到了MN(膜性肾病)age(年龄)+eGFR(肾小球滤过率)+DM(糖尿病)+uPCXμgg(肾脏病标志物)这几个指标,作者制作模型前把年龄和肾小球滤过率都除以10,这里我们也要处理一下

g age1=age/10
g egfr1=egfr/10

生成两个变量后我们就可以开始了。文章中作者制作了3个模型uPCX(单用肾脏标志物),clinicalparameters(单用临床指标),all(标志物+临床指标)。今天我们偷偷懒,就只制作最后一个模型,其他两个模型的方法也是一样的。

logit mn age1 egfr1 dm uPCXμgg

模型出来啦,我们要记住每个模型的系数还有模型的截距,等下在验证集要用到
使用stata临床决策曲线进行外部模型验证
继续,生成预测概率

predict quanbu

绘制图形

dca mn quanbu

使用stata临床决策曲线进行外部模型验证
OK,现在我们清除原数据,导入验证集数据

Clear

使用stata临床决策曲线进行外部模型验证
验证集数据和建模集数据的指标要相同,要不然验证不了,验证集数据里年龄和肾小球滤过率也要都除以10

g age1=age/10
g egfr1=egfr/10

生成指标后,我们把原模型的系数和截距代入,生成指标new1

g new1 = (age1)*0.560+(egfr1)*0.269-(dm)*1.925+(uPCXμgg)*0.0049-6.133

对指标进行概率转换

g mod1=invlogit(new1)

最后生成图形

dca mn mod1

使用stata临床决策曲线进行外部模型验证
OK,到此就完成了,其他的模型也是可以同理做出,可以看得出来,临床决策曲线在验证集上的效能也是非常不错的。
使用stata临床决策曲线进行外部模型验证

上一篇:Stata基础:数据显示格式和四舍五入


下一篇:食品FDA邓白氏号码快速办理