Este proyecto es un paquete R para calcular el riesgo de desarrollar diabetes tipo 2. El paquete utiliza implementaciones R de los algoritmos QDiabetes, que inicialmente fueron derivados por ClinRisk utilizando el lenguaje de programación C++. El paquete QDiabetes comprende QDiabetes-2013 y QDiabetes-2018, aunque es posible que se incluyan versiones anteriores (y eventualmente más recientes) de QDiabetes en futuras versiones.
ClinRisk no respalda ni respalda este código. Los usuarios finales deberían ver la fuente original de C++ como la implementación de código abierto "estándar de oro". Tenga en cuenta que el paquete QDiabetes R se ha creado como una herramienta de investigación únicamente con fines científicos. El paquete QDiabetes R no ha recibido la aprobación de la Agencia Reguladora de Medicamentos y Productos Sanitarios (MHRA) como dispositivo médico y, por lo tanto, no debe utilizarse como parte de ninguna evaluación de riesgos individualizada.
El primer algoritmo QDiabetes (denominado “QDScore” en ese momento) se publicó en 2009 1 . En 2011, se realizaron dos cambios sustanciales, mediante los cuales el rango de edad permitido por el algoritmo se amplió de 25 a 79 a 25 a 84, y la variable del estado de tabaquismo se amplió de dos niveles [fumador actual y no fumador] a cinco niveles. no fumador, exfumador, fumador leve (1-9/día), fumador moderado (10-19/día) y fumador empedernido (≥20/día)]. En 2012 se lanzó QDiabetes-2013, y de 2013 a 2016 los coeficientes del algoritmo se actualizaron periódicamente, hasta 2017, cuando se publicó el algoritmo más amplio QDiabetes-2018 2 . En algún momento del camino, QDiabetes pasó de obtener datos de privación de Townsend del censo del Reino Unido de 2001 al de 2011; sin embargo, el momento en el que esto ocurrió no está claro. Por ahora, lo único que se puede decir con certeza es que el algoritmo QDScore original de 2009 utilizó datos de Townsend del censo del Reino Unido de 2001, mientras que QDiabetes-2018 utiliza datos de Townsend del censo del Reino Unido de 2011. Se pueden encontrar más detalles sobre las variables utilizadas en QDiabetes-2013 y QDiabetes-2018 en las siguientes secciones.
El algoritmo QDiabetes-2013 consta de dos modelos de predicción de riesgo separados (uno por género), en los que se utilizan las siguientes 11 variables para calcular el riesgo:
Género [ sex
]
Mujer - "Female"
Hombre - "Male"
Edad [ age
], en años
Índice de masa corporal [ bmi
], en kg/m 2
Etnia [ ethn
], nueve categorías:
Blanco o no indicado: "WhiteNA"
Indio - "Indian"
Pakistán - "Pakistani"
Bangladesh - "Bangladeshi"
Caribe Negro - "BlackCaribbean"
Africano negro - "BlackAfrican"
Chino - "Chinese"
Otro asiático: "OtherAsian"
Otro grupo étnico: "Other"
Estado de tabaquismo [ smoke
], cinco niveles:
No fumador - "Non"
Exfumador - "Ex"
Fumador leve (1 a 9/día): "Light"
Fumador moderado (10 a 19/día): "Moderate"
Fumador empedernido (≥20/día) — "Heavy"
Privación [ tds
], medida por las puntuaciones de Townsend, donde los valores más altos indican niveles más altos de privación
Antecedentes familiares de diabetes en un familiar de primer grado [ fhdm
]
Historia de hipertensión tratada [ htn
], siendo diagnóstico de hipertensión y tratamiento con al menos un fármaco hipertensivo
Antecedentes de enfermedad cardiovascular [ cvd
], definida como: cardiopatía isquémica, accidente cerebrovascular o ataque isquémico transitorio
Historial de uso de corticosteroides [ ster
] enumerados en el capítulo 6.3.2 del Formulario Nacional Británico, incluidos los orales o inyecciones de sistémicos: prednisolona, betametasona, cortisona, depo-medrona, dexametasona, deflazacort, efcortesol, hidrocortisona, metilprednisolona o triamcinolona.
Tiempo de supervivencia [ surv
], es el período de tiempo durante el cual se debe calcular el riesgo de desarrollar diabetes tipo 2.
El algoritmo QDiabetes-2013 se implementa dentro de la función QDR2013()
del paquete QDiabetes .
El algoritmo QDiabetes-2018 consta en realidad de seis modelos de predicción de riesgos separados (tres submodelos, subdivididos por género).
El modelo básico (núcleo), 'modelo A', utiliza los mismos predictores de riesgo que QDiabetes-2013, con la omisión de la variable tiempo de supervivencia (a favor de una ventana de supervivencia fija de 10 años) y la adición de los siguientes 6 variables:
Historia de diabetes gestacional [ gdm
] (solo mujeres)
Antecedentes de síndrome de ovario poliquístico [ pcos
] (solo mujeres)
Historia de las dificultades de aprendizaje [ learn
]
Historia de esquizofrenia o trastorno afectivo bipolar [ psy
]
Historial de uso de estatinas [ stat
]
Historial de uso de antipsicóticos "atípicos" de segunda generación [ apsy
], que incluyen: amisulprida, aripiprazol, clozapina, lurasidona, olanzapina, paliperidona, quetiapina, risperidona, sertindol y zotepina.
El modelo A del algoritmo QDiabetes-2018 se implementa dentro de la función QDR2018A()
del paquete QDiabetes .
'Modelo B', utiliza las mismas variables que el modelo A, con la adición de:
Nivel de glucosa plasmática en ayunas [ fpg
], en mmol/L
El modelo B del algoritmo QDiabetes-2018 se implementa dentro de la función QDR2018B()
del paquete QDiabetes .
El 'Modelo C', utiliza las mismas variables que el modelo A, con la adición de:
Valor de hemoglobina glucosilada A 1c [ hba1c
], en mmol/mol
El modelo C del algoritmo QDiabetes-2018 se implementa dentro de la función QDR2018C()
del paquete QDiabetes .
Puede instalar la versión publicada de QDiabetes desde CRAN con:
instalar.paquetes("QDiabetes")
Alternativamente, la versión de desarrollo se puede instalar desde GitHub con:
if (!{"remotes" %in% install.packages()}) install.packages("remotes")remotes::install_github("Feakster/qdiabetes")
Al construir este paquete, queríamos hacer algo que fuera simple de escribir y fácil de mantener (principios KISS), eficaz, pero compatible con las versiones más recientes y anteriores de R. Con esto en mente, hemos escrito este paquete para que sea lo más fiel al lenguaje principal de R como sea posible, utilizando dependencias mínimas. Por lo tanto, no encontrará ningún Rcpp aquí. En cambio, todas las funciones se han escrito completamente en base R; la única excepción es la función getTDS()
, que utiliza la función median()
del paquete de estadísticas (aunque es posible que reescribamos esto en algún momento). Todos los demás paquetes enumerados en "Sugerencias" en el archivo DESCRIPCIÓN solo sirven para ilustrar el uso de QDiabetes en ejemplos o viñetas, o al probar el paquete. El factor principal que limita la compatibilidad del paquete con versiones anteriores de R es el método de almacenamiento de datos que CRAN requiere que usemos para el backend del marco de datos de la función getTDS()
. Debido a la huella de memoria de este objeto (≈200 MB), debemos utilizar la compresión XZ para reducir el tamaño total del paquete tanto como sea posible. La compresión XZ se implementó por primera vez en la versión 2.10 de R.
Muchos de los valores predeterminados utilizados en las funciones de predicción de riesgos de este paquete se seleccionaron para que fueran representativos de la población del Reino Unido. Estos valores solo pretenden minimizar la cantidad de escritura necesaria cuando se utilizan las funciones de predicción de riesgos de forma exploratoria. Es poco probable que sean útiles en un entorno de investigación y sería necesario conocer los valores exactos que se deben asignar a todos los parámetros de la función para poder realizar una predicción de riesgo precisa. Por lo tanto, si bien puede obtener predicciones de riesgo de las funciones QDR2013()
y QDR2018A()
especificando únicamente sex
, age
e bmi
, estaría asumiendo que es blanco o falta el origen étnico, la condición de no fumador y una puntuación de privación de Townsend de 0. y la ausencia total de antecedentes/condiciones médicas relevantes y terapias farmacológicas concomitantes. En el caso de QDR2013()
, también se estaría asumiendo que se desea una ventana de riesgo de 10 años.
A continuación se muestran algunos ejemplos muy simples que utilizan el paquete QDiabetes . Tenga en cuenta que, por conveniencia, se puede especificar el IMC [ bmi
] o la altura [ ht
] y el peso [ wt
] en cualquiera de las funciones de predicción de riesgos de este paquete.
Con el fin de hacer la vida un poco más fácil, se ha agregado al paquete una función auxiliar getTDS()
, que utiliza una tabla de búsqueda para obtener puntuaciones de privación de Townsend de códigos postales totales o parciales del Reino Unido.
### Cargar espacio de nombres del paquete ###library(QDiabetes)### Uso simple ###QDR2013(sex = "Female", edad = 35, bmi = 25)# [1] 0.6324508QDR2018A(sex = "Male", edad = 45, IMC = 35)# [1] 9.88593QDR2018B(sexo = "Mujer", edad = 65, bmi = 30, fpg = 6)# [1] 18.43691QDR2018C(sexo = "Masculino", edad = 25, bmi = 40, hba1c = 42)# [1] 8.226301### Fabricación Uso de la función auxiliar getTDS() ###getTDS("OX2 6GG")# [1] 2.022583QDR2013(sexo = "Mujer", edad = 41, altura = 1,65, peso = 60, tds = getTDS("OX3 9DU"))# [1] 0.5004499QDR2018A(sexo = "Hombre", edad = 33, bmi = 26, tds = obtenerTDS("OX3 7LF"))# [1] 0.6472644### Haciendo uso de la vectorización ###getTDS(c("OX3 7LF", "OX2 6NW", "OX2 6GG", "OX1 4AR"))# OX37LF OX26NW OX26GG OX14AR# -1.032394 1.640422 2.022583 2.309777QDR2013(sexo = "Mujer", edad = 35, bmi = seq(20, 40, 5))# 20 25 30 35 40# 0.1801226 0.6324508 1.7885233 3.8983187 6.2964702QDR2018A(sexo = "Mujer", edad = seq(25, 75, 10), bmi = 35)# 25 35 45 55 65 75# 1.085179 2.921454 5.893499 9.082108 10.713717 9.567516QDR2018B(sexo = "Masculino", edad = 65, IMC = 35, fpg = 2:6)# 2 3 4 5 6# 0.9123063 0.5911511 1.8416081 7.8554831 30.8096968QDR2018C(sexo = "Mujer", edad = 80, IMC = 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### Uso del marco de datos ###data(dat_qdr) # Datos de muestra sintéticos## Uso de la base R ##dat_qdr[["riesgo"]] <- with(dat_qdr, QDR2013(sexo = sexo, edad = edad , ht = ht, peso = peso, ethn = ethn, humo = humo, tds = tds, htn = htn, cvd = cvd, ster = ster))## Usando dplyr ##library(dplyr)df_qdr <- as_tibble(dat_qdr)df_qdr <- df_qdr %>% mutar(riesgo = QDR2013(sexo = sexo,edad = edad,ht = ht,wt = wt,ethn = ethn,smoke = smoke,tds = tds,htn = htn,cvd = cvd,ster = ster))## Usando datos.table ##biblioteca(datos.table)dt_qdr <- as.data.table(dat_qdr)dt_qdr[, riesgo := QDR2013(sexo = sexo, edad = edad, ht = ht, wt = wt, ethn = ethn, humo = humo, tds = tds, htn = htn, cvd = cvd, ester = ester)]
Consulte Problemas en el repositorio QDiabetes GitHub.
QRISK3: una implementación R de los algoritmos de predicción de riesgos QRISK3 de ClinRisk.
Este proyecto fue financiado por la Escuela de Investigación de Atención Primaria (SPCR) del Instituto Nacional de Investigación en Salud (NIHR) [número de proyecto: 412]. Las opiniones expresadas son las del autor (es) y no necesariamente las del NIHR o el Departamento de Salud y Atención Social.
1: Hippisley-Cox J, Coupland C, Robson J, Sheikh A y Brindle P. (2009). Predicción del riesgo de diabetes tipo 2 en Inglaterra y Gales: derivación prospectiva y validación de QDScore. BMJ 338 , b880
2: Hippisley-Cox J y Coupland C. (2017). Desarrollo y validación del algoritmo de predicción de riesgo QDiabetes-2018 para estimar el riesgo futuro de diabetes tipo 2: estudio de cohorte. BMJ 359 , j5019