该项目是一个用于计算患 2 型糖尿病风险的 R 包。该软件包使用 QDiabetes 算法的 R 实现,该算法最初由 ClinRisk 使用 C++ 编程语言衍生。 QDiabetes 软件包包括 QDiabetes-2013 和 QDiabetes-2018,尽管未来版本中可能会包含旧版(最终是更新版)QDiabetes。
ClinRisk 不支持或认可此代码。最终用户应将原始 C++ 源代码视为“黄金标准”开源实现。请注意, QDiabetes R 软件包是作为仅用于科学目的的研究工具而创建的。 QDiabetes R 套装尚未获得药品和保健品监管机构 (MHRA) 作为医疗器械的批准,因此不应用作任何个体化风险评估的一部分。
第一个 QDiabetes 算法(当时称为“QDScore”)于 2009 年发布1 。 2011年,发生了两项重大变化,算法允许的年龄范围从25-79岁扩大到25-84岁,吸烟状况变量从两个级别[当前吸烟者和不吸烟者]扩展到五个级别[不吸烟者、戒烟者、轻度吸烟者(1-9 次/天)、中度吸烟者(10-19 次/天)和重度吸烟者(≥20 次/天)]。 2012 年,QDiabetes-2013 发布,2013 年至 2016 年算法系数定期更新,直到 2017 年发布了更广泛的 QDiabetes-2018 算法2 。在此过程中的某个时刻,QDiabetes 从 2001 年汤森德剥夺数据的来源转向了 2011 年英国人口普查的数据,然而,这种情况发生的时间点尚不清楚。目前,可以肯定的是,原始 2009 QDScore 算法使用 2001 年英国人口普查的 Townsend 数据,而 QDiabetes-2018 使用 2011 年英国人口普查的 Townsend 数据。有关 QDiabetes-2013 和 QDiabetes-2018 中使用的变量的更多详细信息,请参阅以下部分。
QDiabetes-2013 算法由两个独立的风险预测模型(每个性别一个)组成,其中使用以下 11 个变量来计算风险:
性别[ sex
]
女—— "Female"
男—— "Male"
年龄[ age
],以年为单位
体重指数[ bmi
],单位 kg/m 2
种族[ ethn
],九类:
白色或未注明 — "WhiteNA"
印第安人—— "Indian"
巴基斯坦语—— "Pakistani"
孟加拉国语 — "Bangladeshi"
黑色加勒比海—— "BlackCaribbean"
非洲黑人—— "BlackAfrican"
中文—— "Chinese"
其他亚洲人 — "OtherAsian"
其他族裔群体—— "Other"
吸烟状况[ smoke
],五个级别:
不吸烟者—— "Non"
前吸烟者—— "Ex"
轻度吸烟者(1-9 次/天)— "Light"
中度吸烟者(10-19 次/天)— "Moderate"
重度吸烟者(≥20/天)—— "Heavy"
剥夺[ tds
],通过 Townsend 分数衡量,其中值越高表示剥夺程度越高
一级亲属有糖尿病家族史[ fhdm
]
高血压治疗史[ htn
],被诊断为高血压并接受至少一种高血压药物治疗
心血管疾病史[ cvd
],定义为:缺血性心脏病、中风或短暂性脑缺血发作
英国国家处方集第 6.3.2 章中列出的皮质类固醇 [ ster
]的使用史,包括口服或全身注射:泼尼松龙、倍他米松、可的松、地泊美酮、地塞米松、地夫可特、依皮质醇、氢化可的松、甲泼尼龙或曲安西龙
生存时间[ surv
],是计算患 2 型糖尿病风险的时间段。
QDiabetes-2013 算法在QDiabetes包的QDR2013()
函数内实现。
QDiabetes-2018算法实际上是六个独立的风险预测模型(三个子模型,按性别细分)。
基本(核心)模型“模型 A”使用与 QDiabetes-2013 相同的风险预测因子,省略了生存时间变量(支持固定的 10 年生存窗口),并添加了以下 6 个变量变量:
妊娠糖尿病史[ gdm
] (仅限女性)
多囊卵巢综合症病史[ pcos
] (仅限女性)
学习障碍的历史[ learn
]
精神分裂症或双相情感障碍病史[ psy
]
他汀类药物的使用历史[ stat
]
第二代“非典型”抗精神病药物[ apsy
]的使用史,包括:氨磺必利、阿立哌唑、氯氮平、鲁拉西酮、奥氮平、帕潘立酮、喹硫平、利培酮、舍吲哚和佐替平
QDiabetes-2018 算法的模型 A 在QDiabetes包的QDR2018A()
函数内实现。
“模型 B”使用与模型 A 相同的变量,但添加了:
空腹血糖水平[ fpg
],单位 mmol/L
QDiabetes-2018 算法的模型 B 在QDiabetes包的QDR2018B()
函数内实现。
“模型 C”使用与模型 A 相同的变量,但添加了:
糖化血红蛋白 A 1c值[ hba1c
],单位为 mmol/mol
QDiabetes-2018 算法的模型 C 在QDiabetes包的QDR2018C()
函数内实现。
您可以使用以下命令安装 CRAN 发布的QDiabetes版本:
install.packages(“QDiabetes”)
或者,可以使用以下命令从 GitHub 安装开发版本:
if (!{"remotes" %in%installed.packages()}) install.packages("remotes")remotes::install_github("Feakster/qdiabetes")
在构建这个包时,我们希望制作一些易于编写、易于维护(KISS 原则)、高性能但与最新和旧版本的 R 兼容的东西。考虑到这一点,我们将此包编写为尽可能忠实于 R 的核心语言,使用最少的依赖项。因此,您在这里找不到任何Rcpp 。相反,所有函数都完全用 R语言编写;唯一的例外是getTDS()
函数,它使用stats包中的median()
函数(尽管我们可能会在某个时候重写它)。描述文件中“建议”下列出的所有其他包仅用于说明QDiabetes在示例或小插图中的使用,或在测试包中的使用。限制该包与旧版本 R 的兼容性的主要因素是 CRAN 要求我们用于getTDS()
函数的数据帧后端的数据存储方法。由于该对象的内存占用(约200MB),我们需要利用XZ压缩来尽可能减小包的整体大小。 XZ 压缩首先在 R 版本 2.10 中实现。
该包的风险预测功能中使用的许多默认值被选择为代表英国人口。这些值仅旨在最大限度地减少以探索性方式使用风险预测功能时所需的键入量。它们在研究环境中不太可能有用,您需要知道分配给所有函数参数的确切值,以便做出准确的风险预测。因此,虽然您可以通过仅指定sex
、 age
和bmi
指数从QDR2013()
和QDR2018A()
函数获得风险预测,但您将假设白人或缺失种族、非吸烟状态、汤森德剥夺得分为 0 ,并且完全没有任何相关病史/病症和伴随药物治疗。对于QDR2013()
,您还假设需要 10 年的风险窗口。
下面是一些使用QDiabetes包的非常简单的示例。请注意,为了方便起见,可以在此包中的任何风险预测函数中指定 BMI [ bmi
] 或身高 [ ht
] 和体重 [ wt
]。
为了让生活变得更轻松,包中添加了getTDS()
辅助函数,该函数使用查找表从完整或部分英国邮政编码获取 Townsend 剥夺分数。
### 加载包命名空间 ###library(QDiabetes)### 简单用法 ###QDR2013(sex = "Female",age = 35, bmi = 25)# [1] 0.6324508QDR2018A(sex = "Male",年龄 = 45,bmi = 35)# [1] 9.88593QDR2018B(性别=“女”,年龄 = 65,bmi = 30,fpg = 6)# [1] 18.43691QDR2018C(性别 =“男”,年龄 = 25,bmi = 40,hba1c = 42)# [1] 8.226301###使用 getTDS() 辅助函数 ###getTDS("OX2 6GG")# [1] 2.022583QDR2013(性别=“女”,年龄=41,ht=1.65,wt=60,tds=getTDS(“OX3 9DU”))# [1] 0.5004499QDR2018A(性别=“男”,年龄=33 ,bmi = 26,tds = getTDS("OX3 7LF"))# [1] 0.6472644### 利用矢量化 ###getTDS(c("OX3 7LF", "OX2 6NW", "OX2 6GG", "OX1 4AR"))# OX37LF OX26NW OX26GG OX14AR# -1.032394 1.640422 2.022583 2.309777QDR2013(性别 = "女", 年龄 = 35, bmi = seq(20, 40, 5))# 20 25 30 35 40# 0.1801226 0.6324508 1.7885233 3.8983187 6.2964702QDR2018A(性别 = "女", 年龄 = seq(25, 75, 10), bmi = 35)# 25 35 45 55 65 75# 1.085179 2.921454 5.893499 9.082108 10.713717 9.567516QDR2018B(性别=“男”,年龄=65,bmi=35,fpg=2:6)#2 3 4 5 6#0.9123063 0.5911511 1.8416081 7.8554831 30.8096968QDR2018C(性别=“女”,年龄=80,bmi=28,hba1c=seq(15,45,5))#15 20 25 30 35 40 45#0.008084487 0.033019655 0.121238952 0.412396004 1.320727239 4.005759509 11.409509026### 数据帧使用 ###data(dat_qdr) # 合成样本数据## 使用基础 R ##dat_qdr[["risk"]] <- with(dat_qdr, QDR2013(sex = 性别,age = 年龄,ht = ht,wt = wt,ethn = ethn,smoke = 烟,tds = tds,htn = htn,cvd = cvd,ster = ster))## 使用 dplyr ##library (dplyr)df_qdr <- as_tibble(dat_qdr)df_qdr <- df_qdr %>% 突变(风险= QDR2013(性别=性别,年龄=年龄,ht = ht,wt = wt,ethn = ethn,烟雾=烟雾,tds = tds,htn = htn,cvd = cvd,ster = ster))##使用data.table ##library(data.table)dt_qdr <- as.data.table(dat_qdr)dt_qdr[, 风险 := QDR2013(性别 = 性别, 年龄 = 年龄, ht = ht, wt = wt, ethn = ethn, 烟雾 = 烟雾, tds = tds, htn = htn, cvd = CVD,斯特=斯特)]
请参阅 QDiabetes GitHub 存储库上的问题。
QRISK3:ClinRisk 的 QRISK3 风险预测算法的 R 实现。
该项目由美国国家卫生研究院 (NIHR) 初级保健研究学院 (SPCR) 资助 [项目编号:412]。所表达的观点是作者的观点,不一定是 NIHR 或卫生和社会保障部的观点。
1:Hippisley-Cox J、Coupland C、Robson J、Sheikh A 和 Brindle P. (2009)。预测英格兰和威尔士 2 型糖尿病的风险:QDScore 的前瞻性推导和验证。 BMJ 338 , b880
2:Hippisley-Cox J 和 Coupland C. (2017)。用于估计 2 型糖尿病未来风险的 QDiabetes-2018 风险预测算法的开发和验证:队列研究。 BMJ 359 , j5019