DecisionCurve決策曲線分析法


這里有一份示例數據,是NHLBI(美國國家心肺血液研究所)的Framingham心臟研究專項數據集的一個子集,4000多個樣本。

自變量分別為性別(sex)、收縮壓(sbp)、舒張壓(dbp)、血清膽固醇(scl)、年齡(age)、身體質量指數(bmi)等,因變量為冠心病相關死亡事件(chdfate)。因變量必須是二元變量,隨訪時間內死亡為1,未死亡為0。

一個是簡單模型,以血清膽固醇值為預測方法(predictor),死亡事件為結果(outcome);另一個是復合模型,聯合性別、年齡、BMI、血清膽固醇、收縮壓、舒張壓為預測方法,死亡事件為結果。

#安裝軟件
install.packages("DecisionCurve")
#導入軟件
library(DecisionCurve)
#設置路徑
setwd("~/Desktop/cancerlab/file")
#導入文件
Data<- read.csv('2.20.Framingham.csv',sep = ',')
#使用函數建立模型
simple<- decision_curve(chdfate~scl,data = Data, family = binomial(link ='logit'),thresholds= seq(0,1, by = 0.01), confidence.intervals =0.95,study.design = 'case-control',population.prevalence = 0.3)
#decision_curve()函數中,family =binomial(link = ‘logit’)是使用logistic回歸來擬合模型。threshold設置橫坐標閾概率的范圍,一般是0 ~ 1;但如果有某種具體情況,大家一致認為Pt達到某個值以上,比如40%,則必須采取干預措施,那么0.4以后的研究就沒什么意義了,可以設為0 ~ 0.4。by是指每隔多少距離計算一個數據點。

 

可見,在Pt約為0.1~0.5范圍內,復合評價模型的凈受益率都比簡單模型高。
complex<- decision_curve(chdfate~scl+sbp+dbp+age+bmi+sex,data = Data,family = binomial(link ='logit'), thresholds = seq(0,1, by = 0.01),confidence.intervals= 0.95,study.design = 'case-control', population.prevalence= 0.3)
summary(complex)
List<- list(simple,complex)

plot_decision_curve(List,curve.names= c('simple','complex'),cost.benefit.axis =FALSE,col = c('red','blue'),confidence.intervals =FALSE,standardize = FALSE)

 

# 使用simple模型預測1000人的風險分層,顯示“損失:受益”坐標軸,賦以8個刻度,顯示置信區間,得到下圖:
plot_clinical_impact(simple,population.size = 1000,cost.benefit.axis = T, n.cost.benefits= 8,col = c('red','blue'), confidence.intervals= T)


#紅色曲線(Numberhigh risk)表示,在各個閾概率下,被simple模型划分為陽性(高風險)的人數;藍色曲線(Number high risk with outcome)為各個閾概率下真陽性的人數。

轉載:解螺旋·臨床醫生科研成長平台


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM