Hirosawa T, Harada Y, Morinaga K, et al. Eosinopenia as a diagnostic marker of bloodstream infection in a general internal medicine setting: a cohort study[J]. BMC Infectious Diseases, 2020, 20(1): 1-7.
BMC Infectious Diseases: 2018 Journal Impact Factor: 2.565
文章地址:https://bmcinfectdis.biomedcentral.com/articles/10.1186/s12879-020-4814-5
嗜酸性粒细胞减少的情况:
1. Cusing综合征或糖皮质醇激素使用
2. 应激导致内源性激素产生增加从
3. 炎性介质释放导致(急性感染)
4. 药物导致Krause JR, Boggs DR (1987). "Search for eosinopenia in hospitalized patients with normal blood leukocyte concentration". Am. J. Hematol. 24 (1): 55–63. doi:10.1002/ajh.2830240108. PMID 3799595.
Gil H, Magy N, Mauny F, Dupond JL (2003). "[Value of eosinopenia in inflammatory disorders: an "old" marker revisited]". Rev Méd Interne (in French). 24 (7): 431–5. doi:10.1016/S0248-8663(03)00138-3. PMID 12829215.
Bass DA, Gonwa TA, Szejda P, Cousart MS, DeChatelet LR, McCall CE: Eosinopenia of acute infection: production of eosinopenia by chemotactic factors of acute inflammation. J Clin Invest 1980, 65: 1265-1271. 10.1172/JCI109789
摘要
背景:嗜酸性粒细胞在血流感染的应用价值很少研究。本研究目的为评估嗜酸性细胞减少是否能作为预测血流感染的标志物。
方法:本研究为门诊部和普通住院部的回顾性队列研究。纳入189个至少有2套血培养结果的病人,排除血培养前2周使用过抗生素、激素治疗、血液系统肿瘤的病人。单因素的诊断价值使用AUROCs来评价。主要终点为血培养阳性。
结果:重度嗜酸性粒细胞减少(<24.4cells/mm3)的诊断价值较小但有统计学意义(AUROC:0.648,95%CI 0.547-0.748),灵敏度和特异度也不高。模型的变量包括基线变量(年龄、性别),CRP,中性粒细胞计数,AUROC为0.729,加入嗜酸性粒细胞减少后AUROC有少许增加,为0.758,同时net reclassification improvement (NRI)有显著增加(P = 0.003). 然而integrated discrimination index (IDI) 无明显意义(P = 0.284)
结论:严重嗜酸性粒细胞减少可以被考虑为一个廉价的血流感染标志物,但其诊断可靠性并不高。
介绍
血培养诊断血流感染非常重要,但是其阳性率并不高(除了特定条件下如感染性心内膜炎、脑膜炎),同时也有假阳性的问题。
迄今为止,尚无研究发现与感染严重程度和预后相关的高度敏感,特异性强,易于测量,快速且廉价的血流感染标志物。虽然寒战、CRP、qSOFA被认为是潜在标志物,但其灵敏度和特异度均不足。
嗜酸性粒细胞减少,被之前的研究鉴定为好的感染诊断标志。尽管一些研究报告说,外周血嗜酸性粒细胞的缺乏不能用作医院住院环境中菌血症的临床可靠标志物。但这些研究患者数量较少,并不局限于普通内科。我们假设嗜酸性粒细胞减少时血流感染的可靠指标
方法学
研究设计及病人选择
回顾性、单中心队列包括门诊和一般住院病人(排除急诊和ICU),血培养时间:1 January to 31 December, 2018.This study was conducted in accordance with the current version of the Declaration of Helsinki. The study protocol was approved by the institutional ethics committee of Dokkyo Medical University (No. R-20-18 J).
病人
399 adult patients (age > 15 years)在研究时间段内有血培养结果,排除178个培养前2周内使用抗生素的,25个使用激素的,2个血液系统肿瘤的,还有5个病人因为缺乏资料而排除。最终纳入189个病人。
结局指标和定义
血培养提示的血流感染是主要结局指标,血流感染的定义为至少一次血培养阳性。单次常见背景污染菌阳性定义为阴性,常见背景菌包括:coagulase-negative Staphylococcus species(凝固酶阴性的葡萄球菌), Bacillus species(芽孢杆菌属), Propionibacterium acnes(痤疮丙酸杆菌)or Corynebacterium species(棒状杆菌属)不同研究对嗜酸性粒细胞下降的定义不同,在该研究中,嗜酸性粒细胞减少通过单因素分析定义< 24.3 cells/mm3,qSOFA的定义respiratory rate of ≥22/min, altered mentation(GCS<15), or systolic blood pressure of ≤100 mmHg 血培养步骤 10ml血分为需氧和厌氧培养为1套,在另一侧的静脉再采10ml分为无氧和需氧培养为第2套。接种进行菌种鉴定(were confirmed using matrix-assisted laser desorption ionisation–time of flight mass spectrometry.)和药敏。
数据收集
2个主治医生确认培养出细菌的致病性,体查数据在采集血液时记录,其他marker与血液采集的时间在一天内测量。
分析
Continuous variables are presented as medians and interquartile ranges [25th–75th percentiles] and were compared using the Mann–Whitney U test. Categorical or binary variables are presented as numbers (percentages) and were compared using the chi-squared test or Fisher’s exact test. 连续变量使用中位数和四分位间距,并用MW U检验比较,分类变量用百分数描述和卡方或fisher比较,单因素和多因素logistic回归的准确性用AUROC评价。
之前的研究鉴定出CRP是血流感染的有效预测指标,计算integrated discrimination index (IDI) and net reclassification improvement (NRI)评估加入嗜酸性粒细胞后是否提高诊断价值。内部验证:ordinary nonparametric bootstrapping with 1000 bootstrap samples and bias-corrected, accelerated 95% CIs
结果
189个病人纳入研究,在研究期间有25个血培养阳性,80个嗜酸性粒细胞降低。4个病人培养出多种菌,12个培养出G+菌,9个培养出G-菌。培养阴性和阳性的病人基线资料见表格,其中WBC和CRP有显著差异。
其他可能影响嗜酸性粒细胞的资料见表S1
结果
表2位单因素分析结果,嗜酸性粒细胞计数(both before and after bootstrapped multiple regression analysis (1000 bootstrap replicates))、中性粒细胞计数、CRP均有统计学意义,而白细胞计数、qSOFA和寒战均无统计学意义。Cut-off后,CRP灵敏度高特异度低,中性粒细胞计数灵敏度低特异度高
表3展示了预测血流感染模型的AUROCs,基线模型加入中性粒细胞计数和CRP后提高了AUROC(0.650到0.729),IDI 和NRI均有统计学意义;在次基础上加上嗜酸性粒细胞计数后,AUROC轻度增加到0.758,NRI有统计学意义,IDI无统计学意义。Bootstrap多次后最终模型的AUROC仍相同。图1展示了三个模型的ROC曲线。
讨论
总结发现:According to our findings, 预测能力有统计学意义但l灵敏度和特异度不高,比qSOFA及寒战诊断价值高(该队列不包括ICU和急诊的病人),诊断模型有轻度改良,可能可以作为预测标志物,然而还需要更多研究。
本研究的稳健性,与其他研究的不同(可能的原因为qSOFA和寒战仅可用于ICU及急诊病人)
研究的局限性:
1.单中心、单科室不能推广到ICU和急诊。
2.排除了178个2周内使用过抗生素的病人(如此多病人可能以为本研究在三甲医院,很多病人在就诊前就已经去过其他医院看病),可能有选择偏倚
3.对于血培养没有严格的指征,由医生决定
4.排除了血液系统肿瘤、嗜酸性粒细胞增多、激素使用的病人,因为这些病人极少见。因此该结论也不适用与这些疾病流行度高的病人。
5.仅轻度和中度寒战的病人纳入了研究,之前研究表明寒战程度越高尤其是伴有发抖时,菌血症可能性越大,这可能是本研究中寒战没有统计学差异的原因。
6.本研究没有纳入PCT(很多病人没有做该检测),尽管其预测培养阳性的能力不足,但降钙素原被认为是血流感染的预测标志物。
审稿意见与答复:
Statistical method description is also not clear. They did no attempt to test validity of the prediction model using some methods such as cross-validation and bootstrapping. Correcting optimism problem in study with small sample size have been more emphasized. The conclusions drawn inadequately supported by the data shown.
Response: As reviewer 1 pointed out, we tested validity of the prediction model using bootstrapping and cross-validation. We added the result of bootstrapping in the manuscript. Eosinopenia alone yielded almost same overall predictive ability (AUROC: 0.648, 95%CI: 0.491–0.805, cut-off = 24.4 cells/mm3) from 10-fold cross validation procedure. The addition of eosinopenia to the baseline variables (age, sex) and CRP similarly improved the AUROC (from 0.650 to 0.753, 95%CI 0.662-0.851, cut-off = 24.4 cells/mm3) from 10-fold cross validation procedure. We also changed the conclusions supported by the data shown.
统计学方法疑惑:
logistic回归cross-validation and bootstrapping如何实现(from 10-fold cross validation procedure. Following bootstrapped multiple regression analysis (1000 bootstrap replicates))Internal validation of the prediction models was conducted using ordinary nonparametric bootstrapping with 1000 bootstrap samples and bias-corrected, accelerated 95% CIs.[Ref:Efron B TR. An introduction to the bootstrap: CRC press; 1994.]
基本理论
即把所有样本分为10份(彼此不交叉),其中9份作为训练集,1份作为测试集(共10组模型)(https://www.zhihu.com/question/39259296)
上图中训练生成10组模型,10组模型又分别对自己的测试集产出测试结果,测试结果的平均值就是返回结果。10组模型的预测结果差距越小,表明模型参数鲁棒性越好,出现过拟合的可能性也越小,因为可以证明模型在不同数据集上表现稳定。cross-validation的最大好处是所有数据都会参与到训练和预测中。
cross-validation有一个问题,就是在数据分组的时候缺乏随机性,而且每个数据只能固定属于K组中的一组,可能会造成对于最终结果的影响。Booststrap的思想是完全随机放回性采样。Booststrap的用法如下:
1.数据分组
假设要分成10组,则先设置一个采样比例,比如设置成70%。则10组数据是每次从数据集D中随机采样总数70%的数据构成数据集D1,然后把数据放回,再随机采样总数70%的数据构成数据集D2........以此类推,放回式采样10份。
2.训练生成10组模型
3.效果评估(取平均值)
如果用来做模型的选择和预测误差的估计,cross-validation的特点是bias小,方差大,方差基本不会因为fold数目提高有明显减小,Booststrap的特点是bias大但是方差小。bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。
评价诊断指标的参数NRI和IDI
关于net reclassification improvement (NRI)【新模型对旧模型的重新分类导致准确度的改善,重分类改善指标】和integrated discrimination index (IDI)【综合判别改善指数】的详细解读见:
https://cjasn.asnjournals.org/content/7/8/1355
NRI:The net proportion of patients with events reassigned to a higher risk category (NRIevents) and of patients without events reassigned to a lower risk category (NRInonevents) is calculated (Appendix). The NRI is the sum of NRIevents and NRInonevents. It is interpreted as the proportion of patients reclassified to a more appropriate risk category.
The IDI is the sum of IDIevents and IDInonevents. The IDIevents is also equal to the difference in the average sensitivity (normally termed the integrated sensitivity [IS]) of the two models across all risk thresholds and the IDI for those without events (IDInonevents) is equal to the difference in the average 1-specificity (integrated 1-specificity [IP]).
以下内容来源 "解螺旋·临床医生科研成长平台" 原创文章:怎样判断一个诊断(风险预测)模型的好坏?
模型的区分度和校准度
一个好的预测模型应该能针对某个结局,把一群人的风险高低区分开来,这就是区分度(discrimination)。它跟患者在人群中的分布特征有关,模型中纳入的自变量(如性别、年龄、某些实验室检查等)如果有异质性,那么模型的区分度就好,否则就差。区分度一般以我们熟悉的ROC曲线下面积(AUC)来评价,或称C统计量(C-statistics)。AUC越高,模型对高低风险人群的区分度越好。一个广泛接受的评判标准是,AUC在0.6以下为低区分度,0.6 – 0.75 是中区分度,0.75以上为高区分度。
但一个区分度很好的模型,却可能有着较差的校准度(calibration),或称拟合优度(Goodness of fit)。比如它能判断一个人发生某疾病的风险是另一个人的5倍,它判断这两人的风险分别为5%和1%,而实际上两人的风险是50%和10%,那这个模型也挺离谱的,这就是校准度不好。模型的校准度可以用Hosmer-Lemeshow检验(H-L检验),若结果得到显著统计学意义,则表明预测值与观测值之间(即模型和真实之间)有差异。但H-L检验有其不足。有统计学差异只能提示这个模型整体上跟观测值有差异,却无法展示更多细节。做出校准曲线来有可能会看到这样一种情况:
这是MAGGIC心衰风险评分量表的校准曲线,其用于评价心衰1年死亡风险。黄色曲线为模型预测值,蓝色带有误差线的点为观测值。可见它们前面一段低风险时吻合得不错,而有轻微高估;但30%开始,模型预测的风险低于实际观察值10%左右,自此拉开差距。这个模型在外部验证集中检测的时候,AUC为0.77。像这种情况的模型是否毫无用处呢?如果有其他研究表明(或行业内达成共识),风险高于20%的时候就一定要采取某种干预,那么后面的差异其实影响不大,这都是可以在讨论中Argue一下的,深入分析自己的模型的价值和适用范围,也可圈可点。区分度和校准度对一个模型来说都是很重要的评价,许多新开发的模型没有得到充分的评价,就只好流散于苍茫文献海,泯然一滴水,后人遇到了还要辛苦甄别。有一项关于心血管系统风险预测模型研究的系统综述发现,只有63%的模型汇报了区分度,而汇报校准度的更少,才36%。
你的模型要和别人的模型来一场PK,如果你开发的风险预测模型是为了解决一个全新的问题,展示自己好也就够了。但更多时候是希望能改进现有的解决方案,那么当然还要表明它比现有的好(至少某一方面),才能有发表的机会呀。区分度比较两者的AUC是可以的,但没什么细节。校准度的比较则可用赤池信息准则(Akaike Index Criterion, AIC)或贝叶斯信息准则(Bayesian Index Criterion, BIC),其值越低,校准度越好,但同样没什么细节,可能相对较好的那个模型离真实情况还是挺远的。但AIC和BIC见得更少了。这里再重点介绍一种近年来应用愈发增多的指标,听说有的小伙伴已经遇到过审稿人要求返修做这个分析了,就是净重新分类指数(Net Reclassification Index, NRI)。听名字,这意思就是旧模型把一群人分为高风险和低风险,新模型会把其中几个人挪挪窝,有的挪对了有的挪错了,“挪对的 – 挪错的”就是净重分类。指数嘛,再除以总人数的百分比咯。但还要分成两拨来看,即观测发生结局事件的和未发生结局事件的,因为它们分别代表假阴性和假阳性的概率。还是在一个情景中说明吧。
相加NRI(additive NRI)的值可以从200 ~ -200,即新模型完全分类正确(所有低风险的人都未发生结局事件,且所有高风险的人都发生了结局事件)为200,反之完全分类错误为-200。它主要的局限性就是没有考虑发生与不发生事件的两拨人在总体中的分布情况。
绝对NRI(absolute NRI)以总体为分母,则回避了这个局限。
相加NRI用得多一点,但其实它们各有意义,应该兼看。再看两个例子来理解它俩的差别吧。
例1: 样本20000人,观察下来,发生与未发生结局事件的两拨人各有10000。下图绿色表示正确重新分类,粉色表示错误重新分类,灰色表示没有重新分类。
计算下来,相加NRI为12,是正值;绝对NRI是6%,也是正值,如图下方的表格所示。也就是说,虽然未发生结局事件的有300人被错误重新分类,但总体上来说还是利大于弊的。
例2:样本是11000人,观察下来,发生与未发生结局事件的人比例不再是1:1了,分别为1000人与10000人。
如表所示,这回相加NRI和上边一样是12,还是正值。如果光看相加NRI,似乎新模型还是个好模型。但看绝对NRI,原来是个负值。
再看看细节,新模型对发生了结局事件的人做了更好的重分类,可遗憾的是,这拨人所占比例更小;而对于未发生结局事件的人,其重分类效果并不好,这部分人占的比例又比较大,最终绝对NRI是负的,暴露了新模型的局限性。
下面是一个研究中的真实案例,情况跟上边的例2差不多。评价术后发生心梗或心源性死亡的风险,原来有一个评分量表(Revised Cardiac Risk Index, RCRI),此为旧模型。研究者想看看加上冠脉造影(CCTA)能不能更好地预测风险,即CCTA + RCRI为新模型。
观察下来,结局发生与不发生在总体中的分布为7.7% : 92.3%,统计重新分类的情况,计算两个NRI,出现了相加NRI为正值、绝对NRI为负值的情况。
发生这种情况,又要拋弃新模型咯?粗看或许的是,但其实还有另一个讨论思路,这个思路在许多研究中都适用,就是假阴性与假阳性哪个后果更严重。
发生结局事件的人,当初被错误地分到低风险组,就是假阴性,让病人和医生都放松警惕,可能错过了及时干预的机会。未发生结局事件的人,当初被错误地分到高风险组,就是假阳性,让人提心吊胆草木皆兵,可能过度干预造成额外的负担。
如果结局事件挺严重的,比如本例中的心梗或心源性死亡,就算风险低我也想要极力避免,要干预,那么假阳性较多的模型也有其价值。如果结局事件不那么严重,或者即使发生了还有较好的补救方案,那么当初测试时它低估了我的风险我也不是太介意,假阴性多一点的模型也能接受。总之,如果你的分析方法能看到更多细节,也就给了你更多更深入分析讨论的机会,为自己的研究成果找到亮点。
Alba, A. C. et al. Discrimination and Calibration of Clinical Prediction Models: Users’ Guides to the Medical Literature. JAMA 318, 1377–1384 (2017).
关于假阴性与假阳性的权衡,还有其他指标,比如净受益率,可以做决策曲线来分析。
R语言计算NRI和IDI(来源:解螺旋文章)
R里有2个包专事计算NRI,分别为nricens和PredictABEL。从最后结果来说,nricens计算出来的是绝对NRI,PredictABEL则为相对NRI。但我们已经知道计算原理了呀,而且它们都能生成新旧模型分类的对照表,所以其实只用其中一个包就都可以计算了。
先用一份示例数据做个模型。这是survival包里带有的一份梅奥诊所的数据,记录了418位患者的临床指标,观察这些因素与原发性胆汁性肝硬化(PBC)的关系。其中前312位参加了RCT,其他的只参加了观察队列。
library(survival)
### logistic回归
egData <- pbc[1:312, ]
这个表中的结局是status,0 = 截尾(删失),1 = 接受移植,2 = 死亡。研究目的“死亡与否”是个二分类变量,所以要做些变换。再看time一栏,有的不够2000天,这些样本要么是没到2000天就死亡了,要么是删失了。我们要删掉2000天内删失的数据。
egData = egData[egData$time > 2000 | (egData$time < 2000 & egData$status == 2), ]
选好后做一个event向量,把status的三个状态变成死亡 = 1, 未死亡 = 0。
# 当time<2000,且status为2(死亡)时,记为1,否则为0。
event = ifelse(egData$time < 2000 & egData$status == 2, 1, 0)
# 合并数据
egData = cbind(egData,event)
然后选择模型的自变量(predictors)。太多了,选取其中几个示例。就以年龄、胆红素、白蛋白为旧模型(standard),三者加上一个凝血酶原时间为新模型(new)。
一般做logistic回归是用glm(因变量 ~ 自变量1 + 自变量2 + …… +自变量n, family = binomial('logit'), data = 数据表),但如果自变量较多的话,前面那个运算式就会很长很长,万一这些自变量还是基因名或编号,就很想死了。所以顺便讲一个简化的办法,即把那一串先写成formula。
# 旧模型
fml.std <- as.formula(paste0('event~', paste(colnames(egData)[c(5,11,13)], collapse = '+')))
# event~age+bili+albumin
# 新模型
fml.new <- as.formula(paste0('event~', paste(colnames(egData)[c(5,11,13,19)], collapse = '+')))
# event~age+bili+albumin+protime
# 模型拟合,x=TRUE是将来用nricens包计算时要求用到的,表示输出结果中是否包含所用到的数据表,平时可以不写。
mstd = glm(fml.std, family = binomial('logit'), data = egData, x=TRUE)
mnew = glm(fml.new, family = binomial('logit'), data = egData, x=TRUE)
模型就这样做完了~ 先不急着计算NRI,先看看它的总体情况。
summary(mstd)
# 结果描述
Call: glm(formula = fml.std, family = binomial("logit"), data = egData, x = TRUE)
Deviance Residuals: Min 1Q Median 3Q Max
-2.78723 -0.57296 -0.39507 0.09268 2.82804
Coefficients: Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.01472 1.79654 -0.008 0.993461
age 0.05847 0.01600 3.655 0.000258 ***
bili 0.39126 0.06522 5.999 1.98e-09 ***
albumin -1.49447 0.42575 -3.510 0.000448 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 371.21 on 311 degrees of freedom
Residual deviance: 243.77 on 308 degrees of freedom
AIC: 251.77
Number of Fisher Scoring iterations: 6
残差、相关系数、各个自变量的统计显著性等,注意倒数第二行的AIC,就是上一期提到的赤池信息准则,表示模型校准度,很少有人汇报呢。
NRI的计算
# install.packages("nricens")
library(nricens)
NRI <- nribin(mdl.std = mstd, mdl.new = mnew, updown = 'category',cut = c(0.3,0.6), niter = 10000, alpha = 0.05)
填上新旧两个模型。Cut是判断风险高低的临界值,现在我们写了2个,也就是0~29%为低风险,30%~59%为中风险,60%~100%为高风险。现实中可以查阅相关文献进行设置,预测风险达到多少需要怎样干预之类的。
Updown为定义一个样本的风险是否变动的方式,category是指分类值,即我就熟悉的低、中、高风险,另有一种diff,为连续值。选diff时,cut就设1个值,比如0.02,即认为当预测的风险在新旧模型中相差2%时,即被认为是重新分类了。这种方法用的比较少。
后面几个参数就比较有意思了,niter为重复取样的次数,即boostrap方法,不做的话将其设为0就好了;做的话建议至少1000次,这也是默认值,但我(读书少)见过的研究都10000次。然后将统计显著性alpha设为0.05。
如果不做bootstrap,就是这个结果。有重新分类情况的详表,最后是NRI和各种变动的概率。第一个NRI如前所述,是绝对NRI,大家可以根据之前的知识和上边的详表自己计算验证一下,此时可手动计算出相对NRI。其他指标随便看看。
如果做了bootstrap,就会多出一个表:
因为做了10000次重复取样,相当于有10000个NRI,于是就有了标准误和置信区间,刚才我们设alpha = 0.05,所以后面的Lower和Upper就是95%置信区间的下界和上界。
同时,做不做bootstrap都会得到一张图,表示各数据点在新旧模型中的分布。
PredictABEL包的做法
# install.packages("PredictABEL")
library(PredictABEL)
pstd <- mstd$fitted.values
pnew <- mnew$fitted.values
先把两个模型中的预测风险值提出来,也就是模型中的fitted.value。这个包只能从预测风险计算,刚才的nricens包可以用模型,也可以用预测风险(把mdl.std和mdl.new参数换成p.std和p.new)。
reclassification(data = egData, cOutcome = 21, predrisk1 = pstd,predrisk2 = pnew, cutoff = c(0,0.30,0.60,1))
cOutcome是结局事件的列序号,刚才我们不是把event放到最后了么,即第21列,填上。两个预测风险值也相应填上。这里的cutoff跟刚才的不一样,还要填上前面的0和后面的1,成为完整的0~100%的区间。
然后得到一个重新分类表:
跟上边nricens做的差不多了。不过这个包没有bootstrap的选项。
接着看下面的结果,这里的分类NRI是咱们上回说的相加NRI,同样可以根据上一期的知识手动计算一下。记得咱们并没有设置bootstrap吧?可这里也有个95%置信区间,只是内部调用了一个更为简陋的只能计算连续NRI的improveProb()函数做的,而且连续变化的临界值也不太透明,遂不管了。
最后还有个IDI是指,发生和未发生结局事件样本的平均预测风险差异,在新模型中提高了0.44%。
这两个包当然各有优劣。nricens计算时可控制的参数较多,汇报起来显得华丽一些。PredictABEL计算结果则多了个IDI和大家喜闻乐见的p值。但也有学者表示,两个模型的差异未必要求p<0.05。
PredictABEL包还有很多有用的功能,比如可以做Hosmer- Lemeshow校准曲线,当然也附送p值
plotCalibration(data = egData, cOutcome = 21, predRisk = pnew, groups=6, rangeaxis=c(0,1), plottitle="Calibration plot", xlabel="Predicted risk", ylabel="Observed risk", filename="calibration_table.txt")
两个模型的ROC曲线
labels <- c("standard model", "new model")
plotROC(data = egData, cOutcome = 21, predrisk = cbind(pstd,pnew), labels=labels)
区分度箱形图:
网友评论